From 90e18338f6383958cd1ce0427de1e6ca0025ac8d Mon Sep 17 00:00:00 2001 From: Manushreshta B L <77065548+M27afk@users.noreply.github.com> Date: Tue, 3 Oct 2023 00:20:12 +0530 Subject: [PATCH 001/194] Change UX to set an asset profile as a benchmark (#2409) * Add checkbox functionality to set / unset benchmark * Update changelog --------- Co-authored-by: Thomas <4159106+dtslvr@users.noreply.github.com> --- CHANGELOG.md | 1 + .../src/app/benchmark/benchmark.controller.ts | 91 ++++++++++++++----- .../src/app/benchmark/benchmark.service.ts | 37 ++++++++ .../asset-profile-dialog.component.ts | 21 ++++- .../asset-profile-dialog.html | 18 ++-- .../asset-profile-dialog.module.ts | 2 + apps/client/src/app/services/data.service.ts | 19 ++++ 7 files changed, 154 insertions(+), 35 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 71e888246..54236f505 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Harmonized the settings icon of the user account page +- Improved the usability to set an asset profile as a benchmark ### Fixed diff --git a/apps/api/src/app/benchmark/benchmark.controller.ts b/apps/api/src/app/benchmark/benchmark.controller.ts index d59a231ff..2230ff42b 100644 --- a/apps/api/src/app/benchmark/benchmark.controller.ts +++ b/apps/api/src/app/benchmark/benchmark.controller.ts @@ -10,6 +10,7 @@ import type { RequestWithUser } from '@ghostfolio/common/types'; import { Body, Controller, + Delete, Get, HttpException, Inject, @@ -32,35 +33,49 @@ export class BenchmarkController { @Inject(REQUEST) private readonly request: RequestWithUser ) {} - @Get() - @UseInterceptors(TransformDataSourceInRequestInterceptor) - @UseInterceptors(TransformDataSourceInResponseInterceptor) - public async getBenchmark(): Promise { - return { - benchmarks: await this.benchmarkService.getBenchmarks() - }; - } - - @Get(':dataSource/:symbol/:startDateString') + @Post() @UseGuards(AuthGuard('jwt')) - @UseInterceptors(TransformDataSourceInRequestInterceptor) - public async getBenchmarkMarketDataBySymbol( - @Param('dataSource') dataSource: DataSource, - @Param('startDateString') startDateString: string, - @Param('symbol') symbol: string - ): Promise { - const startDate = new Date(startDateString); + public async addBenchmark(@Body() { dataSource, symbol }: UniqueAsset) { + if ( + !hasPermission( + this.request.user.permissions, + permissions.accessAdminControl + ) + ) { + throw new HttpException( + getReasonPhrase(StatusCodes.FORBIDDEN), + StatusCodes.FORBIDDEN + ); + } - return this.benchmarkService.getMarketDataBySymbol({ - dataSource, - startDate, - symbol - }); + try { + const benchmark = await this.benchmarkService.addBenchmark({ + dataSource, + symbol + }); + + if (!benchmark) { + throw new HttpException( + getReasonPhrase(StatusCodes.NOT_FOUND), + StatusCodes.NOT_FOUND + ); + } + + return benchmark; + } catch { + throw new HttpException( + getReasonPhrase(StatusCodes.INTERNAL_SERVER_ERROR), + StatusCodes.INTERNAL_SERVER_ERROR + ); + } } - @Post() + @Delete(':dataSource/:symbol') @UseGuards(AuthGuard('jwt')) - public async addBenchmark(@Body() { dataSource, symbol }: UniqueAsset) { + public async deleteBenchmark( + @Param('dataSource') dataSource: DataSource, + @Param('symbol') symbol: string + ) { if ( !hasPermission( this.request.user.permissions, @@ -74,7 +89,7 @@ export class BenchmarkController { } try { - const benchmark = await this.benchmarkService.addBenchmark({ + const benchmark = await this.benchmarkService.deleteBenchmark({ dataSource, symbol }); @@ -94,4 +109,30 @@ export class BenchmarkController { ); } } + + @Get() + @UseInterceptors(TransformDataSourceInRequestInterceptor) + @UseInterceptors(TransformDataSourceInResponseInterceptor) + public async getBenchmark(): Promise { + return { + benchmarks: await this.benchmarkService.getBenchmarks() + }; + } + + @Get(':dataSource/:symbol/:startDateString') + @UseGuards(AuthGuard('jwt')) + @UseInterceptors(TransformDataSourceInRequestInterceptor) + public async getBenchmarkMarketDataBySymbol( + @Param('dataSource') dataSource: DataSource, + @Param('startDateString') startDateString: string, + @Param('symbol') symbol: string + ): Promise { + const startDate = new Date(startDateString); + + return this.benchmarkService.getMarketDataBySymbol({ + dataSource, + startDate, + symbol + }); + } } diff --git a/apps/api/src/app/benchmark/benchmark.service.ts b/apps/api/src/app/benchmark/benchmark.service.ts index 785c2801a..7fe1911a4 100644 --- a/apps/api/src/app/benchmark/benchmark.service.ts +++ b/apps/api/src/app/benchmark/benchmark.service.ts @@ -245,6 +245,43 @@ export class BenchmarkService { }; } + public async deleteBenchmark({ + dataSource, + symbol + }: UniqueAsset): Promise> { + const assetProfile = await this.prismaService.symbolProfile.findFirst({ + where: { + dataSource, + symbol + } + }); + + if (!assetProfile) { + return null; + } + + let benchmarks = + ((await this.propertyService.getByKey( + PROPERTY_BENCHMARKS + )) as BenchmarkProperty[]) ?? []; + + benchmarks = benchmarks.filter(({ symbolProfileId }) => { + return symbolProfileId !== assetProfile.id; + }); + + await this.propertyService.put({ + key: PROPERTY_BENCHMARKS, + value: JSON.stringify(benchmarks) + }); + + return { + dataSource, + symbol, + id: assetProfile.id, + name: assetProfile.name + }; + } + private getMarketCondition(aPerformanceInPercent: number) { return aPerformanceInPercent <= -0.2 ? 'BEAR_MARKET' : 'NEUTRAL_MARKET'; } 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 be1892e91..bef984729 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 @@ -146,9 +146,11 @@ export class AssetProfileDialog implements OnDestroy, OnInit { .postBenchmark({ dataSource, symbol }) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(() => { - setTimeout(() => { - window.location.reload(); - }, 300); + this.dataService.updateInfo(); + + this.isBenchmark = true; + + this.changeDetectorRef.markForCheck(); }); } @@ -185,6 +187,19 @@ export class AssetProfileDialog implements OnDestroy, OnInit { }); } + public onUnsetBenchmark({ dataSource, symbol }: UniqueAsset) { + this.dataService + .deleteBenchmark({ dataSource, symbol }) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(() => { + this.dataService.updateInfo(); + + this.isBenchmark = false; + + this.changeDetectorRef.markForCheck(); + }); + } + public ngOnDestroy() { this.unsubscribeSubject.next(); this.unsubscribeSubject.complete(); 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 be99df7cb..6682d004d 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 @@ -37,13 +37,6 @@ > Gather Profile Data - @@ -151,6 +144,17 @@ +
+
+ Benchmark +
+
Symbol Mapping 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 8672342b0..1911f5a47 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 @@ -3,6 +3,7 @@ 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 { MatCheckboxModule } from '@angular/material/checkbox'; import { MatDialogModule } from '@angular/material/dialog'; import { MatInputModule } from '@angular/material/input'; import { MatMenuModule } from '@angular/material/menu'; @@ -21,6 +22,7 @@ import { AssetProfileDialog } from './asset-profile-dialog.component'; GfPortfolioProportionChartModule, GfValueModule, MatButtonModule, + MatCheckboxModule, MatDialogModule, MatInputModule, MatMenuModule, diff --git a/apps/client/src/app/services/data.service.ts b/apps/client/src/app/services/data.service.ts index 82b4acca0..5cc955af2 100644 --- a/apps/client/src/app/services/data.service.ts +++ b/apps/client/src/app/services/data.service.ts @@ -204,6 +204,10 @@ export class DataService { return this.http.delete(`/api/v1/order/`); } + public deleteBenchmark({ dataSource, symbol }: UniqueAsset) { + return this.http.delete(`/api/v1/benchmark/${dataSource}/${symbol}`); + } + public deleteOrder(aId: string) { return this.http.delete(`/api/v1/order/${aId}`); } @@ -496,4 +500,19 @@ export class DataService { couponCode }); } + + public updateInfo() { + this.http.get('/api/v1/info').subscribe((info) => { + const utmSource = <'ios' | 'trusted-web-activity'>( + window.localStorage.getItem('utm_source') + ); + + info.globalPermissions = filterGlobalPermissions( + info.globalPermissions, + utmSource + ); + + (window as any).info = info; + }); + } } From aa24b5e8c6cf49485c9faf14b976aef9929d7e23 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 3 Oct 2023 18:58:23 +0200 Subject: [PATCH 002/194] Feature/reload platform and tag on change (#2417) * Reload platforms via info * Reload tags via info * Update changelog --- CHANGELOG.md | 2 ++ .../components/admin-platform/admin-platform.component.ts | 4 ++++ .../src/app/components/admin-tag/admin-tag.component.ts | 5 +++++ 3 files changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 54236f505..1f0b4ce17 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Harmonized the settings icon of the user account page - Improved the usability to set an asset profile as a benchmark +- Reload platforms after making a change in the admin control panel +- Reload tags after making a change in the admin control panel ### Fixed diff --git a/apps/client/src/app/components/admin-platform/admin-platform.component.ts b/apps/client/src/app/components/admin-platform/admin-platform.component.ts index c8fce18ad..ffc5810b3 100644 --- a/apps/client/src/app/components/admin-platform/admin-platform.component.ts +++ b/apps/client/src/app/components/admin-platform/admin-platform.component.ts @@ -13,6 +13,7 @@ import { ActivatedRoute, Router } from '@angular/router'; import { CreatePlatformDto } from '@ghostfolio/api/app/platform/create-platform.dto'; import { UpdatePlatformDto } from '@ghostfolio/api/app/platform/update-platform.dto'; import { AdminService } from '@ghostfolio/client/services/admin.service'; +import { DataService } from '@ghostfolio/client/services/data.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; import { Platform } from '@prisma/client'; import { get } from 'lodash'; @@ -40,6 +41,7 @@ export class AdminPlatformComponent implements OnInit, OnDestroy { public constructor( private adminService: AdminService, private changeDetectorRef: ChangeDetectorRef, + private dataService: DataService, private deviceService: DeviceDetectorService, private dialog: MatDialog, private route: ActivatedRoute, @@ -119,6 +121,8 @@ export class AdminPlatformComponent implements OnInit, OnDestroy { this.dataSource.sort = this.sort; this.dataSource.sortingDataAccessor = get; + this.dataService.updateInfo(); + this.changeDetectorRef.markForCheck(); }); } diff --git a/apps/client/src/app/components/admin-tag/admin-tag.component.ts b/apps/client/src/app/components/admin-tag/admin-tag.component.ts index 48eb25554..e0dce2477 100644 --- a/apps/client/src/app/components/admin-tag/admin-tag.component.ts +++ b/apps/client/src/app/components/admin-tag/admin-tag.component.ts @@ -13,6 +13,7 @@ import { ActivatedRoute, Router } from '@angular/router'; import { CreateTagDto } from '@ghostfolio/api/app/tag/create-tag.dto'; import { UpdateTagDto } from '@ghostfolio/api/app/tag/update-tag.dto'; import { AdminService } from '@ghostfolio/client/services/admin.service'; +import { DataService } from '@ghostfolio/client/services/data.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; import { Tag } from '@prisma/client'; import { get } from 'lodash'; @@ -40,6 +41,7 @@ export class AdminTagComponent implements OnInit, OnDestroy { public constructor( private adminService: AdminService, private changeDetectorRef: ChangeDetectorRef, + private dataService: DataService, private deviceService: DeviceDetectorService, private dialog: MatDialog, private route: ActivatedRoute, @@ -114,10 +116,13 @@ export class AdminTagComponent implements OnInit, OnDestroy { .pipe(takeUntil(this.unsubscribeSubject)) .subscribe((tags) => { this.tags = tags; + this.dataSource = new MatTableDataSource(this.tags); this.dataSource.sort = this.sort; this.dataSource.sortingDataAccessor = get; + this.dataService.updateInfo(); + this.changeDetectorRef.markForCheck(); }); } From 4fb88859b28d18b3dae20dce5505ecd4937bbd69 Mon Sep 17 00:00:00 2001 From: Sanjeev Sharma <29539278+thesanjeevsharma@users.noreply.github.com> Date: Tue, 3 Oct 2023 23:04:04 +0530 Subject: [PATCH 003/194] Improve form in account dialog (#2408) * Improve form in account dialog * Update changelog --- CHANGELOG.md | 1 + .../api/src/app/account/create-account.dto.ts | 2 +- .../api/src/app/account/update-account.dto.ts | 2 +- ...eate-or-update-account-dialog.component.ts | 37 ++++++++++++++++- .../create-or-update-account-dialog.html | 40 +++++++------------ 5 files changed, 54 insertions(+), 28 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f0b4ce17..5638b923c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- Supported enter key press to submit the form of the create or update account dialog - Added the version to the admin control panel - Added pagination parameters (`skip`, `take`) to the endpoint `GET api/v1/order` diff --git a/apps/api/src/app/account/create-account.dto.ts b/apps/api/src/app/account/create-account.dto.ts index eb24d959a..fff982ecf 100644 --- a/apps/api/src/app/account/create-account.dto.ts +++ b/apps/api/src/app/account/create-account.dto.ts @@ -12,7 +12,7 @@ import { isString } from 'lodash'; export class CreateAccountDto { @IsOptional() @IsString() - accountType: AccountType; + accountType?: AccountType; @IsNumber() balance: number; diff --git a/apps/api/src/app/account/update-account.dto.ts b/apps/api/src/app/account/update-account.dto.ts index a91914482..7ab829454 100644 --- a/apps/api/src/app/account/update-account.dto.ts +++ b/apps/api/src/app/account/update-account.dto.ts @@ -12,7 +12,7 @@ import { isString } from 'lodash'; export class UpdateAccountDto { @IsOptional() @IsString() - accountType: AccountType; + accountType?: AccountType; @IsNumber() balance: number; 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 f0178f2f5..3babc14bc 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 @@ -4,7 +4,10 @@ import { Inject, OnDestroy } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; 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 { Subject } from 'rxjs'; @@ -18,15 +21,17 @@ import { CreateOrUpdateAccountDialogParams } from './interfaces/interfaces'; templateUrl: 'create-or-update-account-dialog.html' }) export class CreateOrUpdateAccountDialog implements OnDestroy { + public accountForm: FormGroup; public currencies: string[] = []; public platforms: { id: string; name: string }[]; private unsubscribeSubject = new Subject(); public constructor( + @Inject(MAT_DIALOG_DATA) public data: CreateOrUpdateAccountDialogParams, private dataService: DataService, public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data: CreateOrUpdateAccountDialogParams + private formBuilder: FormBuilder ) {} ngOnInit() { @@ -34,12 +39,42 @@ export class CreateOrUpdateAccountDialog implements OnDestroy { this.currencies = currencies; this.platforms = platforms; + + this.accountForm = this.formBuilder.group({ + accountId: [{ disabled: true, value: this.data.account.id }], + balance: [this.data.account.balance, Validators.required], + comment: [this.data.account.comment], + currency: [this.data.account.currency, Validators.required], + isExcluded: [this.data.account.isExcluded], + name: [this.data.account.name, Validators.required], + platformId: [this.data.account.platformId] + }); } public onCancel() { this.dialogRef.close(); } + public onSubmit() { + const account: CreateAccountDto | UpdateAccountDto = { + balance: this.accountForm.controls['balance'].value, + comment: this.accountForm.controls['comment'].value, + currency: this.accountForm.controls['currency'].value, + id: this.accountForm.controls['accountId'].value, + isExcluded: this.accountForm.controls['isExcluded'].value, + name: this.accountForm.controls['name'].value, + platformId: this.accountForm.controls['platformId'].value + }; + + if (this.data.account.id) { + (account as UpdateAccountDto).id = this.data.account.id; + } else { + delete (account as CreateAccountDto).id; + } + + this.dialogRef.close({ account }); + } + public ngOnDestroy() { this.unsubscribeSubject.next(); this.unsubscribeSubject.complete(); diff --git a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html index 7b6f399a0..69972c7db 100644 --- a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html +++ b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1,17 +1,22 @@ -
+

Update account

Add account

Name - +
Currency - + {{ currency }} @@ -21,20 +26,14 @@
Cash Balance - + {{ data.account.currency }}
Platform - + {{ platform.name }}
- Exclude from Analysis
Account ID - +
@@ -80,8 +70,8 @@ From 42a54263f9ee8b3501a0cf8aad5816aa77bd9313 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 3 Oct 2023 20:10:29 +0200 Subject: [PATCH 004/194] Release 2.8.0 (#2420) --- CHANGELOG.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5638b923c..697f51601 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ 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.8.0 - 2023-10-03 ### Added diff --git a/package.json b/package.json index f303e5f51..2e2f81186 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.7.0", + "version": "2.8.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From 692309988c3d08ff38dc9afe10fb4e05ba723a02 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 4 Oct 2023 08:48:50 +0200 Subject: [PATCH 005/194] Add Prisma Studio (#2415) --- DEVELOPMENT.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index b73831d98..a950e5672 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -18,6 +18,12 @@ ### Prisma +#### Access database via GUI + +Run `yarn database:gui` + +https://www.prisma.io/studio + #### Synchronize schema with database for prototyping Run `yarn database:push` From d9a6c22e1e906f1c62f7908f7ffb8832c2209a8d Mon Sep 17 00:00:00 2001 From: Siddharth Singh <63333707+Siddharth9890@users.noreply.github.com> Date: Wed, 4 Oct 2023 19:45:08 +0530 Subject: [PATCH 006/194] Add application version to admin endpoint (#2423) * Add application version to admin endpoint * Update changelog --- CHANGELOG.md | 8 +++++++- apps/api/src/app/admin/admin.service.ts | 4 +++- libs/common/src/lib/interfaces/admin-data.interface.ts | 1 + 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 697f51601..49419da3c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,12 +5,18 @@ 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 + +### Added + +- Added the application version to the endpoint `GET api/v1/admin` + ## 2.8.0 - 2023-10-03 ### Added - Supported enter key press to submit the form of the create or update account dialog -- Added the version to the admin control panel +- Added the application version to the admin control panel - Added pagination parameters (`skip`, `take`) to the endpoint `GET api/v1/order` ### Changed diff --git a/apps/api/src/app/admin/admin.service.ts b/apps/api/src/app/admin/admin.service.ts index a45fbe634..dd9e3f9ce 100644 --- a/apps/api/src/app/admin/admin.service.ts +++ b/apps/api/src/app/admin/admin.service.ts @@ -1,4 +1,5 @@ import { SubscriptionService } from '@ghostfolio/api/app/subscription/subscription.service'; +import { environment } from '@ghostfolio/api/environments/environment'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { DataProviderService } from '@ghostfolio/api/services/data-provider/data-provider.service'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; @@ -97,7 +98,8 @@ export class AdminService { settings: await this.propertyService.get(), transactionCount: await this.prismaService.order.count(), userCount: await this.prismaService.user.count(), - users: await this.getUsersWithAnalytics() + users: await this.getUsersWithAnalytics(), + version: environment.version }; } diff --git a/libs/common/src/lib/interfaces/admin-data.interface.ts b/libs/common/src/lib/interfaces/admin-data.interface.ts index b66676346..68e1cbca4 100644 --- a/libs/common/src/lib/interfaces/admin-data.interface.ts +++ b/libs/common/src/lib/interfaces/admin-data.interface.ts @@ -12,4 +12,5 @@ export interface AdminData { lastActivity: Date; transactionCount: number; }[]; + version: string; } From 10940214a508835925bea9514ea1fda1ca3fe734 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 5 Oct 2023 20:27:39 +0200 Subject: [PATCH 007/194] Update OSS Friends (#2431) --- apps/client/src/assets/oss-friends.json | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/apps/client/src/assets/oss-friends.json b/apps/client/src/assets/oss-friends.json index 24c2d8586..d7d8e1506 100644 --- a/apps/client/src/assets/oss-friends.json +++ b/apps/client/src/assets/oss-friends.json @@ -1,11 +1,6 @@ { - "createdAt": "2023-09-25T08:15:38.055Z", + "createdAt": "2023-10-05T00:00:00.000Z", "data": [ - { - "name": "Appsmith", - "description": "Build build custom software on top of your data.", - "href": "https://www.appsmith.com" - }, { "name": "BoxyHQ", "description": "BoxyHQ’s suite of APIs for security and privacy helps engineering teams build and ship compliant cloud applications faster.", @@ -66,11 +61,6 @@ "description": "Mockoon is the easiest and quickest way to design and run mock REST APIs.", "href": "https://mockoon.com" }, - { - "name": "Novu", - "description": "The open-source notification infrastructure for developers. Simple components and APIs for managing all communication channels in one place.", - "href": "https://novu.co" - }, { "name": "OpenBB", "description": "Democratizing investment research through an open source financial ecosystem. The OpenBB Terminal allows everyone to perform investment research, from everywhere.", From 4af76f6f6d050feb18f837afb08e089beda11597 Mon Sep 17 00:00:00 2001 From: Vlad Prodan <46872670+virus231@users.noreply.github.com> Date: Thu, 5 Oct 2023 20:29:34 +0200 Subject: [PATCH 008/194] Fix hasNotDefinedValuesInObject() in object.helper.ts (#2421) --- apps/api/src/helper/object.helper.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/src/helper/object.helper.ts b/apps/api/src/helper/object.helper.ts index 50a4f2b12..2f0399fb8 100644 --- a/apps/api/src/helper/object.helper.ts +++ b/apps/api/src/helper/object.helper.ts @@ -3,7 +3,7 @@ import { cloneDeep, isArray, isObject } from 'lodash'; export function hasNotDefinedValuesInObject(aObject: Object): boolean { for (const key in aObject) { - if (aObject[key] === null || aObject[key] === null) { + if (aObject[key] === null || aObject[key] === undefined) { return true; } else if (isObject(aObject[key])) { return hasNotDefinedValuesInObject(aObject[key]); From 8ad64924779dbef9e5e087f39d56503c8f2f7873 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 5 Oct 2023 20:31:00 +0200 Subject: [PATCH 009/194] Feature/various improvements in client (#2434) * Various improvements * Update changelog --- CHANGELOG.md | 4 ++++ apps/client/src/app/app.module.ts | 5 +++-- .../src/app/components/admin-overview/admin-overview.html | 4 ++-- .../src/app/components/header/header.component.html | 2 +- .../src/app/components/home-market/home-market.html | 4 ++-- .../portfolio-performance/portfolio-performance.module.ts | 5 +++-- .../position-detail-dialog/position-detail-dialog.html | 8 ++++---- .../import-activities-dialog.html | 2 +- apps/client/src/app/pages/public/public-page.html | 2 +- .../app/pages/user-account/user-account-page.module.ts | 5 +++-- 10 files changed, 24 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 49419da3c..41fa38bc8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added the application version to the endpoint `GET api/v1/admin` +### Fixed + +- Fixed the style of the active features page in the navigation on desktop + ## 2.8.0 - 2023-10-03 ### Added diff --git a/apps/client/src/app/app.module.ts b/apps/client/src/app/app.module.ts index a5f0d755c..608ba0100 100644 --- a/apps/client/src/app/app.module.ts +++ b/apps/client/src/app/app.module.ts @@ -1,6 +1,6 @@ import { Platform } from '@angular/cdk/platform'; import { HttpClientModule } from '@angular/common/http'; -import { NgModule } from '@angular/core'; +import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatAutocompleteModule } from '@angular/material/autocomplete'; import { MatChipsModule } from '@angular/material/chips'; import { @@ -35,6 +35,7 @@ export function NgxStripeFactory(): string { } @NgModule({ + bootstrap: [AppComponent], declarations: [AppComponent], imports: [ AppRoutingModule, @@ -72,6 +73,6 @@ export function NgxStripeFactory(): string { useFactory: NgxStripeFactory } ], - bootstrap: [AppComponent] + schemas: [CUSTOM_ELEMENTS_SCHEMA] }) export class AppModule {} diff --git a/apps/client/src/app/components/admin-overview/admin-overview.html b/apps/client/src/app/components/admin-overview/admin-overview.html index 2739547b5..e54f8f27b 100644 --- a/apps/client/src/app/components/admin-overview/admin-overview.html +++ b/apps/client/src/app/components/admin-overview/admin-overview.html @@ -11,8 +11,8 @@
User Count
@@ -21,8 +21,8 @@
Activity Count
diff --git a/apps/client/src/app/components/header/header.component.html b/apps/client/src/app/components/header/header.component.html index 2c56cb742..a2c69245c 100644 --- a/apps/client/src/app/components/header/header.component.html +++ b/apps/client/src/app/components/header/header.component.html @@ -272,7 +272,7 @@ mat-flat-button [ngClass]="{ 'font-weight-bold': currentRoute === routeFeatures, - 'text-decoration-underline': currentRoute === routeFeatuers + 'text-decoration-underline': currentRoute === routeFeatures }" [routerLink]="routerLinkFeatures" >Features
Sectors
@@ -225,11 +225,11 @@
Countries
diff --git a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html index 06cadad8e..eab62642a 100644 --- a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html +++ b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html @@ -8,7 +8,7 @@
diff --git a/apps/client/src/app/pages/user-account/user-account-page.module.ts b/apps/client/src/app/pages/user-account/user-account-page.module.ts index 3c6670af4..5ec767170 100644 --- a/apps/client/src/app/pages/user-account/user-account-page.module.ts +++ b/apps/client/src/app/pages/user-account/user-account-page.module.ts @@ -1,5 +1,5 @@ import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; +import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatTabsModule } from '@angular/material/tabs'; import { GfUserAccountAccessModule } from '@ghostfolio/client/components/user-account-access/user-account-access.module'; import { GfUserAccountMembershipModule } from '@ghostfolio/client/components/user-account-membership/user-account-membership.module'; @@ -17,6 +17,7 @@ import { UserAccountPageComponent } from './user-account-page.component'; GfUserAccountSettingsModule, MatTabsModule, UserAccountPageRoutingModule - ] + ], + schemas: [CUSTOM_ELEMENTS_SCHEMA] }) export class UserAccountPageModule {} From 727340748bca074238e207e1b3a2688df396c0d2 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 5 Oct 2023 20:40:31 +0200 Subject: [PATCH 010/194] Clean up imports (#2411) --- .../asset-profile-dialog/asset-profile-dialog.component.ts | 1 - apps/client/src/app/services/data.service.ts | 1 - 2 files changed, 2 deletions(-) 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 bef984729..792025e9b 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 @@ -13,7 +13,6 @@ import { AdminService } from '@ghostfolio/client/services/admin.service'; import { DataService } from '@ghostfolio/client/services/data.service'; import { AdminMarketDataDetails, - ScraperConfiguration, UniqueAsset } from '@ghostfolio/common/interfaces'; import { translate } from '@ghostfolio/ui/i18n'; diff --git a/apps/client/src/app/services/data.service.ts b/apps/client/src/app/services/data.service.ts index 5cc955af2..62845eda1 100644 --- a/apps/client/src/app/services/data.service.ts +++ b/apps/client/src/app/services/data.service.ts @@ -36,7 +36,6 @@ import { } from '@ghostfolio/common/interfaces'; import { filterGlobalPermissions } from '@ghostfolio/common/permissions'; import { AccountWithValue, DateRange, GroupBy } from '@ghostfolio/common/types'; -import { translate } from '@ghostfolio/ui/i18n'; import { DataSource, Order as OrderModel } from '@prisma/client'; import { format, parseISO } from 'date-fns'; import { cloneDeep, groupBy, isNumber } from 'lodash'; From 25112a450b1b9c1653f43c198e7bee23b4745adb Mon Sep 17 00:00:00 2001 From: Arshad Jamal Date: Fri, 6 Oct 2023 00:12:35 +0530 Subject: [PATCH 011/194] Add support for comment in csv import (#2416) * Add support for comment in csv import (activities) * Update changelog --- CHANGELOG.md | 1 + .../app/services/import-activities.service.ts | 16 ++++++++++++++++ test/import/ok.csv | 4 ++-- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 41fa38bc8..d03655ff8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- Added support for notes in the activities import - Added the application version to the endpoint `GET api/v1/admin` ### Fixed diff --git a/apps/client/src/app/services/import-activities.service.ts b/apps/client/src/app/services/import-activities.service.ts index 808081bea..0a58e3cdd 100644 --- a/apps/client/src/app/services/import-activities.service.ts +++ b/apps/client/src/app/services/import-activities.service.ts @@ -15,6 +15,7 @@ import { catchError } from 'rxjs/operators'; }) export class ImportActivitiesService { private static ACCOUNT_KEYS = ['account', 'accountid']; + private static COMMENT_KEYS = ['comment', 'note']; private static CURRENCY_KEYS = ['ccy', 'currency', 'currencyprimary']; private static DATA_SOURCE_KEYS = ['datasource']; private static DATE_KEYS = ['date', 'tradedate']; @@ -52,6 +53,7 @@ export class ImportActivitiesService { for (const [index, item] of content.entries()) { activities.push({ accountId: this.parseAccount({ item, userAccounts }), + comment: this.parseComment({ item }), currency: this.parseCurrency({ content, index, item }), dataSource: this.parseDataSource({ item }), date: this.parseDate({ content, index, item }), @@ -122,6 +124,7 @@ export class ImportActivitiesService { private convertToCreateOrderDto({ accountId, + comment, date, fee, quantity, @@ -132,6 +135,7 @@ export class ImportActivitiesService { }: Activity): CreateOrderDto { return { accountId, + comment, fee, quantity, type, @@ -174,6 +178,18 @@ export class ImportActivitiesService { return undefined; } + private parseComment({ item }: { item: any }) { + item = this.lowercaseKeys(item); + + for (const key of ImportActivitiesService.COMMENT_KEYS) { + if (item[key]) { + return item[key]; + } + } + + return undefined; + } + private parseCurrency({ content, index, diff --git a/test/import/ok.csv b/test/import/ok.csv index 732ab4699..9f1f1c768 100644 --- a/test/import/ok.csv +++ b/test/import/ok.csv @@ -1,5 +1,5 @@ -Date,Code,Currency,Price,Quantity,Action,Fee -16-09-2021,MSFT,USD,298.580,5,buy,19.00 +Date,Code,Currency,Price,Quantity,Action,Fee,Note +16-09-2021,MSFT,USD,298.580,5,buy,19.00,My first order 🤓 17/11/2021,MSFT,USD,0.62,5,dividend,0.00 01.01.2022,Penthouse Apartment,USD,500000.0,1,item,0.00 20500606,MSFT,USD,0.00,0,buy,0.00 From 02b433eb1e8a97d4df7210800a27039a98df33cd Mon Sep 17 00:00:00 2001 From: Anirudh Sudhir <137381184+anirudhsudhir@users.noreply.github.com> Date: Fri, 6 Oct 2023 00:32:35 +0530 Subject: [PATCH 012/194] Prevent empty form submission in account dialog (#2428) * Prevent empty form submission in account dialog --- .../create-or-update-account-dialog.html | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html index 69972c7db..2d068dde1 100644 --- a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html +++ b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -10,7 +10,11 @@
Name - +
@@ -26,7 +30,12 @@
Cash Balance - + {{ data.account.currency }}
@@ -66,7 +75,7 @@
- + + +
+ +
+ + diff --git a/libs/ui/src/lib/carousel/carousel.component.scss b/libs/ui/src/lib/carousel/carousel.component.scss new file mode 100644 index 000000000..38da7c100 --- /dev/null +++ b/libs/ui/src/lib/carousel/carousel.component.scss @@ -0,0 +1,34 @@ +:host { + display: block; + position: relative; + + ::ng-deep { + [gf-carousel-item] { + flex-shrink: 0; + width: 100%; + } + } + + button { + top: 50%; + transform: translateY(-50%); + + &.carousel-nav-prev { + left: -50px; + } + + &.carousel-nav-next { + right: -50px; + } + } + + .carousel-content { + flex-direction: row; + outline: none; + transition: transform 0.5s ease-in-out; + + .animations-disabled & { + transition: none; + } + } +} diff --git a/libs/ui/src/lib/carousel/carousel.component.ts b/libs/ui/src/lib/carousel/carousel.component.ts new file mode 100644 index 000000000..a0eb0f8a1 --- /dev/null +++ b/libs/ui/src/lib/carousel/carousel.component.ts @@ -0,0 +1,147 @@ +import { FocusKeyManager } from '@angular/cdk/a11y'; +import { LEFT_ARROW, RIGHT_ARROW, TAB } from '@angular/cdk/keycodes'; +import { + AfterContentInit, + ChangeDetectionStrategy, + Component, + ContentChildren, + ElementRef, + HostBinding, + Inject, + Input, + Optional, + QueryList, + ViewChild +} from '@angular/core'; +import { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations'; + +import { CarouselItem } from './carousel-item.directive'; + +@Component({ + changeDetection: ChangeDetectionStrategy.OnPush, + selector: 'gf-carousel', + styleUrls: ['./carousel.component.scss'], + templateUrl: './carousel.component.html' +}) +export class CarouselComponent implements AfterContentInit { + @ContentChildren(CarouselItem) public items!: QueryList; + + @HostBinding('class.animations-disabled') + public readonly animationsDisabled: boolean; + + @Input('aria-label') public ariaLabel: string | undefined; + + @ViewChild('list') public list!: ElementRef; + + public showPrevArrow = false; + public showNextArrow = true; + + private index = 0; + private keyManager!: FocusKeyManager; + private position = 0; + + public constructor( + @Optional() @Inject(ANIMATION_MODULE_TYPE) animationsModule?: string + ) { + this.animationsDisabled = animationsModule === 'NoopAnimations'; + } + + public ngAfterContentInit() { + this.keyManager = new FocusKeyManager(this.items); + } + + public next() { + for (let i = this.index; i < this.items.length; i++) { + if (this.isOutOfView(i)) { + this.index = i; + this.scrollToActiveItem(); + break; + } + } + } + + public onKeydown({ keyCode }: KeyboardEvent) { + const manager = this.keyManager; + const previousActiveIndex = manager.activeItemIndex; + + if (keyCode === LEFT_ARROW) { + manager.setPreviousItemActive(); + } else if (keyCode === RIGHT_ARROW) { + manager.setNextItemActive(); + } else if (keyCode === TAB && !manager.activeItem) { + manager.setFirstItemActive(); + } + + if ( + manager.activeItemIndex != null && + manager.activeItemIndex !== previousActiveIndex + ) { + this.index = manager.activeItemIndex; + this.updateItemTabIndices(); + + if (this.isOutOfView(this.index)) { + this.scrollToActiveItem(); + } + } + } + + public previous() { + for (let i = this.index; i > -1; i--) { + if (this.isOutOfView(i)) { + this.index = i; + this.scrollToActiveItem(); + break; + } + } + } + + private isOutOfView(index: number, side?: 'start' | 'end') { + const { offsetWidth, offsetLeft } = + this.items.toArray()[index].element.nativeElement; + + if ((!side || side === 'start') && offsetLeft - this.position < 0) { + return true; + } + + return ( + (!side || side === 'end') && + offsetWidth + offsetLeft - this.position > + this.list.nativeElement.clientWidth + ); + } + + private scrollToActiveItem() { + if (!this.isOutOfView(this.index)) { + return; + } + + const itemsArray = this.items.toArray(); + let targetItemIndex = this.index; + + if (this.index > 0 && !this.isOutOfView(this.index - 1)) { + targetItemIndex = + itemsArray.findIndex((_, i) => !this.isOutOfView(i)) + 1; + } + + this.position = + itemsArray[targetItemIndex].element.nativeElement.offsetLeft; + this.list.nativeElement.style.transform = `translateX(-${this.position}px)`; + this.showPrevArrow = this.index > 0; + this.showNextArrow = false; + + for (let i = itemsArray.length - 1; i > -1; i--) { + if (this.isOutOfView(i, 'end')) { + this.showNextArrow = true; + break; + } + } + } + + private updateItemTabIndices() { + this.items.forEach((item: CarouselItem) => { + if (this.keyManager != null) { + item.tabindex = item === this.keyManager.activeItem ? '0' : '-1'; + } + }); + } +} diff --git a/libs/ui/src/lib/carousel/carousel.module.ts b/libs/ui/src/lib/carousel/carousel.module.ts new file mode 100644 index 000000000..4e43f23b0 --- /dev/null +++ b/libs/ui/src/lib/carousel/carousel.module.ts @@ -0,0 +1,14 @@ +import { CommonModule } from '@angular/common'; +import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; + +import { CarouselItem } from './carousel-item.directive'; +import { CarouselComponent } from './carousel.component'; + +@NgModule({ + declarations: [CarouselComponent, CarouselItem], + exports: [CarouselComponent, CarouselItem], + imports: [CommonModule, MatButtonModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA] +}) +export class GfCarouselModule {} diff --git a/libs/ui/src/lib/carousel/index.ts b/libs/ui/src/lib/carousel/index.ts new file mode 100644 index 000000000..2e039a80b --- /dev/null +++ b/libs/ui/src/lib/carousel/index.ts @@ -0,0 +1 @@ +export * from './carousel.module'; From 08d696ce336b14d73f0e4fb90c793fe36e396f77 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 7 Oct 2023 08:44:51 +0200 Subject: [PATCH 014/194] Align ok.json with ok.csv (#2439) --- test/import/ok.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/import/ok.json b/test/import/ok.json index e488c4dc4..8803c9d08 100644 --- a/test/import/ok.json +++ b/test/import/ok.json @@ -52,7 +52,7 @@ }, { "accountId": "b2d3fe1d-d6a8-41a3-be39-07ef5e9480f0", - "comment": "My first order", + "comment": "My first order 🤓", "fee": 19, "quantity": 5, "type": "BUY", From fda4e0ea7d85ea196e7bfe939b24506e1c437251 Mon Sep 17 00:00:00 2001 From: Akshay Wadatkar Date: Sat, 7 Oct 2023 12:41:32 +0530 Subject: [PATCH 015/194] Use application version from API endpoint in Admin Control panel (#2427) * Use application version from API endpoint --------- Co-authored-by: Thomas <4159106+dtslvr@users.noreply.github.com> --- .../admin-overview.component.ts | 23 +++++++++++-------- .../admin-overview/admin-overview.html | 4 +++- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/apps/client/src/app/components/admin-overview/admin-overview.component.ts b/apps/client/src/app/components/admin-overview/admin-overview.component.ts index 2ca3f0724..b1e91dfc9 100644 --- a/apps/client/src/app/components/admin-overview/admin-overview.component.ts +++ b/apps/client/src/app/components/admin-overview/admin-overview.component.ts @@ -43,7 +43,7 @@ export class AdminOverviewComponent implements OnDestroy, OnInit { public transactionCount: number; public userCount: number; public user: User; - public version = environment.version; + public version: string; private unsubscribeSubject = new Subject(); @@ -204,15 +204,18 @@ export class AdminOverviewComponent implements OnDestroy, OnInit { this.adminService .fetchAdminData() .pipe(takeUntil(this.unsubscribeSubject)) - .subscribe(({ exchangeRates, settings, transactionCount, userCount }) => { - this.coupons = (settings[PROPERTY_COUPONS] as Coupon[]) ?? []; - this.customCurrencies = settings[PROPERTY_CURRENCIES] as string[]; - this.exchangeRates = exchangeRates; - this.transactionCount = transactionCount; - this.userCount = userCount; - - this.changeDetectorRef.markForCheck(); - }); + .subscribe( + ({ exchangeRates, settings, transactionCount, userCount, version }) => { + this.coupons = (settings[PROPERTY_COUPONS] as Coupon[]) ?? []; + this.customCurrencies = settings[PROPERTY_CURRENCIES] as string[]; + this.exchangeRates = exchangeRates; + this.transactionCount = transactionCount; + this.userCount = userCount; + this.version = version; + + this.changeDetectorRef.markForCheck(); + } + ); } private generateCouponCode(aLength: number) { diff --git a/apps/client/src/app/components/admin-overview/admin-overview.html b/apps/client/src/app/components/admin-overview/admin-overview.html index e54f8f27b..47f27dd40 100644 --- a/apps/client/src/app/components/admin-overview/admin-overview.html +++ b/apps/client/src/app/components/admin-overview/admin-overview.html @@ -5,7 +5,9 @@
Version
-
{{ version }}
+
+ +
User Count
From d40bc5070ac3a87447cbd3c2df4ca2459b637734 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 7 Oct 2023 09:15:54 +0200 Subject: [PATCH 016/194] Feature/remove permission to markets overview on home page (#2441) * Remove show condition for markets overview * Update changelog --- CHANGELOG.md | 4 ++++ .../app/components/home-market/home-market.html | 2 +- .../src/app/pages/home/home-page.component.ts | 14 +------------- 3 files changed, 6 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 40c7e843e..17ff05e89 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added the application version to the endpoint `GET api/v1/admin` - Introduced a carousel component for the testimonial section on the landing page +### Changed + +- Displayed the link to the markets overview on the home page without any permission + ### Fixed - Fixed the style of the active features page in the navigation on desktop diff --git a/apps/client/src/app/components/home-market/home-market.html b/apps/client/src/app/components/home-market/home-market.html index 43f560d85..7ce07b6e9 100644 --- a/apps/client/src/app/components/home-market/home-market.html +++ b/apps/client/src/app/components/home-market/home-market.html @@ -1,6 +1,6 @@

Markets

-
+
Last {{ numberOfDays }} Days diff --git a/apps/client/src/app/pages/home/home-page.component.ts b/apps/client/src/app/pages/home/home-page.component.ts index a39a371c4..fea8e9ac3 100644 --- a/apps/client/src/app/pages/home/home-page.component.ts +++ b/apps/client/src/app/pages/home/home-page.component.ts @@ -1,8 +1,6 @@ import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; -import { DataService } from '@ghostfolio/client/services/data.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; import { TabConfiguration, User } from '@ghostfolio/common/interfaces'; -import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @@ -15,7 +13,6 @@ import { takeUntil } from 'rxjs/operators'; }) export class HomePageComponent implements OnDestroy, OnInit { public deviceType: string; - public hasPermissionToAccessFearAndGreedIndex: boolean; public tabs: TabConfiguration[] = []; public user: User; @@ -23,17 +20,9 @@ export class HomePageComponent implements OnDestroy, OnInit { public constructor( private changeDetectorRef: ChangeDetectorRef, - private dataService: DataService, private deviceService: DeviceDetectorService, private userService: UserService ) { - const { globalPermissions } = this.dataService.fetchInfo(); - - this.hasPermissionToAccessFearAndGreedIndex = hasPermission( - globalPermissions, - permissions.enableFearAndGreedIndex - ); - this.userService.stateChanged .pipe(takeUntil(this.unsubscribeSubject)) .subscribe((state) => { @@ -57,8 +46,7 @@ export class HomePageComponent implements OnDestroy, OnInit { { iconName: 'newspaper-outline', label: $localize`Markets`, - path: ['/home', 'market'], - showCondition: this.hasPermissionToAccessFearAndGreedIndex + path: ['/home', 'market'] } ]; this.user = state.user; From e60fe48fdd7ef38bdca6f18a6bd75d798180f3c2 Mon Sep 17 00:00:00 2001 From: Aldrin <53973174+Dhoni77@users.noreply.github.com> Date: Sat, 7 Oct 2023 18:16:13 +0530 Subject: [PATCH 017/194] Add dialog for cash transfer between accounts (#2433) * Add dialog for cash transfer between accounts --------- Co-authored-by: Thomas <4159106+dtslvr@users.noreply.github.com> --- .../src/app/account/transfer-balance.dto.ts | 12 ++++ .../accounts-table.component.html | 11 +++ .../accounts-table.component.ts | 5 ++ .../pages/accounts/accounts-page.component.ts | 36 ++++++++++ .../src/app/pages/accounts/accounts-page.html | 1 + .../pages/accounts/accounts-page.module.ts | 2 + .../transfer-balance/interfaces/interfaces.ts | 5 ++ .../transfer-balance-dialog.component.ts | 69 +++++++++++++++++++ .../transfer-balance-dialog.html | 53 ++++++++++++++ .../transfer-balance-dialog.module.ts | 24 +++++++ .../transfer-balance-dialog.scss | 7 ++ 11 files changed, 225 insertions(+) create mode 100644 apps/api/src/app/account/transfer-balance.dto.ts create mode 100644 apps/client/src/app/pages/accounts/transfer-balance/interfaces/interfaces.ts create mode 100644 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.component.ts create mode 100644 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html create mode 100644 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.module.ts create mode 100644 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.scss diff --git a/apps/api/src/app/account/transfer-balance.dto.ts b/apps/api/src/app/account/transfer-balance.dto.ts new file mode 100644 index 000000000..fb602033e --- /dev/null +++ b/apps/api/src/app/account/transfer-balance.dto.ts @@ -0,0 +1,12 @@ +import { IsNumber, IsString } from 'class-validator'; + +export class TransferBalanceDto { + @IsString() + accountIdFrom: string; + + @IsString() + accountIdTo: string; + + @IsNumber() + balance: number; +} diff --git a/apps/client/src/app/components/accounts-table/accounts-table.component.html b/apps/client/src/app/components/accounts-table/accounts-table.component.html index d3ece8977..664694735 100644 --- a/apps/client/src/app/components/accounts-table/accounts-table.component.html +++ b/apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -1,3 +1,14 @@ +
+ +
+
(); @Output() accountToUpdate = new EventEmitter(); + @Output() transferBalance = new EventEmitter(); @ViewChild(MatSort) sort: MatSort; @@ -97,6 +98,10 @@ export class AccountsTableComponent implements OnChanges, OnDestroy, OnInit { alert(aComment); } + public onTransferBalance() { + this.transferBalance.emit(); + } + public onUpdateAccount(aAccount: AccountModel) { this.accountToUpdate.emit(aAccount); } diff --git a/apps/client/src/app/pages/accounts/accounts-page.component.ts b/apps/client/src/app/pages/accounts/accounts-page.component.ts index ab03340df..18d5d1e2a 100644 --- a/apps/client/src/app/pages/accounts/accounts-page.component.ts +++ b/apps/client/src/app/pages/accounts/accounts-page.component.ts @@ -2,6 +2,7 @@ import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { ActivatedRoute, Router } from '@angular/router'; import { CreateAccountDto } from '@ghostfolio/api/app/account/create-account.dto'; +import { TransferBalanceDto } from '@ghostfolio/api/app/account/transfer-balance.dto'; import { UpdateAccountDto } from '@ghostfolio/api/app/account/update-account.dto'; import { AccountDetailDialog } from '@ghostfolio/client/components/account-detail-dialog/account-detail-dialog.component'; import { AccountDetailDialogParams } from '@ghostfolio/client/components/account-detail-dialog/interfaces/interfaces'; @@ -16,6 +17,7 @@ import { Subject, Subscription } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { CreateOrUpdateAccountDialog } from './create-or-update-account-dialog/create-or-update-account-dialog.component'; +import { TransferBalanceDialog } from './transfer-balance/transfer-balance-dialog.component'; @Component({ host: { class: 'page' }, @@ -67,6 +69,8 @@ export class AccountsPageComponent implements OnDestroy, OnInit { } else { this.router.navigate(['.'], { relativeTo: this.route }); } + } else if (params['transferBalanceDialog']) { + this.openTransferBalanceDialog(); } }); } @@ -144,6 +148,12 @@ export class AccountsPageComponent implements OnDestroy, OnInit { }); } + public onTransferBalance() { + this.router.navigate([], { + queryParams: { transferBalanceDialog: true } + }); + } + public onUpdateAccount(aAccount: AccountModel) { this.router.navigate([], { queryParams: { accountId: aAccount.id, editDialog: true } @@ -267,4 +277,30 @@ export class AccountsPageComponent implements OnDestroy, OnInit { this.router.navigate(['.'], { relativeTo: this.route }); }); } + + private openTransferBalanceDialog(): void { + const dialogRef = this.dialog.open(TransferBalanceDialog, { + data: { + accounts: this.accounts + }, + height: this.deviceType === 'mobile' ? '97.5vh' : '80vh', + width: this.deviceType === 'mobile' ? '100vw' : '50rem' + }); + + dialogRef + .afterClosed() + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe((data: any) => { + if (data) { + const { accountIdFrom, accountIdTo, balance }: TransferBalanceDto = + data?.account; + + console.log( + `Transfer cash balance of ${balance} from account ${accountIdFrom} to account ${accountIdTo}` + ); + } + + this.router.navigate(['.'], { relativeTo: this.route }); + }); + } } diff --git a/apps/client/src/app/pages/accounts/accounts-page.html b/apps/client/src/app/pages/accounts/accounts-page.html index 6057802df..a7d5901bb 100644 --- a/apps/client/src/app/pages/accounts/accounts-page.html +++ b/apps/client/src/app/pages/accounts/accounts-page.html @@ -14,6 +14,7 @@ [transactionCount]="transactionCount" (accountDeleted)="onDeleteAccount($event)" (accountToUpdate)="onUpdateAccount($event)" + (transferBalance)="onTransferBalance()" > diff --git a/apps/client/src/app/pages/accounts/accounts-page.module.ts b/apps/client/src/app/pages/accounts/accounts-page.module.ts index 9edb43ba7..7de50983c 100644 --- a/apps/client/src/app/pages/accounts/accounts-page.module.ts +++ b/apps/client/src/app/pages/accounts/accounts-page.module.ts @@ -8,6 +8,7 @@ import { GfAccountsTableModule } from '@ghostfolio/client/components/accounts-ta import { AccountsPageRoutingModule } from './accounts-page-routing.module'; import { AccountsPageComponent } from './accounts-page.component'; import { GfCreateOrUpdateAccountDialogModule } from './create-or-update-account-dialog/create-or-update-account-dialog.module'; +import { GfTransferBalanceDialogModule } from './transfer-balance/transfer-balance-dialog.module'; @NgModule({ declarations: [AccountsPageComponent], @@ -17,6 +18,7 @@ import { GfCreateOrUpdateAccountDialogModule } from './create-or-update-account- GfAccountDetailDialogModule, GfAccountsTableModule, GfCreateOrUpdateAccountDialogModule, + GfTransferBalanceDialogModule, MatButtonModule, RouterModule ], diff --git a/apps/client/src/app/pages/accounts/transfer-balance/interfaces/interfaces.ts b/apps/client/src/app/pages/accounts/transfer-balance/interfaces/interfaces.ts new file mode 100644 index 000000000..3a0b921fd --- /dev/null +++ b/apps/client/src/app/pages/accounts/transfer-balance/interfaces/interfaces.ts @@ -0,0 +1,5 @@ +import { Account } from '@prisma/client'; + +export interface TransferBalanceDialogParams { + accounts: Account[]; +} diff --git a/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.component.ts b/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.component.ts new file mode 100644 index 000000000..4850e96e3 --- /dev/null +++ b/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.component.ts @@ -0,0 +1,69 @@ +import { + ChangeDetectionStrategy, + Component, + Inject, + OnDestroy +} from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { TransferBalanceDto } from '@ghostfolio/api/app/account/transfer-balance.dto'; +import { Account } from '@prisma/client'; +import { Subject } from 'rxjs'; + +import { TransferBalanceDialogParams } from './interfaces/interfaces'; + +@Component({ + host: { class: 'h-100' }, + selector: 'gf-transfer-balance-dialog', + changeDetection: ChangeDetectionStrategy.OnPush, + styleUrls: ['./transfer-balance-dialog.scss'], + templateUrl: 'transfer-balance-dialog.html' +}) +export class TransferBalanceDialog implements OnDestroy { + public accounts: Account[] = []; + public currency: string; + public transferBalanceForm: FormGroup; + + private unsubscribeSubject = new Subject(); + + public constructor( + @Inject(MAT_DIALOG_DATA) public data: TransferBalanceDialogParams, + public dialogRef: MatDialogRef, + private formBuilder: FormBuilder + ) {} + + public ngOnInit() { + this.accounts = this.data.accounts; + + this.transferBalanceForm = this.formBuilder.group({ + balance: [0, Validators.required], + fromAccount: ['', Validators.required], + toAccount: ['', Validators.required] + }); + + this.transferBalanceForm.get('fromAccount').valueChanges.subscribe((id) => { + this.currency = this.accounts.find((account) => { + return account.id === id; + }).currency; + }); + } + + public onCancel() { + this.dialogRef.close(); + } + + public onSubmit() { + const account: TransferBalanceDto = { + accountIdFrom: this.transferBalanceForm.controls['fromAccount'].value, + accountIdTo: this.transferBalanceForm.controls['toAccount'].value, + balance: this.transferBalanceForm.controls['balance'].value + }; + + this.dialogRef.close({ account }); + } + + public ngOnDestroy() { + this.unsubscribeSubject.next(); + this.unsubscribeSubject.complete(); + } +} diff --git a/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html b/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html new file mode 100644 index 000000000..9cce7b87a --- /dev/null +++ b/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -0,0 +1,53 @@ + +

Transfer Cash Balance

+
+
+ + From + + {{ account.name }} + + +
+
+ + To + + {{ account.name }} + + +
+
+ + Value + + {{ currency }} + +
+
+
+ + +
+ diff --git a/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.module.ts b/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.module.ts new file mode 100644 index 000000000..5a56b5810 --- /dev/null +++ b/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.module.ts @@ -0,0 +1,24 @@ +import { CommonModule } from '@angular/common'; +import { NgModule } from '@angular/core'; +import { ReactiveFormsModule } from '@angular/forms'; +import { MatButtonModule } from '@angular/material/button'; +import { MatDialogModule } from '@angular/material/dialog'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; +import { MatSelectModule } from '@angular/material/select'; + +import { TransferBalanceDialog } from './transfer-balance-dialog.component'; + +@NgModule({ + declarations: [TransferBalanceDialog], + imports: [ + CommonModule, + MatButtonModule, + MatDialogModule, + MatFormFieldModule, + MatInputModule, + MatSelectModule, + ReactiveFormsModule + ] +}) +export class GfTransferBalanceDialogModule {} diff --git a/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.scss b/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.scss new file mode 100644 index 000000000..b63df0134 --- /dev/null +++ b/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.scss @@ -0,0 +1,7 @@ +:host { + display: block; + + .mat-mdc-dialog-content { + max-height: unset; + } +} From 2a71cb66de339a064ee511f9d680ea904204709d Mon Sep 17 00:00:00 2001 From: Prashanth Mohan Date: Sun, 8 Oct 2023 02:18:13 +1100 Subject: [PATCH 018/194] Use port numbers from environment variables in docker-compose.dev.yml (#2406) --- docker/docker-compose.dev.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/docker-compose.dev.yml b/docker/docker-compose.dev.yml index 38e38f30d..7c6e5e28a 100644 --- a/docker/docker-compose.dev.yml +++ b/docker/docker-compose.dev.yml @@ -7,7 +7,7 @@ services: env_file: - ../.env ports: - - 5432:5432 + - ${POSTGRES_PORT:-5432}:5432 volumes: - postgres:/var/lib/postgresql/data redis: @@ -15,7 +15,7 @@ services: container_name: redis restart: unless-stopped ports: - - 6379:6379 + - ${REDIS_PORT:-6379}:6379 volumes: postgres: From 8236091477f9e8ea085cbcbcefe6a55171b500c5 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 7 Oct 2023 19:30:28 +0200 Subject: [PATCH 019/194] Feature/add support for search query in portfolio position endpoint (#2443) * Introduce search query filter * Update changelog --- CHANGELOG.md | 1 + .../src/app/portfolio/portfolio.controller.ts | 2 ++ .../src/app/portfolio/portfolio.service.ts | 20 ++++++++++++++++--- apps/api/src/services/api/api.service.ts | 7 +++++++ .../enhanced-symbol-profile.interface.ts | 1 + .../src/lib/interfaces/filter.interface.ts | 1 + 6 files changed, 29 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 17ff05e89..147a48b1a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Added support for notes in the activities import +- Added support for a search query in the portfolio position endpoint - Added the application version to the endpoint `GET api/v1/admin` - Introduced a carousel component for the testimonial section on the landing page diff --git a/apps/api/src/app/portfolio/portfolio.controller.ts b/apps/api/src/app/portfolio/portfolio.controller.ts index ff3161280..6e42b1304 100644 --- a/apps/api/src/app/portfolio/portfolio.controller.ts +++ b/apps/api/src/app/portfolio/portfolio.controller.ts @@ -391,12 +391,14 @@ export class PortfolioController { @Headers(HEADER_KEY_IMPERSONATION.toLowerCase()) impersonationId: string, @Query('accounts') filterByAccounts?: string, @Query('assetClasses') filterByAssetClasses?: string, + @Query('query') filterBySearchQuery?: string, @Query('range') dateRange: DateRange = 'max', @Query('tags') filterByTags?: string ): Promise { const filters = this.apiService.buildFiltersFromQueryParams({ filterByAccounts, filterByAssetClasses, + filterBySearchQuery, filterByTags }); diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index b9d6cef1b..6a60b5e6a 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -1014,6 +1014,9 @@ export class PortfolioService { filters?: Filter[]; impersonationId: string; }): Promise<{ hasErrors: boolean; positions: Position[] }> { + const searchQuery = filters.find(({ type }) => { + return type === 'SEARCH_QUERY'; + })?.id; const userId = await this.getUserId(impersonationId, this.request.user.id); const { portfolioOrders, transactionPoints } = @@ -1042,9 +1045,9 @@ export class PortfolioService { const currentPositions = await portfolioCalculator.getCurrentPositions(startDate); - const positions = currentPositions.positions.filter( - (item) => !item.quantity.eq(0) - ); + let positions = currentPositions.positions.filter(({ quantity }) => { + return !quantity.eq(0); + }); const dataGatheringItems = positions.map(({ dataSource, symbol }) => { return { @@ -1067,6 +1070,17 @@ export class PortfolioService { symbolProfileMap[symbolProfile.symbol] = symbolProfile; } + if (searchQuery) { + positions = positions.filter(({ symbol }) => { + const enhancedSymbolProfile = symbolProfileMap[symbol]; + + return ( + enhancedSymbolProfile.isin?.toLowerCase().startsWith(searchQuery) || + enhancedSymbolProfile.name?.toLowerCase().startsWith(searchQuery) + ); + }); + } + return { hasErrors: currentPositions.hasErrors, positions: positions.map((position) => { diff --git a/apps/api/src/services/api/api.service.ts b/apps/api/src/services/api/api.service.ts index 2a6b1fb06..204aa030e 100644 --- a/apps/api/src/services/api/api.service.ts +++ b/apps/api/src/services/api/api.service.ts @@ -8,14 +8,17 @@ export class ApiService { public buildFiltersFromQueryParams({ filterByAccounts, filterByAssetClasses, + filterBySearchQuery, filterByTags }: { filterByAccounts?: string; filterByAssetClasses?: string; + filterBySearchQuery?: string; filterByTags?: string; }): Filter[] { const accountIds = filterByAccounts?.split(',') ?? []; const assetClasses = filterByAssetClasses?.split(',') ?? []; + const searchQuery = filterBySearchQuery?.toLowerCase(); const tagIds = filterByTags?.split(',') ?? []; return [ @@ -31,6 +34,10 @@ export class ApiService { type: 'ASSET_CLASS' }; }), + { + id: searchQuery, + type: 'SEARCH_QUERY' + }, ...tagIds.map((tagId) => { return { id: tagId, diff --git a/libs/common/src/lib/interfaces/enhanced-symbol-profile.interface.ts b/libs/common/src/lib/interfaces/enhanced-symbol-profile.interface.ts index 5b72d9ce7..3bf914eaa 100644 --- a/libs/common/src/lib/interfaces/enhanced-symbol-profile.interface.ts +++ b/libs/common/src/lib/interfaces/enhanced-symbol-profile.interface.ts @@ -15,6 +15,7 @@ export interface EnhancedSymbolProfile { dataSource: DataSource; dateOfFirstActivity?: Date; id: string; + isin: string | null; name: string | null; scraperConfiguration?: ScraperConfiguration | null; sectors: Sector[]; diff --git a/libs/common/src/lib/interfaces/filter.interface.ts b/libs/common/src/lib/interfaces/filter.interface.ts index a6bc17c4f..356b3add7 100644 --- a/libs/common/src/lib/interfaces/filter.interface.ts +++ b/libs/common/src/lib/interfaces/filter.interface.ts @@ -6,6 +6,7 @@ export interface Filter { | 'ASSET_CLASS' | 'ASSET_SUB_CLASS' | 'PRESET_ID' + | 'SEARCH_QUERY' | 'SYMBOL' | 'TAG'; } From 37ff7acf040101e0611672f86710442c35348fdb Mon Sep 17 00:00:00 2001 From: Kevin Date: Sun, 8 Oct 2023 19:17:55 +0200 Subject: [PATCH 020/194] Change platform control from select to autocomplete in account dialog (#2429) * Change platform control from select to autocomplete in account dialog * Update changelog --- CHANGELOG.md | 1 + apps/api/src/app/info/info.service.ts | 8 +-- ...eate-or-update-account-dialog.component.ts | 72 +++++++++++++++++-- .../create-or-update-account-dialog.html | 27 +++++-- .../create-or-update-account-dialog.module.ts | 4 ++ .../src/lib/interfaces/info-item.interface.ts | 4 +- 6 files changed, 97 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 147a48b1a..fcf3b328b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Added support for notes in the activities import +- Added support to search in the platform selector of the create or update account dialog - Added support for a search query in the portfolio position endpoint - Added the application version to the endpoint `GET api/v1/admin` - Introduced a carousel component for the testimonial section on the landing page diff --git a/apps/api/src/app/info/info.service.ts b/apps/api/src/app/info/info.service.ts index f2c45a72b..4fc4aec4e 100644 --- a/apps/api/src/app/info/info.service.ts +++ b/apps/api/src/app/info/info.service.ts @@ -55,12 +55,8 @@ export class InfoService { public async get(): Promise { const info: Partial = {}; let isReadOnlyMode: boolean; - const platforms = ( - await this.platformService.getPlatforms({ - orderBy: { name: 'asc' } - }) - ).map(({ id, name }) => { - return { id, name }; + const platforms = await this.platformService.getPlatforms({ + orderBy: { name: 'asc' } }); let systemMessage: string; 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 3babc14bc..e2c63f191 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 @@ -4,12 +4,20 @@ import { Inject, OnDestroy } from '@angular/core'; -import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { + AbstractControl, + FormBuilder, + FormGroup, + ValidatorFn, + Validators +} from '@angular/forms'; 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 { Subject } from 'rxjs'; +import { Platform } from '@prisma/client'; +import { Observable, Subject } from 'rxjs'; +import { map, startWith } from 'rxjs/operators'; import { CreateOrUpdateAccountDialogParams } from './interfaces/interfaces'; @@ -23,7 +31,8 @@ import { CreateOrUpdateAccountDialogParams } from './interfaces/interfaces'; export class CreateOrUpdateAccountDialog implements OnDestroy { public accountForm: FormGroup; public currencies: string[] = []; - public platforms: { id: string; name: string }[]; + public filteredPlatforms: Observable; + public platforms: Platform[]; private unsubscribeSubject = new Subject(); @@ -34,7 +43,7 @@ export class CreateOrUpdateAccountDialog implements OnDestroy { private formBuilder: FormBuilder ) {} - ngOnInit() { + public ngOnInit() { const { currencies, platforms } = this.dataService.fetchInfo(); this.currencies = currencies; @@ -47,8 +56,41 @@ export class CreateOrUpdateAccountDialog implements OnDestroy { currency: [this.data.account.currency, Validators.required], isExcluded: [this.data.account.isExcluded], name: [this.data.account.name, Validators.required], - platformId: [this.data.account.platformId] + platformId: [ + this.platforms.find(({ id }) => { + return id === this.data.account.platformId; + }), + this.autocompleteObjectValidator() + ] }); + + this.filteredPlatforms = this.accountForm + .get('platformId') + .valueChanges.pipe( + startWith(''), + map((value) => { + const name = typeof value === 'string' ? value : value?.name; + return name ? this.filter(name as string) : this.platforms.slice(); + }) + ); + } + + public autoCompleteCheck() { + const inputValue = this.accountForm.controls['platformId'].value; + + if (typeof inputValue === 'string') { + const matchingEntry = this.platforms.find(({ name }) => { + return name === inputValue; + }); + + if (matchingEntry) { + this.accountForm.controls['platformId'].setValue(matchingEntry); + } + } + } + + public displayFn(platform: Platform) { + return platform?.name ?? ''; } public onCancel() { @@ -63,7 +105,7 @@ export class CreateOrUpdateAccountDialog implements OnDestroy { id: this.accountForm.controls['accountId'].value, isExcluded: this.accountForm.controls['isExcluded'].value, name: this.accountForm.controls['name'].value, - platformId: this.accountForm.controls['platformId'].value + platformId: this.accountForm.controls['platformId'].value?.id ?? null }; if (this.data.account.id) { @@ -79,4 +121,22 @@ export class CreateOrUpdateAccountDialog implements OnDestroy { this.unsubscribeSubject.next(); this.unsubscribeSubject.complete(); } + + private autocompleteObjectValidator(): ValidatorFn { + return (control: AbstractControl) => { + if (control.value && typeof control.value === 'string') { + return { invalidAutocompleteObject: { value: control.value } }; + } + + return null; + }; + } + + private filter(value: string): Platform[] { + const filterValue = value.toLowerCase(); + + return this.platforms.filter(({ name }) => { + return name.toLowerCase().startsWith(filterValue); + }); + } } diff --git a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html index 2d068dde1..91efd0972 100644 --- a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html +++ b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -42,12 +42,29 @@
Platform - - - {{ platform.name }} + + - + + + {{ platformEntry.name }} + + +
diff --git a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.module.ts b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.module.ts index 528835f9a..0f8b8ecb8 100644 --- a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.module.ts +++ b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.module.ts @@ -7,6 +7,8 @@ import { MatDialogModule } from '@angular/material/dialog'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatInputModule } from '@angular/material/input'; import { MatSelectModule } from '@angular/material/select'; +import { MatAutocompleteModule } from '@angular/material/autocomplete'; +import { GfSymbolIconModule } from '@ghostfolio/client/components/symbol-icon/symbol-icon.module'; import { CreateOrUpdateAccountDialog } from './create-or-update-account-dialog.component'; @@ -15,6 +17,8 @@ import { CreateOrUpdateAccountDialog } from './create-or-update-account-dialog.c imports: [ CommonModule, FormsModule, + GfSymbolIconModule, + MatAutocompleteModule, MatButtonModule, MatCheckboxModule, MatDialogModule, diff --git a/libs/common/src/lib/interfaces/info-item.interface.ts b/libs/common/src/lib/interfaces/info-item.interface.ts index 5ba295050..55ab7d06f 100644 --- a/libs/common/src/lib/interfaces/info-item.interface.ts +++ b/libs/common/src/lib/interfaces/info-item.interface.ts @@ -1,5 +1,5 @@ import { SubscriptionOffer } from '@ghostfolio/common/types'; -import { SymbolProfile, Tag } from '@prisma/client'; +import { Platform, SymbolProfile, Tag } from '@prisma/client'; import { Statistics } from './statistics.interface'; import { Subscription } from './subscription.interface'; @@ -13,7 +13,7 @@ export interface InfoItem { fearAndGreedDataSource?: string; globalPermissions: string[]; isReadOnlyMode?: boolean; - platforms: { id: string; name: string }[]; + platforms: Platform[]; statistics: Statistics; stripePublicKey?: string; subscriptions: { [offer in SubscriptionOffer]: Subscription }; From 550e646079b830288b98ce8ba72c49a08ae4c629 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 8 Oct 2023 20:32:00 +0200 Subject: [PATCH 021/194] Feature/introduce assistant (#2451) * Introduce assistant * Update changelog --- CHANGELOG.md | 1 + .../src/app/portfolio/portfolio.service.ts | 3 +- apps/api/src/app/user/user.service.ts | 7 + apps/client/src/app/app.component.html | 1 + .../components/header/header.component.html | 25 ++ .../app/components/header/header.component.ts | 40 +++- .../app/components/header/header.module.ts | 2 + apps/client/src/app/services/data.service.ts | 5 + apps/client/src/styles.scss | 10 + libs/common/src/lib/permissions.ts | 5 +- .../assistant-list-item.component.ts | 52 +++++ .../assistant-list-item.html | 12 + .../assistant-list-item.module.ts | 12 + .../assistant-list-item.scss | 19 ++ .../src/lib/assistant/assistant.component.ts | 219 ++++++++++++++++++ libs/ui/src/lib/assistant/assistant.html | 63 +++++ libs/ui/src/lib/assistant/assistant.module.ts | 25 ++ libs/ui/src/lib/assistant/assistant.scss | 37 +++ libs/ui/src/lib/assistant/index.ts | 1 + .../lib/assistant/interfaces/interfaces.ts | 5 + 20 files changed, 541 insertions(+), 3 deletions(-) create mode 100644 libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.component.ts create mode 100644 libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.html create mode 100644 libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.module.ts create mode 100644 libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.scss create mode 100644 libs/ui/src/lib/assistant/assistant.component.ts create mode 100644 libs/ui/src/lib/assistant/assistant.html create mode 100644 libs/ui/src/lib/assistant/assistant.module.ts create mode 100644 libs/ui/src/lib/assistant/assistant.scss create mode 100644 libs/ui/src/lib/assistant/index.ts create mode 100644 libs/ui/src/lib/assistant/interfaces/interfaces.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index fcf3b328b..fa300d212 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- Added support to search for a holding by `isin`, `name` and `symbol` (experimental) - Added support for notes in the activities import - Added support to search in the platform selector of the create or update account dialog - Added support for a search query in the portfolio position endpoint diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index 6a60b5e6a..de366908f 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -1076,7 +1076,8 @@ export class PortfolioService { return ( enhancedSymbolProfile.isin?.toLowerCase().startsWith(searchQuery) || - enhancedSymbolProfile.name?.toLowerCase().startsWith(searchQuery) + enhancedSymbolProfile.name?.toLowerCase().startsWith(searchQuery) || + enhancedSymbolProfile.symbol?.toLowerCase().startsWith(searchQuery) ); }); } diff --git a/apps/api/src/app/user/user.service.ts b/apps/api/src/app/user/user.service.ts index a2710bfd5..a176c43f3 100644 --- a/apps/api/src/app/user/user.service.ts +++ b/apps/api/src/app/user/user.service.ts @@ -163,6 +163,13 @@ export class UserService { let currentPermissions = getPermissions(user.role); + if (!(user.Settings.settings as UserSettings).isExperimentalFeatures) { + currentPermissions = without( + currentPermissions, + permissions.accessAssistant + ); + } + if (this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) { user.subscription = this.subscriptionService.getSubscription(Subscription); diff --git a/apps/client/src/app/app.component.html b/apps/client/src/app/app.component.html index 76ccd3ed4..a52261969 100644 --- a/apps/client/src/app/app.component.html +++ b/apps/client/src/app/app.component.html @@ -32,6 +32,7 @@ About +
  • + + + + +
  • + +
  • +
    +
    +
    Holdings
    + + + +
    No entries...
    +
    +
    +
    + diff --git a/libs/ui/src/lib/assistant/assistant.module.ts b/libs/ui/src/lib/assistant/assistant.module.ts new file mode 100644 index 000000000..e4f48e8f3 --- /dev/null +++ b/libs/ui/src/lib/assistant/assistant.module.ts @@ -0,0 +1,25 @@ +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 { RouterModule } from '@angular/router'; +import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; + +import { GfAssistantListItemModule } from './assistant-list-item/assistant-list-item.module'; +import { AssistantComponent } from './assistant.component'; + +@NgModule({ + declarations: [AssistantComponent], + exports: [AssistantComponent], + imports: [ + CommonModule, + FormsModule, + GfAssistantListItemModule, + MatButtonModule, + NgxSkeletonLoaderModule, + ReactiveFormsModule, + RouterModule + ], + schemas: [CUSTOM_ELEMENTS_SCHEMA] +}) +export class GfAssistantModule {} diff --git a/libs/ui/src/lib/assistant/assistant.scss b/libs/ui/src/lib/assistant/assistant.scss new file mode 100644 index 000000000..3339009d4 --- /dev/null +++ b/libs/ui/src/lib/assistant/assistant.scss @@ -0,0 +1,37 @@ +:host { + display: block; + + .result-container { + max-height: 15rem; + } + + .search-container { + border-bottom: 1px solid rgba(var(--dark-dividers)); + height: 2.5rem; + + input { + background: transparent; + outline: 0; + } + + .hot-key-hint { + border: 1px solid rgba(var(--dark-dividers)); + border-radius: 0.25rem; + cursor: default; + } + } +} + +:host-context(.is-dark-theme) { + .search-container { + border-color: rgba(var(--light-dividers)); + + input { + color: rgba(var(--light-primary-text)); + } + + .hot-key-hint { + border-color: rgba(var(--light-dividers)); + } + } +} diff --git a/libs/ui/src/lib/assistant/index.ts b/libs/ui/src/lib/assistant/index.ts new file mode 100644 index 000000000..f58d1b2f3 --- /dev/null +++ b/libs/ui/src/lib/assistant/index.ts @@ -0,0 +1 @@ +export * from './assistant.module'; diff --git a/libs/ui/src/lib/assistant/interfaces/interfaces.ts b/libs/ui/src/lib/assistant/interfaces/interfaces.ts new file mode 100644 index 000000000..922091fb5 --- /dev/null +++ b/libs/ui/src/lib/assistant/interfaces/interfaces.ts @@ -0,0 +1,5 @@ +import { Position } from '@ghostfolio/common/interfaces'; + +export interface ISearchResults { + holdings: Position[]; +} From 31f0056a2df7e9186763f9ad6d779ac28a1b493f Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 8 Oct 2023 20:34:39 +0200 Subject: [PATCH 022/194] Release 2.9.0 (#2454) --- CHANGELOG.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fa300d212..07b89aea6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ 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.9.0 - 2023-10-08 ### Added diff --git a/package.json b/package.json index 2e2f81186..46c05f611 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.8.0", + "version": "2.9.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From f47c7313af7de48f2f97aad2707a5a2e1ca9ac19 Mon Sep 17 00:00:00 2001 From: Sanjeev Sharma <29539278+thesanjeevsharma@users.noreply.github.com> Date: Mon, 9 Oct 2023 22:41:09 +0530 Subject: [PATCH 023/194] Support enter key press to submit access dialog form (#2437) * Support enter key press to submit access dialog form * Update changelog --- CHANGELOG.md | 6 +++++ apps/api/src/app/access/create-access.dto.ts | 4 ++++ ...reate-or-update-access-dialog.component.ts | 23 +++++++++++++++++-- .../create-or-update-access-dialog.html | 19 +++++++++------ 4 files changed, 43 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 07b89aea6..9acc0e009 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ 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 + +### Added + +- Supported enter key press to submit the form of the create or update access dialog + ## 2.9.0 - 2023-10-08 ### Added diff --git a/apps/api/src/app/access/create-access.dto.ts b/apps/api/src/app/access/create-access.dto.ts index 055cb6610..b9cf8892d 100644 --- a/apps/api/src/app/access/create-access.dto.ts +++ b/apps/api/src/app/access/create-access.dto.ts @@ -8,4 +8,8 @@ export class CreateAccessDto { @IsOptional() @IsString() granteeUserId?: string; + + @IsOptional() + @IsString() + type?: 'PUBLIC'; } diff --git a/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts b/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts index 1727191e8..2aa38f4d7 100644 --- a/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts +++ b/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts @@ -4,7 +4,9 @@ import { Inject, OnDestroy } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { CreateAccessDto } from '@ghostfolio/api/app/access/create-access.dto'; import { Subject } from 'rxjs'; import { CreateOrUpdateAccessDialogParams } from './interfaces/interfaces'; @@ -17,19 +19,36 @@ import { CreateOrUpdateAccessDialogParams } from './interfaces/interfaces'; templateUrl: 'create-or-update-access-dialog.html' }) export class CreateOrUpdateAccessDialog implements OnDestroy { + public accessForm: FormGroup; + private unsubscribeSubject = new Subject(); public constructor( + @Inject(MAT_DIALOG_DATA) public data: CreateOrUpdateAccessDialogParams, public dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) public data: CreateOrUpdateAccessDialogParams + private formBuilder: FormBuilder ) {} - ngOnInit() {} + ngOnInit() { + this.accessForm = this.formBuilder.group({ + alias: [this.data.access.alias], + type: [this.data.access.type, Validators.required] + }); + } public onCancel() { this.dialogRef.close(); } + public onSubmit() { + const access: CreateAccessDto = { + alias: this.accessForm.controls['alias'].value, + type: this.accessForm.controls['type'].value + }; + + this.dialogRef.close({ access }); + } + public ngOnDestroy() { this.unsubscribeSubject.next(); this.unsubscribeSubject.complete(); diff --git a/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html b/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html index 5142a7f6b..c2afc51fb 100644 --- a/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html +++ b/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -1,33 +1,38 @@ -
    +

    Grant access

    Alias
    Type - + Public
    - + From d8d4d8f001740bece2fc45a3153069bd9c499ca0 Mon Sep 17 00:00:00 2001 From: Basim Mohammed <107759928+Basimohd@users.noreply.github.com> Date: Mon, 9 Oct 2023 23:08:33 +0530 Subject: [PATCH 024/194] Change jobs table in admin control to mat-table (#2444) * Change jobs table in admin control to mat-table * Update changelog --- CHANGELOG.md | 4 + .../admin-jobs/admin-jobs.component.ts | 17 +- .../app/components/admin-jobs/admin-jobs.html | 267 ++++++++++-------- .../admin-jobs/admin-jobs.module.ts | 2 + 4 files changed, 175 insertions(+), 115 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9acc0e009..9ff26a060 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Supported enter key press to submit the form of the create or update access dialog +### Changed + +- Changed the queue jobs view in the admin control panel to an `@angular/material` data table + ## 2.9.0 - 2023-10-08 ### Added diff --git a/apps/client/src/app/components/admin-jobs/admin-jobs.component.ts b/apps/client/src/app/components/admin-jobs/admin-jobs.component.ts index 91988eb4d..9c5e8e62a 100644 --- a/apps/client/src/app/components/admin-jobs/admin-jobs.component.ts +++ b/apps/client/src/app/components/admin-jobs/admin-jobs.component.ts @@ -6,6 +6,7 @@ import { OnInit } from '@angular/core'; import { FormBuilder, FormGroup } from '@angular/forms'; +import { MatTableDataSource } from '@angular/material/table'; import { AdminService } from '@ghostfolio/client/services/admin.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; import { QUEUE_JOB_STATUS_LIST } from '@ghostfolio/common/config'; @@ -24,7 +25,19 @@ import { takeUntil } from 'rxjs/operators'; export class AdminJobsComponent implements OnDestroy, OnInit { public defaultDateTimeFormat: string; public filterForm: FormGroup; - public jobs: AdminJobs['jobs'] = []; + public dataSource: MatTableDataSource = + new MatTableDataSource(); + public displayedColumns = [ + 'index', + 'type', + 'symbol', + 'dataSource', + 'attempts', + 'created', + 'finished', + 'status', + 'actions' + ]; public statusFilterOptions = QUEUE_JOB_STATUS_LIST; public user: User; @@ -102,7 +115,7 @@ export class AdminJobsComponent implements OnDestroy, OnInit { .fetchJobs({ status: aStatus }) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(({ jobs }) => { - this.jobs = jobs; + this.dataSource = new MatTableDataSource(jobs); this.changeDetectorRef.markForCheck(); }); diff --git a/apps/client/src/app/components/admin-jobs/admin-jobs.html b/apps/client/src/app/components/admin-jobs/admin-jobs.html index acb868979..0fb95a26a 100644 --- a/apps/client/src/app/components/admin-jobs/admin-jobs.html +++ b/apps/client/src/app/components/admin-jobs/admin-jobs.html @@ -13,122 +13,163 @@ - - - - - - - - - - - - + + +
    #TypeSymbolData SourceAttemptsCreatedFinishedStatus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + +
    + # + + {{ element.id }} + + Type + + + + + Asset Profile + + + Historical Market Data + + + + Symbol + + {{ element.data?.symbol }} + + Data Source + + {{ element.data?.dataSource }} + + Attempts + + {{ element.attemptsMade }} + + Created + + {{ element.timestamp | date: defaultDateTimeFormat }} + + Finished + + {{ element.finishedOn | date: defaultDateTimeFormat }} + + Status + + + + + + + + + + + + + + + + + - - - - -
    {{ job.id }} - - - - Asset Profile - - - Historical Market Data - - - {{ job.data?.symbol }}{{ job.data?.dataSource }} - {{ job.attemptsMade }} - - {{ job.timestamp | date: defaultDateTimeFormat }} - - {{ job.finishedOn | date: defaultDateTimeFormat }} - - - - - - - - - - - - - - -
    diff --git a/apps/client/src/app/components/admin-jobs/admin-jobs.module.ts b/apps/client/src/app/components/admin-jobs/admin-jobs.module.ts index 93e668097..fe717b904 100644 --- a/apps/client/src/app/components/admin-jobs/admin-jobs.module.ts +++ b/apps/client/src/app/components/admin-jobs/admin-jobs.module.ts @@ -4,6 +4,7 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; import { MatMenuModule } from '@angular/material/menu'; import { MatSelectModule } from '@angular/material/select'; +import { MatTableModule } from '@angular/material/table'; import { AdminJobsComponent } from './admin-jobs.component'; @@ -15,6 +16,7 @@ import { AdminJobsComponent } from './admin-jobs.component'; MatButtonModule, MatMenuModule, MatSelectModule, + MatTableModule, ReactiveFormsModule ], schemas: [CUSTOM_ELEMENTS_SCHEMA] From e9ef9115489cf630eda8ba6d879244612ec19256 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 9 Oct 2023 20:28:39 +0200 Subject: [PATCH 025/194] Feature/improve search results display in assistant (#2458) * Only show search results if search is active * Update changelog --- CHANGELOG.md | 1 + libs/ui/src/lib/assistant/assistant.html | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ff26a060..9333530bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Improved the display of the results in the search for a holding - Changed the queue jobs view in the admin control panel to an `@angular/material` data table ## 2.9.0 - 2023-10-08 diff --git a/libs/ui/src/lib/assistant/assistant.html b/libs/ui/src/lib/assistant/assistant.html index cf9dd67f0..c5db29658 100644 --- a/libs/ui/src/lib/assistant/assistant.html +++ b/libs/ui/src/lib/assistant/assistant.html @@ -38,7 +38,10 @@ -
    +
    Holdings
    Date: Mon, 9 Oct 2023 20:29:56 +0200 Subject: [PATCH 026/194] Feature/improve symbol conversion in eod historical data service (#2457) * Improve conversion of currency symbols * Update changelog --- CHANGELOG.md | 1 + .../eod-historical-data/eod-historical-data.service.ts | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9333530bc..b021bcc8d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the display of the results in the search for a holding - Changed the queue jobs view in the admin control panel to an `@angular/material` data table +- Improved the symbol conversion in the _EOD Historical Data_ service ## 2.9.0 - 2023-10-08 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 307f6127a..ac2f35c04 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 @@ -283,7 +283,6 @@ export class EodHistoricalDataService implements DataProviderInterface { if (symbol.endsWith('.FOREX')) { symbol = symbol.replace('GBX', 'GBp'); symbol = symbol.replace('.FOREX', ''); - symbol = `${DEFAULT_CURRENCY}${symbol}`; } return symbol; @@ -292,7 +291,7 @@ export class EodHistoricalDataService implements DataProviderInterface { /** * Converts a symbol to a EOD symbol * - * Currency: USDCHF -> CHF.FOREX + * Currency: USDCHF -> USDCHF.FOREX */ private convertToEodSymbol(aSymbol: string) { if ( @@ -304,9 +303,10 @@ export class EodHistoricalDataService implements DataProviderInterface { aSymbol.substring(0, aSymbol.length - DEFAULT_CURRENCY.length) ) ) { - return `${aSymbol - .replace('GBp', 'GBX') - .replace(DEFAULT_CURRENCY, '')}.FOREX`; + let symbol = aSymbol; + symbol = symbol.replace('GBp', 'GBX'); + + return `${symbol}.FOREX`; } } From 162fc25e23dd62643a820bc1fda6c01a5fd9f7c4 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 9 Oct 2023 20:31:34 +0200 Subject: [PATCH 027/194] Release 2.10.0 (#2459) --- CHANGELOG.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b021bcc8d..8e7a5f4e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ 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.10.0 - 2023-10-09 ### Added diff --git a/package.json b/package.json index 46c05f611..bbbb99907 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.9.0", + "version": "2.10.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From 6c66033eb443d2be10f2bf7cbe5413c95e57bd0d Mon Sep 17 00:00:00 2001 From: Kevin Date: Tue, 10 Oct 2023 17:31:53 +0200 Subject: [PATCH 028/194] Add date to markets overview by benchmarks (#2436) * Add date * Update changelog --- CHANGELOG.md | 6 ++++++ apps/api/src/app/benchmark/benchmark.service.ts | 8 ++++---- .../services/market-data/market-data.service.ts | 14 +++++++++----- .../src/lib/interfaces/benchmark.interface.ts | 1 + 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8e7a5f4e1..6fc130922 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ 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 + +### Added + +- Extended the markets overview by benchmarks (date of last all time high) + ## 2.10.0 - 2023-10-09 ### Added diff --git a/apps/api/src/app/benchmark/benchmark.service.ts b/apps/api/src/app/benchmark/benchmark.service.ts index 7fe1911a4..2547e57cc 100644 --- a/apps/api/src/app/benchmark/benchmark.service.ts +++ b/apps/api/src/app/benchmark/benchmark.service.ts @@ -64,7 +64,7 @@ export class BenchmarkService { const benchmarkAssetProfiles = await this.getBenchmarkAssetProfiles(); - const promises: Promise[] = []; + const promises: Promise<{ date: Date; marketPrice: number }>[] = []; const quotes = await this.dataProviderService.getQuotes({ items: benchmarkAssetProfiles.map(({ dataSource, symbol }) => { @@ -85,15 +85,14 @@ export class BenchmarkService { let performancePercentFromAllTimeHigh = 0; - if (allTimeHigh && marketPrice) { + if (allTimeHigh?.marketPrice && marketPrice) { performancePercentFromAllTimeHigh = this.calculateChangeInPercentage( - allTimeHigh, + allTimeHigh.marketPrice, marketPrice ); } else { storeInCache = false; } - return { marketCondition: this.getMarketCondition( performancePercentFromAllTimeHigh @@ -101,6 +100,7 @@ export class BenchmarkService { name: benchmarkAssetProfiles[index].name, performances: { allTimeHigh: { + date: allTimeHigh.date, performancePercent: performancePercentFromAllTimeHigh } } diff --git a/apps/api/src/services/market-data/market-data.service.ts b/apps/api/src/services/market-data/market-data.service.ts index 414c247aa..5760096bf 100644 --- a/apps/api/src/services/market-data/market-data.service.ts +++ b/apps/api/src/services/market-data/market-data.service.ts @@ -39,18 +39,22 @@ export class MarketDataService { }); } - public async getMax({ dataSource, symbol }: UniqueAsset): Promise { - const aggregations = await this.prismaService.marketData.aggregate({ - _max: { + public async getMax({ dataSource, symbol }: UniqueAsset) { + return this.prismaService.marketData.findFirst({ + select: { + date: true, marketPrice: true }, + orderBy: [ + { + marketPrice: 'desc' + } + ], where: { dataSource, symbol } }); - - return aggregations._max.marketPrice; } public async getRange({ diff --git a/libs/common/src/lib/interfaces/benchmark.interface.ts b/libs/common/src/lib/interfaces/benchmark.interface.ts index 906e30759..d1a63e1f4 100644 --- a/libs/common/src/lib/interfaces/benchmark.interface.ts +++ b/libs/common/src/lib/interfaces/benchmark.interface.ts @@ -5,6 +5,7 @@ export interface Benchmark { name: EnhancedSymbolProfile['name']; performances: { allTimeHigh: { + date: Date; performancePercent: number; }; }; From 22b43b5bfc5749eb6e65ebc435f6adfb12490c3b Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 10 Oct 2023 20:17:45 +0200 Subject: [PATCH 029/194] Feature/extract locales 20231010 (#2462) * Update locales * Update changelog --- CHANGELOG.md | 4 + apps/client/src/locales/messages.de.xlf | 1000 +++++++++++++++------- apps/client/src/locales/messages.es.xlf | 1010 +++++++++++++++------- apps/client/src/locales/messages.fr.xlf | 1016 ++++++++++++++++------- apps/client/src/locales/messages.it.xlf | 1016 ++++++++++++++++------- apps/client/src/locales/messages.nl.xlf | 1016 ++++++++++++++++------- apps/client/src/locales/messages.pt.xlf | 1016 ++++++++++++++++------- apps/client/src/locales/messages.tr.xlf | 1002 +++++++++++++++------- apps/client/src/locales/messages.xlf | 987 +++++++++++++++------- 9 files changed, 5790 insertions(+), 2277 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6fc130922..b51ced82a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Extended the markets overview by benchmarks (date of last all time high) +### Changed + +- Improved the language localization for German (`de`) + ## 2.10.0 - 2023-10-09 ### Added diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 4ca6c031e..e4e1223ea 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -22,7 +22,7 @@ Das Ausfallrisiko beim Börsenhandel kann erheblich sein. Es ist nicht ratsam, Geld zu investieren, welches du kurzfristig benötigst. apps/client/src/app/app.component.html - 174,175 + 175,176 @@ -42,15 +42,15 @@ apps/client/src/app/components/admin-jobs/admin-jobs.html - 20 + 28 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 12 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 22 - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 17 + 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/activities-table.component.html @@ -94,11 +94,11 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 93 + 104 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 88 + 81 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -122,7 +122,7 @@ Name apps/client/src/app/components/accounts-table/accounts-table.component.html - 22 + 33 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -142,7 +142,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 7 + 12 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -162,7 +162,7 @@ Gesamt apps/client/src/app/components/accounts-table/accounts-table.component.html - 38 + 49 libs/ui/src/lib/activities-table/activities-table.component.html @@ -174,11 +174,15 @@ Wert apps/client/src/app/components/accounts-table/accounts-table.component.html - 145 + 156 apps/client/src/app/components/accounts-table/accounts-table.component.html - 180 + 191 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 31 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -226,7 +230,7 @@ Bearbeiten apps/client/src/app/components/accounts-table/accounts-table.component.html - 246 + 257 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -246,7 +250,7 @@ Löschen apps/client/src/app/components/accounts-table/accounts-table.component.html - 254 + 265 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -270,7 +274,7 @@ Möchtest du dieses Konto wirklich löschen? apps/client/src/app/components/accounts-table/accounts-table.component.ts - 82 + 83 @@ -278,7 +282,7 @@ Jobs löschen apps/client/src/app/components/admin-jobs/admin-jobs.html - 38 + 140 @@ -286,7 +290,7 @@ Symbol apps/client/src/app/components/admin-jobs/admin-jobs.html - 21 + 50 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -294,7 +298,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 64 + 57 @@ -302,7 +306,7 @@ Datenquelle apps/client/src/app/components/admin-jobs/admin-jobs.html - 22 + 59 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -318,7 +322,7 @@ Versuche apps/client/src/app/components/admin-jobs/admin-jobs.html - 23 + 68 @@ -326,7 +330,7 @@ Erstellt apps/client/src/app/components/admin-jobs/admin-jobs.html - 24 + 77 @@ -334,7 +338,7 @@ Abgeschlossen apps/client/src/app/components/admin-jobs/admin-jobs.html - 25 + 86 @@ -342,7 +346,7 @@ Status apps/client/src/app/components/admin-jobs/admin-jobs.html - 26 + 95 @@ -350,7 +354,7 @@ Anlageprofil apps/client/src/app/components/admin-jobs/admin-jobs.html - 55 + 37 @@ -358,7 +362,7 @@ Historische Marktdaten apps/client/src/app/components/admin-jobs/admin-jobs.html - 60 + 42 @@ -366,7 +370,7 @@ Daten anzeigen apps/client/src/app/components/admin-jobs/admin-jobs.html - 115 + 155 @@ -374,7 +378,7 @@ Stacktrace anzeigen apps/client/src/app/components/admin-jobs/admin-jobs.html - 122 + 162 @@ -382,7 +386,7 @@ Job löschen apps/client/src/app/components/admin-jobs/admin-jobs.html - 125 + 165 @@ -430,7 +434,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 191 + 195 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -444,9 +448,17 @@ apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html 13 + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 30 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 79 + 95 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 43 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -456,10 +468,6 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 37 - - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 25 - Save @@ -470,7 +478,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 198 + 202 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -484,18 +492,18 @@ apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html 20 + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 37 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 86 + 102 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 364 - - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 32 - First Activity @@ -506,7 +514,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 79 + 72 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -518,7 +526,7 @@ Anzahl Aktivitäten apps/client/src/app/components/admin-overview/admin-overview.html - 17 + 23 @@ -534,7 +542,7 @@ Bitte Währung hinzufügen: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 112 + 114 @@ -542,7 +550,7 @@ Möchtest du diesen Gutscheincode wirklich löschen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 126 + 128 @@ -550,7 +558,7 @@ Möchtest du diese Währung wirklich löschen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 139 + 141 @@ -558,7 +566,7 @@ Möchtest du den Cache wirklich leeren? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 156 + 158 @@ -566,7 +574,7 @@ Bitte gebe deine Systemmeldung ein: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 186 + 188 @@ -574,7 +582,7 @@ Anzahl Benutzer apps/client/src/app/components/admin-overview/admin-overview.html - 7 + 13 @@ -582,7 +590,7 @@ pro Benutzer apps/client/src/app/components/admin-overview/admin-overview.html - 26 + 32 @@ -618,7 +626,7 @@ Wechselkurse apps/client/src/app/components/admin-overview/admin-overview.html - 31 + 37 @@ -626,7 +634,7 @@ Währung hinzufügen apps/client/src/app/components/admin-overview/admin-overview.html - 70 + 76 @@ -634,7 +642,7 @@ Systemmeldung apps/client/src/app/components/admin-overview/admin-overview.html - 96 + 102 @@ -642,7 +650,7 @@ Systemmeldung setzen apps/client/src/app/components/admin-overview/admin-overview.html - 118 + 124 @@ -650,7 +658,7 @@ Lese-Modus apps/client/src/app/components/admin-overview/admin-overview.html - 86 + 92 @@ -658,7 +666,7 @@ Gutscheincodes apps/client/src/app/components/admin-overview/admin-overview.html - 126 + 132 @@ -666,7 +674,7 @@ Hinzufügen apps/client/src/app/components/admin-overview/admin-overview.html - 170 + 176 @@ -674,7 +682,7 @@ Verwaltung apps/client/src/app/components/admin-overview/admin-overview.html - 177 + 183 @@ -682,7 +690,7 @@ Cache leeren apps/client/src/app/components/admin-overview/admin-overview.html - 181 + 187 @@ -702,7 +710,7 @@ apps/client/src/app/components/header/header.component.html - 164 + 189 @@ -746,7 +754,7 @@ apps/client/src/app/components/header/header.component.html - 178 + 203 @@ -758,7 +766,7 @@ apps/client/src/app/components/header/header.component.html - 188 + 213 @@ -778,7 +786,7 @@ apps/client/src/app/components/header/header.component.html - 196 + 221 apps/client/src/app/pages/accounts/accounts-page.html @@ -794,7 +802,7 @@ apps/client/src/app/components/header/header.component.html - 212 + 237 @@ -802,7 +810,7 @@ Ressourcen apps/client/src/app/app.component.html - 59 + 60 apps/client/src/app/components/header/header.component.html @@ -810,7 +818,7 @@ apps/client/src/app/components/header/header.component.html - 223 + 248 apps/client/src/app/pages/resources/resources-page.html @@ -822,7 +830,7 @@ Preise apps/client/src/app/app.component.html - 85 + 86 apps/client/src/app/components/header/header.component.html @@ -830,11 +838,19 @@ apps/client/src/app/components/header/header.component.html - 235 + 260 apps/client/src/app/components/header/header.component.html - 304 + 329 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 179 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 179 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -950,7 +966,7 @@ Über apps/client/src/app/app.component.html - 65 + 66 apps/client/src/app/components/header/header.component.html @@ -958,7 +974,7 @@ apps/client/src/app/components/header/header.component.html - 291 + 316 @@ -966,7 +982,7 @@ Ich apps/client/src/app/components/header/header.component.html - 145 + 170 @@ -974,7 +990,7 @@ Mein Ghostfolio apps/client/src/app/components/header/header.component.html - 203 + 228 @@ -982,7 +998,7 @@ Über Ghostfolio apps/client/src/app/components/header/header.component.html - 243 + 268 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -994,11 +1010,11 @@ Features apps/client/src/app/app.component.html - 72 + 73 apps/client/src/app/components/header/header.component.html - 278 + 303 apps/client/src/app/pages/features/features-page.html @@ -1010,11 +1026,11 @@ Märkte apps/client/src/app/app.component.html - 57 + 58 apps/client/src/app/components/header/header.component.html - 320 + 345 apps/client/src/app/components/home-market/home-market.html @@ -1042,7 +1058,7 @@ Einloggen apps/client/src/app/components/header/header.component.ts - 131 + 169 apps/client/src/app/pages/webauthn/webauthn-page-routing.module.ts @@ -1054,7 +1070,7 @@ Ups! Falsches Sicherheits-Token. apps/client/src/app/components/header/header.component.ts - 145 + 183 @@ -1106,7 +1122,7 @@ apps/client/src/app/pages/landing/landing-page.html - 430 + 435 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html @@ -1150,7 +1166,7 @@ Einloggen apps/client/src/app/components/header/header.component.html - 333 + 358 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1276,7 +1292,7 @@ apps/client/src/app/pages/portfolio/fire/fire-page.html - 150 + 111 @@ -1340,7 +1356,7 @@ Sektoren apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 132 + 125 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1356,7 +1372,7 @@ Länder apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 142 + 135 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1516,7 +1532,7 @@ Datenschutzbestimmungen apps/client/src/app/app.component.html - 89 + 90 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html @@ -1528,7 +1544,7 @@ Blog apps/client/src/app/app.component.html - 67 + 68 apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html @@ -1608,7 +1624,7 @@ Changelog apps/client/src/app/app.component.html - 70 + 71 apps/client/src/app/pages/about/changelog/changelog-page.html @@ -1620,7 +1636,7 @@ Lizenz apps/client/src/app/app.component.html - 79 + 80 apps/client/src/app/pages/about/license/license-page.html @@ -1644,47 +1660,47 @@ Mein Ghostfolio apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 12 + 32 Please enter your coupon code: Bitte gebe deinen Gutscheincode ein: - apps/client/src/app/pages/user-account/user-account-page.component.ts - 263 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 110 Could not redeem coupon code Gutscheincode konnte nicht eingelöst werden - apps/client/src/app/pages/user-account/user-account-page.component.ts - 273 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 120 Coupon code has been redeemed Gutscheincode wurde eingelöst - apps/client/src/app/pages/user-account/user-account-page.component.ts - 285 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 132 Reload Neu laden - apps/client/src/app/pages/user-account/user-account-page.component.ts - 286 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 133 Do you really want to remove this sign in method? Möchtest du diese Anmeldemethode wirklich löschen? - apps/client/src/app/pages/user-account/user-account-page.component.ts - 332 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 184 @@ -1694,10 +1710,6 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 75 - - apps/client/src/app/pages/user-account/user-account-page.html - 4 - libs/ui/src/lib/activities-table/activities-table.component.html 379 @@ -1707,128 +1719,128 @@ Membership Mitgliedschaft - apps/client/src/app/pages/user-account/user-account-page.html - 12 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 2 Upgrade Upgrade - apps/client/src/app/pages/user-account/user-account-page.html - 39 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 26 per year pro Jahr - apps/client/src/app/pages/pricing/pricing-page.html - 332 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 41 - apps/client/src/app/pages/user-account/user-account-page.html - 56 + apps/client/src/app/pages/pricing/pricing-page.html + 332 Try Premium Premium ausprobieren - apps/client/src/app/pages/user-account/user-account-page.html - 64 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 49 Redeem Coupon Gutschein einlösen - apps/client/src/app/pages/user-account/user-account-page.html - 77 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 62 Presenter View Präsentationsansicht - apps/client/src/app/pages/user-account/user-account-page.html - 84 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 7 Base Currency Basiswährung - apps/client/src/app/pages/user-account/user-account-page.html - 103 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 26 Locale Lokalität - apps/client/src/app/pages/user-account/user-account-page.html - 173 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 90 Date and number format Datums- und Zahlenformat - apps/client/src/app/pages/user-account/user-account-page.html - 175 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 92 Zen Mode Zen Modus - apps/client/src/app/pages/features/features-page.html - 192 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 136 - apps/client/src/app/pages/user-account/user-account-page.html - 227 + apps/client/src/app/pages/features/features-page.html + 192 - - Sign in with fingerprint + + Sign in with fingerprint Einloggen mit Fingerabdruck - apps/client/src/app/pages/user-account/user-account-page.html - 244,246 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 153 User ID Benutzer ID - apps/client/src/app/pages/user-account/user-account-page.html - 277 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 184 Granted Access Zugangsberechtigung - apps/client/src/app/pages/user-account/user-account-page.html - 295 + apps/client/src/app/components/user-account-access/user-account-access.html + 5 Grant access Zugang gewähren - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 2 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 7 Public Öffentlich - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 19 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 @@ -1844,7 +1856,7 @@ Konto aktualisieren apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 2 + 7 @@ -1852,7 +1864,7 @@ Konto hinzufügen apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 3 + 8 @@ -1868,15 +1880,15 @@ Währung apps/client/src/app/components/accounts-table/accounts-table.component.html - 48 + 59 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 69 + 62 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 13 + 22 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1896,11 +1908,11 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 110 + 121 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 23 + 32 @@ -1912,11 +1924,11 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 65 + 76 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 36 + 44 @@ -1924,7 +1936,7 @@ Konto ID apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 68 + 89 @@ -1976,7 +1988,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 44 + 33 apps/client/src/app/pages/zen/zen-page-routing.module.ts @@ -1996,7 +2008,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 59 + 48 apps/client/src/app/pages/markets/markets-page-routing.module.ts @@ -2176,7 +2188,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 49 + 38 apps/client/src/app/pages/portfolio/holdings/holdings-page-routing.module.ts @@ -2202,6 +2214,10 @@ apps/client/src/app/pages/public/public-page.html 14 + + libs/ui/src/lib/assistant/assistant.html + 46 + Update activity @@ -2296,11 +2312,11 @@ Kommentar apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 178 + 182 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 47 + 72 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2316,7 +2332,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 93 + 86 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2587,8 +2603,8 @@ Language Sprache - apps/client/src/app/pages/user-account/user-account-page.html - 127 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 47 @@ -2596,7 +2612,7 @@ Registrieren apps/client/src/app/components/header/header.component.html - 345 + 370 @@ -2684,7 +2700,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 102 + 95 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2700,7 +2716,7 @@ Sektor apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 117 + 110 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2712,7 +2728,7 @@ Land apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 126 + 119 apps/client/src/app/components/admin-users/admin-users.html @@ -2891,8 +2907,8 @@ 15 - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 6 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 11 @@ -2907,8 +2923,8 @@ Experimental Features Experimentelle Funktionen - apps/client/src/app/pages/user-account/user-account-page.html - 262 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 169 @@ -2947,40 +2963,40 @@ Auto Automatisch - apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 35 Appearance Aussehen - apps/client/src/app/pages/user-account/user-account-page.html - 201 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 113 Auto Automatisch - apps/client/src/app/pages/user-account/user-account-page.html - 216 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 125 Light Hell - apps/client/src/app/pages/user-account/user-account-page.html - 217 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 126 Dark Dunkel - apps/client/src/app/pages/user-account/user-account-page.html - 218 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 127 @@ -3240,35 +3256,35 @@ Community apps/client/src/app/app.component.html - 104 + 105 - apps/client/src/app/pages/features/features-page.html - 259 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 61 - apps/client/src/app/pages/user-account/user-account-page.html - 144 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 65 - apps/client/src/app/pages/user-account/user-account-page.html - 148 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 69 - apps/client/src/app/pages/user-account/user-account-page.html - 152 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 73 - apps/client/src/app/pages/user-account/user-account-page.html - 156 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 77 - apps/client/src/app/pages/user-account/user-account-page.html - 160 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 81 - apps/client/src/app/pages/user-account/user-account-page.html - 164 + apps/client/src/app/pages/features/features-page.html + 259 @@ -3292,7 +3308,7 @@ Symbol Zuordnung apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 156 + 160 @@ -3328,7 +3344,7 @@ Benutzer Registrierung apps/client/src/app/components/admin-overview/admin-overview.html - 76 + 82 @@ -3396,7 +3412,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 54 + 43 @@ -3435,8 +3451,8 @@ Valid until Gültig bis - apps/client/src/app/pages/user-account/user-account-page.html - 24 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 17 @@ -3487,28 +3503,28 @@ 23 - + Protection for sensitive information like absolute performances and quantity values Ausblenden von sensiblen Informationen wie absoluter Performance und Stückzahl - apps/client/src/app/pages/user-account/user-account-page.html - 85,88 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 8,11 - + Distraction-free experience for turbulent times Unbeschwertes Erlebnis für turbulente Zeiten - apps/client/src/app/pages/user-account/user-account-page.html - 228,230 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 137,139 - + Sneak peek at upcoming functionality Vorschau auf kommende Funktionalität - apps/client/src/app/pages/user-account/user-account-page.html - 263,265 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 170,172 @@ -3744,7 +3760,7 @@ apps/client/src/app/pages/portfolio/fire/fire-page.html - 137 + 150 @@ -3887,8 +3903,8 @@ Renew Erneuern - apps/client/src/app/pages/user-account/user-account-page.html - 44 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 29 @@ -3980,7 +3996,7 @@ Möchtest du diese Plattform wirklich löschen? apps/client/src/app/components/admin-platform/admin-platform.component.ts - 76 + 78 @@ -4042,6 +4058,14 @@ apps/client/src/app/pages/admin/admin-page.component.ts 31 + + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 17 + + + apps/client/src/app/pages/user-account/user-account-page.component.ts + 34 + Equity @@ -4059,14 +4083,6 @@ 15 - - Set as Benchmark - Als Benchmark setzen - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 45 - - Manage Benchmarks Benchmarks verwalten @@ -4136,7 +4152,7 @@ Private Finanzen apps/client/src/app/app.component.html - 54 + 55 @@ -4144,7 +4160,7 @@ Häufig gestellte Fragen (FAQ) apps/client/src/app/app.component.html - 75 + 76 @@ -4356,7 +4372,7 @@ Scraper Konfiguration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 167 + 171 @@ -4494,6 +4510,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 63 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 63 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 63 + Origin @@ -4606,6 +4630,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 68 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 68 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 68 + Region @@ -4718,6 +4750,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 73 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 73 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 73 + Available in @@ -4830,6 +4870,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 78,80 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 78,80 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 78,80 + ✅ Yes @@ -4942,6 +4990,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 100 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 100 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 100 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 107 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 107 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 107 @@ -5158,6 +5222,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 121 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 121 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 121 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 132 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 132 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 132 @@ -5374,6 +5454,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 146 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 146 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 146 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 153 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 153 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 153 @@ -5590,6 +5686,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 165 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 165 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 165 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 172 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 172 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 172 @@ -5810,6 +5922,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 102 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 102 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 102 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 125 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 125 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 125 @@ -6026,6 +6154,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 136 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 136 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 136 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 148 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 148 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 148 @@ -6242,6 +6386,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 155 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 155 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 155 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 167 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 167 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 167 @@ -6458,6 +6618,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 174 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 174 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 174 + ❌ No @@ -6570,6 +6738,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 109,110 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 109,110 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 109,110 + Self-Hosting @@ -6682,6 +6858,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 114,116 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 114,116 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 114,116 + Use anonymously @@ -6794,6 +6978,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 141,143 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 141,143 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 141,143 + Free Plan @@ -6906,6 +7098,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 160,162 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 160,162 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 160,162 + Notes @@ -7018,6 +7218,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 191 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. @@ -7130,6 +7338,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 215,218 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 215,218 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 215,218 + Personal Finance Tools @@ -7242,6 +7458,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 287 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 287 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 287 + Guides @@ -7447,8 +7671,8 @@ Biometric Authentication Biometrische Authentifizierung - apps/client/src/app/pages/user-account/user-account-page.html - 243 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 152 @@ -7531,8 +7755,8 @@ Export Data Daten exportieren - apps/client/src/app/pages/user-account/user-account-page.html - 284 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 191 @@ -7624,7 +7848,7 @@ apps/client/src/app/pages/landing/landing-page.html - 426,428 + 431,433 @@ -7816,7 +8040,7 @@ Nutzer aus aller Welt verwenden Ghostfolio Premium apps/client/src/app/pages/landing/landing-page.html - 353,355 + 358,360 @@ -7824,7 +8048,7 @@ Wie funktioniert Ghostfolio ? apps/client/src/app/pages/landing/landing-page.html - 368,370 + 373,375 @@ -7832,7 +8056,7 @@ Registriere dich anonym* apps/client/src/app/pages/landing/landing-page.html - 377 + 382 @@ -7840,7 +8064,7 @@ * Keine E-Mail-Adresse oder Kreditkarte erforderlich apps/client/src/app/pages/landing/landing-page.html - 379 + 384 @@ -7848,7 +8072,7 @@ Füge historische Transaktionen hinzu apps/client/src/app/pages/landing/landing-page.html - 390,392 + 395,397 @@ -7856,7 +8080,7 @@ Erhalte nützliche Erkenntnisse über die Zusammensetzung deines Portfolios apps/client/src/app/pages/landing/landing-page.html - 402,404 + 407,409 @@ -7864,7 +8088,7 @@ Bist du bereit? apps/client/src/app/pages/landing/landing-page.html - 414 + 419 @@ -7872,7 +8096,7 @@ Melde dich jetzt an oder probiere die Live Demo aus apps/client/src/app/pages/landing/landing-page.html - 415,418 + 420,423 @@ -7884,7 +8108,7 @@ apps/client/src/app/pages/landing/landing-page.html - 431 + 436 @@ -7900,7 +8124,7 @@ Beginne mit nur 3 Schritten apps/client/src/app/pages/landing/landing-page.html - 371 + 376 @@ -7932,11 +8156,11 @@ apps/client/src/app/components/header/header.component.ts - 47 + 72 apps/client/src/app/components/header/header.component.ts - 52 + 77 apps/client/src/app/pages/about/overview/about-overview-page.component.ts @@ -7994,6 +8218,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts 26 @@ -8062,6 +8290,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts 26 @@ -8104,11 +8336,11 @@ apps/client/src/app/components/header/header.component.ts - 46 + 71 apps/client/src/app/components/header/header.component.ts - 51 + 76 apps/client/src/app/pages/about/about-page.component.ts @@ -8178,6 +8410,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts 25 @@ -8246,6 +8482,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts 25 @@ -8308,11 +8548,11 @@ apps/client/src/app/components/header/header.component.ts - 48 + 73 apps/client/src/app/components/header/header.component.ts - 53 + 78 apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts @@ -8340,11 +8580,11 @@ apps/client/src/app/components/header/header.component.ts - 49 + 74 apps/client/src/app/components/header/header.component.ts - 54 + 79 apps/client/src/app/components/home-summary/home-summary.component.ts @@ -8354,6 +8594,10 @@ apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts 14 + + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 37 + apps/client/src/app/core/http-response.interceptor.ts 80 @@ -8400,7 +8644,7 @@ apps/client/src/app/components/header/header.component.ts - 55 + 80 apps/client/src/app/core/auth.guard.ts @@ -8436,11 +8680,11 @@ apps/client/src/app/components/header/header.component.ts - 50 + 75 apps/client/src/app/components/header/header.component.ts - 56 + 81 apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts @@ -8458,6 +8702,10 @@ apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts 14 + + apps/client/src/app/pages/features/features-page.component.ts + 18 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts 14 @@ -8486,6 +8734,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts 28 @@ -8554,6 +8806,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts 28 @@ -8718,6 +8974,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 8 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. @@ -8830,6 +9094,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 13,25 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. @@ -8942,6 +9214,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 26,36 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + Let’s dive deeper into the detailed comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. @@ -9054,6 +9334,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 37,43 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,43 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,43 + Starting from / year @@ -9166,6 +9454,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 180,182 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 180,182 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 180,182 + Starting from / year @@ -9278,6 +9574,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 185,186 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185,186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185,186 + open-source-alternative-to @@ -9402,6 +9706,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 199,208 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 199,208 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 199,208 + Ready to take your investments to the next level? @@ -9514,6 +9826,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 211,214 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 211,214 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 211,214 + Get Started @@ -9626,29 +9946,37 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 220,222 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,222 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,222 + Switzerland Schweiz apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 49 + 51 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 61 + 63 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 333 + 351 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 344 + 362 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 345 + 363 @@ -9656,15 +9984,15 @@ Weltweit apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 51 + 53 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 182 + 193 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 283 + 294 @@ -9672,39 +10000,43 @@ Vereinigte Staaten von Amerika apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 80 + 82 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 114 + 116 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 168 + 126 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 193 + 179 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 195 + 204 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 259 + 206 apps/client/src/app/pages/resources/personal-finance-tools/products.ts 270 + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 281 + Belgium Belgien apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 92 + 94 @@ -9712,31 +10044,31 @@ Deutschland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 69 + 71 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 103 + 105 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 137 + 148 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 147 + 158 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 157 + 168 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 180 + 191 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 215 + 226 @@ -9744,7 +10076,7 @@ Österreich apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 125 + 136 @@ -9752,7 +10084,7 @@ Italien apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 226 + 237 @@ -9760,7 +10092,7 @@ Niederlande apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 236 + 247 @@ -9768,7 +10100,7 @@ Thailand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 248 + 259 @@ -9776,7 +10108,7 @@ Neuseeland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 281 + 292 @@ -9784,11 +10116,11 @@ Tschechische Republik apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 292 + 303 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 322 + 340 @@ -9912,7 +10244,7 @@ Möchtest du diesen Tag wirklich löschen? apps/client/src/app/components/admin-tag/admin-tag.component.ts - 76 + 78 @@ -9936,11 +10268,11 @@ Frankreich apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 303 + 314 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 312 + 330 @@ -9956,7 +10288,7 @@ Währungsklumpenrisiken apps/client/src/app/pages/portfolio/fire/fire-page.html - 111 + 124 @@ -9964,7 +10296,115 @@ Kontoklumpenrisiken apps/client/src/app/pages/portfolio/fire/fire-page.html - 124 + 137 + + + + Transfer Cash Balance + Cash-Bestand Transfer + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 8 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + + Benchmark + Benchmark + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 154 + + + + Version + Version + + apps/client/src/app/components/admin-overview/admin-overview.html + 7 + + + + Settings + Einstellungen + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 + + + + From + Von + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 + + + + To + Nach + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 21 + + + + Transfer + Transferieren + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 50 + + + + Finland + Finnland + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 322 + + + + Membership + Mitgliedschaft + + 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 + + + + Access + Zugang + + 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 + + + + Find holding... + Finde Position... + + libs/ui/src/lib/assistant/assistant.component.ts + 87 + + + + No entries... + Keine Einträge vorhanden... + + libs/ui/src/lib/assistant/assistant.html + 62 diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index bbb2d41a5..f9c69808f 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -23,7 +23,7 @@ El riesgo de pérdida en trading puede ser importante. No es aconsejable invertir dinero que puedas necesitar a corto plazo. apps/client/src/app/app.component.html - 174,175 + 175,176 @@ -43,15 +43,15 @@ apps/client/src/app/components/admin-jobs/admin-jobs.html - 20 + 28 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 12 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 22 - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 17 + 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/activities-table.component.html @@ -95,11 +95,11 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 93 + 104 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 88 + 81 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -123,7 +123,7 @@ Nombre apps/client/src/app/components/accounts-table/accounts-table.component.html - 22 + 33 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -143,7 +143,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 7 + 12 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -163,7 +163,7 @@ Total apps/client/src/app/components/accounts-table/accounts-table.component.html - 38 + 49 libs/ui/src/lib/activities-table/activities-table.component.html @@ -175,11 +175,15 @@ Valor apps/client/src/app/components/accounts-table/accounts-table.component.html - 145 + 156 apps/client/src/app/components/accounts-table/accounts-table.component.html - 180 + 191 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 31 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -227,7 +231,7 @@ Edita apps/client/src/app/components/accounts-table/accounts-table.component.html - 246 + 257 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -247,7 +251,7 @@ Elimina apps/client/src/app/components/accounts-table/accounts-table.component.html - 254 + 265 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -271,7 +275,7 @@ ¿Estás seguro de eliminar esta cuenta? apps/client/src/app/components/accounts-table/accounts-table.component.ts - 82 + 83 @@ -279,7 +283,7 @@ Elimina los trabajos apps/client/src/app/components/admin-jobs/admin-jobs.html - 38 + 140 @@ -287,7 +291,7 @@ Símbolo apps/client/src/app/components/admin-jobs/admin-jobs.html - 21 + 50 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -295,7 +299,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 64 + 57 @@ -303,7 +307,7 @@ Fuente de datos apps/client/src/app/components/admin-jobs/admin-jobs.html - 22 + 59 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -319,7 +323,7 @@ Intentos apps/client/src/app/components/admin-jobs/admin-jobs.html - 23 + 68 @@ -327,7 +331,7 @@ Creado apps/client/src/app/components/admin-jobs/admin-jobs.html - 24 + 77 @@ -335,7 +339,7 @@ Finalizado apps/client/src/app/components/admin-jobs/admin-jobs.html - 25 + 86 @@ -343,7 +347,7 @@ Estado apps/client/src/app/components/admin-jobs/admin-jobs.html - 26 + 95 @@ -351,7 +355,7 @@ Perfil del activo apps/client/src/app/components/admin-jobs/admin-jobs.html - 55 + 37 @@ -359,7 +363,7 @@ Datos históricos del mercado apps/client/src/app/components/admin-jobs/admin-jobs.html - 60 + 42 @@ -367,7 +371,7 @@ Visualiza los datos apps/client/src/app/components/admin-jobs/admin-jobs.html - 115 + 155 @@ -375,7 +379,7 @@ Visualiza Stacktrace apps/client/src/app/components/admin-jobs/admin-jobs.html - 122 + 162 @@ -383,7 +387,7 @@ Elimina el trabajo apps/client/src/app/components/admin-jobs/admin-jobs.html - 125 + 165 @@ -431,7 +435,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 191 + 195 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -445,9 +449,17 @@ apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html 13 + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 30 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 79 + 95 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 43 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -457,10 +469,6 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 37 - - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 25 - Save @@ -471,7 +479,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 198 + 202 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -485,18 +493,18 @@ apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html 20 + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 37 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 86 + 102 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 364 - - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 32 - First Activity @@ -507,7 +515,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 79 + 72 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -519,7 +527,7 @@ Recuento de actividad apps/client/src/app/components/admin-overview/admin-overview.html - 17 + 23 @@ -535,7 +543,7 @@ Por favor, añade una divisa: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 112 + 114 @@ -543,7 +551,7 @@ ¿Estás seguro de eliminar este cupón? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 126 + 128 @@ -551,7 +559,7 @@ ¿Estás seguro de eliminar esta divisa? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 139 + 141 @@ -559,7 +567,7 @@ ¿Estás seguro de limpiar la caché? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 156 + 158 @@ -567,7 +575,7 @@ Por favor, establece tu mensaje del sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 186 + 188 @@ -575,7 +583,7 @@ Número de usuarios apps/client/src/app/components/admin-overview/admin-overview.html - 7 + 13 @@ -583,7 +591,7 @@ por usario apps/client/src/app/components/admin-overview/admin-overview.html - 26 + 32 @@ -619,7 +627,7 @@ Tipos de cambio apps/client/src/app/components/admin-overview/admin-overview.html - 31 + 37 @@ -627,7 +635,7 @@ Añadir divisa apps/client/src/app/components/admin-overview/admin-overview.html - 70 + 76 @@ -635,7 +643,7 @@ Mensaje del sistema apps/client/src/app/components/admin-overview/admin-overview.html - 96 + 102 @@ -643,7 +651,7 @@ Establecer mensaje apps/client/src/app/components/admin-overview/admin-overview.html - 118 + 124 @@ -651,7 +659,7 @@ Modo de solo lectura apps/client/src/app/components/admin-overview/admin-overview.html - 86 + 92 @@ -659,7 +667,7 @@ Cupones apps/client/src/app/components/admin-overview/admin-overview.html - 126 + 132 @@ -667,7 +675,7 @@ Añadir apps/client/src/app/components/admin-overview/admin-overview.html - 170 + 176 @@ -675,7 +683,7 @@ Tareas domésticas apps/client/src/app/components/admin-overview/admin-overview.html - 177 + 183 @@ -683,7 +691,7 @@ Limpiar caché apps/client/src/app/components/admin-overview/admin-overview.html - 181 + 187 @@ -703,7 +711,7 @@ apps/client/src/app/components/header/header.component.html - 164 + 189 @@ -747,7 +755,7 @@ apps/client/src/app/components/header/header.component.html - 178 + 203 @@ -759,7 +767,7 @@ apps/client/src/app/components/header/header.component.html - 188 + 213 @@ -779,7 +787,7 @@ apps/client/src/app/components/header/header.component.html - 196 + 221 apps/client/src/app/pages/accounts/accounts-page.html @@ -795,7 +803,7 @@ apps/client/src/app/components/header/header.component.html - 212 + 237 @@ -803,7 +811,7 @@ Recursos apps/client/src/app/app.component.html - 59 + 60 apps/client/src/app/components/header/header.component.html @@ -811,7 +819,7 @@ apps/client/src/app/components/header/header.component.html - 223 + 248 apps/client/src/app/pages/resources/resources-page.html @@ -823,7 +831,7 @@ Precios apps/client/src/app/app.component.html - 85 + 86 apps/client/src/app/components/header/header.component.html @@ -831,11 +839,19 @@ apps/client/src/app/components/header/header.component.html - 235 + 260 apps/client/src/app/components/header/header.component.html - 304 + 329 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 179 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 179 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -951,7 +967,7 @@ Sobre apps/client/src/app/app.component.html - 65 + 66 apps/client/src/app/components/header/header.component.html @@ -959,7 +975,7 @@ apps/client/src/app/components/header/header.component.html - 291 + 316 @@ -967,7 +983,7 @@ apps/client/src/app/components/header/header.component.html - 145 + 170 @@ -975,7 +991,7 @@ Mi Ghostfolio apps/client/src/app/components/header/header.component.html - 203 + 228 @@ -983,7 +999,7 @@ Sobre Ghostfolio apps/client/src/app/components/header/header.component.html - 243 + 268 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -995,11 +1011,11 @@ Funcionalidades apps/client/src/app/app.component.html - 72 + 73 apps/client/src/app/components/header/header.component.html - 278 + 303 apps/client/src/app/pages/features/features-page.html @@ -1011,11 +1027,11 @@ Mercados apps/client/src/app/app.component.html - 57 + 58 apps/client/src/app/components/header/header.component.html - 320 + 345 apps/client/src/app/components/home-market/home-market.html @@ -1043,7 +1059,7 @@ Iniciar sesión apps/client/src/app/components/header/header.component.ts - 131 + 169 apps/client/src/app/pages/webauthn/webauthn-page-routing.module.ts @@ -1055,7 +1071,7 @@ Vaya! Token de seguridad incorrecto. apps/client/src/app/components/header/header.component.ts - 145 + 183 @@ -1107,7 +1123,7 @@ apps/client/src/app/pages/landing/landing-page.html - 430 + 435 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html @@ -1151,7 +1167,7 @@ Iniciar sesión apps/client/src/app/components/header/header.component.html - 333 + 358 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1274,7 +1290,7 @@ apps/client/src/app/pages/portfolio/fire/fire-page.html - 150 + 111 @@ -1338,7 +1354,7 @@ Sectores apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 132 + 125 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1354,7 +1370,7 @@ Países apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 142 + 135 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1514,7 +1530,7 @@ Política de privacidad apps/client/src/app/app.component.html - 89 + 90 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html @@ -1526,7 +1542,7 @@ Blog apps/client/src/app/app.component.html - 67 + 68 apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html @@ -1606,7 +1622,7 @@ Registro de cambios apps/client/src/app/app.component.html - 70 + 71 apps/client/src/app/pages/about/changelog/changelog-page.html @@ -1618,7 +1634,7 @@ Licencia de uso apps/client/src/app/app.component.html - 79 + 80 apps/client/src/app/pages/about/license/license-page.html @@ -1642,47 +1658,47 @@ Mi Ghostfolio apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 12 + 32 Please enter your coupon code: Por favor, ingresa tu código de cupón: - apps/client/src/app/pages/user-account/user-account-page.component.ts - 263 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 110 Could not redeem coupon code No se puede canjear este código de cupón - apps/client/src/app/pages/user-account/user-account-page.component.ts - 273 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 120 Coupon code has been redeemed El codigo de cupón ha sido canjeado - apps/client/src/app/pages/user-account/user-account-page.component.ts - 285 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 132 Reload Refrescar - apps/client/src/app/pages/user-account/user-account-page.component.ts - 286 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 133 Do you really want to remove this sign in method? ¿Estás seguro de eliminar este método de acceso? - apps/client/src/app/pages/user-account/user-account-page.component.ts - 332 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 184 @@ -1692,10 +1708,6 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 75 - - apps/client/src/app/pages/user-account/user-account-page.html - 4 - libs/ui/src/lib/activities-table/activities-table.component.html 379 @@ -1705,128 +1717,128 @@ Membership Suscripción - apps/client/src/app/pages/user-account/user-account-page.html - 12 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 2 Upgrade Mejorar - apps/client/src/app/pages/user-account/user-account-page.html - 39 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 26 per year por año - apps/client/src/app/pages/pricing/pricing-page.html - 332 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 41 - apps/client/src/app/pages/user-account/user-account-page.html - 56 + apps/client/src/app/pages/pricing/pricing-page.html + 332 Try Premium Prueba Premium - apps/client/src/app/pages/user-account/user-account-page.html - 64 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 49 Redeem Coupon Canjea el cupón - apps/client/src/app/pages/user-account/user-account-page.html - 77 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 62 Presenter View Vista del presentador - apps/client/src/app/pages/user-account/user-account-page.html - 84 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 7 Base Currency Divisa base - apps/client/src/app/pages/user-account/user-account-page.html - 103 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 26 Locale Ubicación - apps/client/src/app/pages/user-account/user-account-page.html - 173 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 90 Date and number format Formato de fecha y número - apps/client/src/app/pages/user-account/user-account-page.html - 175 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 92 Zen Mode Modo Zen - apps/client/src/app/pages/features/features-page.html - 192 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 136 - apps/client/src/app/pages/user-account/user-account-page.html - 227 + apps/client/src/app/pages/features/features-page.html + 192 - - Sign in with fingerprint - Accede con huella digital + + Sign in with fingerprint + Accede con huella digital - apps/client/src/app/pages/user-account/user-account-page.html - 244,246 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 153 User ID ID usuario - apps/client/src/app/pages/user-account/user-account-page.html - 277 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 184 Granted Access Acceso concedido - apps/client/src/app/pages/user-account/user-account-page.html - 295 + apps/client/src/app/components/user-account-access/user-account-access.html + 5 Grant access Conceder acceso - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 2 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 7 Public Público - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 19 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 @@ -1842,7 +1854,7 @@ Editar cuenta apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 2 + 7 @@ -1850,7 +1862,7 @@ Añadir cuenta apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 3 + 8 @@ -1866,15 +1878,15 @@ Divisa base apps/client/src/app/components/accounts-table/accounts-table.component.html - 48 + 59 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 69 + 62 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 13 + 22 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1894,11 +1906,11 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 110 + 121 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 23 + 32 @@ -1910,11 +1922,11 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 65 + 76 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 36 + 44 @@ -1922,7 +1934,7 @@ ID cuenta apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 68 + 89 @@ -1974,7 +1986,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 44 + 33 apps/client/src/app/pages/zen/zen-page-routing.module.ts @@ -1994,7 +2006,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 59 + 48 apps/client/src/app/pages/markets/markets-page-routing.module.ts @@ -2174,7 +2186,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 49 + 38 apps/client/src/app/pages/portfolio/holdings/holdings-page-routing.module.ts @@ -2200,6 +2212,10 @@ apps/client/src/app/pages/public/public-page.html 14 + + libs/ui/src/lib/assistant/assistant.html + 46 + Update activity @@ -2294,11 +2310,11 @@ Nota apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 178 + 182 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 47 + 72 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2314,7 +2330,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 93 + 86 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2585,8 +2601,8 @@ Language Idioma - apps/client/src/app/pages/user-account/user-account-page.html - 127 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 47 @@ -2594,7 +2610,7 @@ Comenzar apps/client/src/app/components/header/header.component.html - 345 + 370 @@ -2662,7 +2678,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 102 + 95 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2718,7 +2734,7 @@ Sector apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 117 + 110 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2730,7 +2746,7 @@ País apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 126 + 119 apps/client/src/app/components/admin-users/admin-users.html @@ -2897,16 +2913,16 @@ 15 - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 6 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 11 Experimental Features Funcionalidades experimentales - apps/client/src/app/pages/user-account/user-account-page.html - 262 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 169 @@ -2945,40 +2961,40 @@ Auto Automático - apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 35 Appearance Apariencia - apps/client/src/app/pages/user-account/user-account-page.html - 201 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 113 Auto Automático - apps/client/src/app/pages/user-account/user-account-page.html - 216 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 125 Light Claro - apps/client/src/app/pages/user-account/user-account-page.html - 217 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 126 Dark Oscuro - apps/client/src/app/pages/user-account/user-account-page.html - 218 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 127 @@ -3238,35 +3254,35 @@ Comunidad apps/client/src/app/app.component.html - 104 + 105 - apps/client/src/app/pages/features/features-page.html - 259 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 61 - apps/client/src/app/pages/user-account/user-account-page.html - 144 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 65 - apps/client/src/app/pages/user-account/user-account-page.html - 148 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 69 - apps/client/src/app/pages/user-account/user-account-page.html - 152 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 73 - apps/client/src/app/pages/user-account/user-account-page.html - 156 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 77 - apps/client/src/app/pages/user-account/user-account-page.html - 160 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 81 - apps/client/src/app/pages/user-account/user-account-page.html - 164 + apps/client/src/app/pages/features/features-page.html + 259 @@ -3290,7 +3306,7 @@ Mapeo de símbolos apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 156 + 160 @@ -3326,7 +3342,7 @@ User Signup apps/client/src/app/components/admin-overview/admin-overview.html - 76 + 82 @@ -3394,7 +3410,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 54 + 43 @@ -3433,8 +3449,8 @@ Valid until Valid until - apps/client/src/app/pages/user-account/user-account-page.html - 24 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 17 @@ -3485,28 +3501,28 @@ 23 - + Protection for sensitive information like absolute performances and quantity values Protection for sensitive information like absolute performances and quantity values - apps/client/src/app/pages/user-account/user-account-page.html - 85,88 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 8,11 - + Distraction-free experience for turbulent times Distraction-free experience for turbulent times - apps/client/src/app/pages/user-account/user-account-page.html - 228,230 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 137,139 - + Sneak peek at upcoming functionality Sneak peek at upcoming functionality - apps/client/src/app/pages/user-account/user-account-page.html - 263,265 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 170,172 @@ -3742,7 +3758,7 @@ apps/client/src/app/pages/portfolio/fire/fire-page.html - 137 + 150 @@ -3885,8 +3901,8 @@ Renew Renew - apps/client/src/app/pages/user-account/user-account-page.html - 44 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 29 @@ -3978,7 +3994,7 @@ Do you really want to delete this platform? apps/client/src/app/components/admin-platform/admin-platform.component.ts - 76 + 78 @@ -4040,6 +4056,14 @@ apps/client/src/app/pages/admin/admin-page.component.ts 31 + + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 17 + + + apps/client/src/app/pages/user-account/user-account-page.component.ts + 34 + Equity @@ -4057,14 +4081,6 @@ 15 - - Set as Benchmark - Set as Benchmark - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 45 - - Manage Benchmarks Manage Benchmarks @@ -4134,7 +4150,7 @@ Personal Finance apps/client/src/app/app.component.html - 54 + 55 @@ -4142,7 +4158,7 @@ Frequently Asked Questions (FAQ) apps/client/src/app/app.component.html - 75 + 76 @@ -4354,7 +4370,7 @@ Scraper Configuration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 167 + 171 @@ -4492,6 +4508,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 63 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 63 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 63 + Origin @@ -4604,6 +4628,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 68 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 68 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 68 + Region @@ -4716,6 +4748,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 73 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 73 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 73 + Available in @@ -4828,6 +4868,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 78,80 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 78,80 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 78,80 + ✅ Yes @@ -4940,6 +4988,18 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 100 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 100 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 100 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 107 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 107 @@ -5048,6 +5108,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 107 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 107 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 121 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 121 @@ -5156,6 +5224,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 121 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 121 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 132 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 132 @@ -5264,6 +5340,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 132 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 132 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 146 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 146 @@ -5372,6 +5456,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 146 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 146 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 153 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 153 @@ -5480,6 +5572,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 153 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 153 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 165 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 165 @@ -5588,6 +5688,18 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 165 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 165 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 172 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 172 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 172 @@ -5808,6 +5920,18 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 102 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 102 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 102 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 125 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 125 @@ -5916,6 +6040,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 125 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 125 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 136 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 136 @@ -6024,6 +6156,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 136 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 136 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 148 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 148 @@ -6132,6 +6272,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 148 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 148 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 155 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 155 @@ -6240,6 +6388,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 155 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 155 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 167 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 167 @@ -6348,6 +6504,18 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 167 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 167 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 174 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 174 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 174 @@ -6568,6 +6736,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 109,110 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 109,110 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 109,110 + Self-Hosting @@ -6680,6 +6856,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 114,116 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 114,116 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 114,116 + Use anonymously @@ -6792,6 +6976,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 141,143 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 141,143 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 141,143 + Free Plan @@ -6904,6 +7096,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 160,162 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 160,162 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 160,162 + Notes @@ -7016,6 +7216,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 191 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. @@ -7128,10 +7336,26 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 215,218 - - - Personal Finance Tools - Personal Finance Tools + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 215,218 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 215,218 + + + + Personal Finance Tools + Personal Finance Tools + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 287 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 287 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 287 @@ -7445,8 +7669,8 @@ Biometric Authentication Biometric Authentication - apps/client/src/app/pages/user-account/user-account-page.html - 243 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 152 @@ -7529,8 +7753,8 @@ Export Data Export Data - apps/client/src/app/pages/user-account/user-account-page.html - 284 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 191 @@ -7622,7 +7846,7 @@ apps/client/src/app/pages/landing/landing-page.html - 426,428 + 431,433 @@ -7814,7 +8038,7 @@ Members from around the globe are using Ghostfolio Premium apps/client/src/app/pages/landing/landing-page.html - 353,355 + 358,360 @@ -7822,7 +8046,7 @@ How does Ghostfolio work? apps/client/src/app/pages/landing/landing-page.html - 368,370 + 373,375 @@ -7830,7 +8054,7 @@ Sign up anonymously* apps/client/src/app/pages/landing/landing-page.html - 377 + 382 @@ -7838,7 +8062,7 @@ * no e-mail address nor credit card required apps/client/src/app/pages/landing/landing-page.html - 379 + 384 @@ -7846,7 +8070,7 @@ Add any of your historical transactions apps/client/src/app/pages/landing/landing-page.html - 390,392 + 395,397 @@ -7854,7 +8078,7 @@ Get valuable insights of your portfolio composition apps/client/src/app/pages/landing/landing-page.html - 402,404 + 407,409 @@ -7862,7 +8086,7 @@ Are you ready? apps/client/src/app/pages/landing/landing-page.html - 414 + 419 @@ -7870,7 +8094,7 @@ Join now or check out the example account apps/client/src/app/pages/landing/landing-page.html - 415,418 + 420,423 @@ -7882,7 +8106,7 @@ apps/client/src/app/pages/landing/landing-page.html - 431 + 436 @@ -7898,7 +8122,7 @@ Get started in only 3 steps apps/client/src/app/pages/landing/landing-page.html - 371 + 376 @@ -7930,11 +8154,11 @@ apps/client/src/app/components/header/header.component.ts - 47 + 72 apps/client/src/app/components/header/header.component.ts - 52 + 77 apps/client/src/app/pages/about/overview/about-overview-page.component.ts @@ -7992,6 +8216,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts 26 @@ -8060,6 +8288,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts 26 @@ -8102,11 +8334,11 @@ apps/client/src/app/components/header/header.component.ts - 46 + 71 apps/client/src/app/components/header/header.component.ts - 51 + 76 apps/client/src/app/pages/about/about-page.component.ts @@ -8176,6 +8408,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts 25 @@ -8244,6 +8480,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts 25 @@ -8306,11 +8546,11 @@ apps/client/src/app/components/header/header.component.ts - 48 + 73 apps/client/src/app/components/header/header.component.ts - 53 + 78 apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts @@ -8338,11 +8578,11 @@ apps/client/src/app/components/header/header.component.ts - 49 + 74 apps/client/src/app/components/header/header.component.ts - 54 + 79 apps/client/src/app/components/home-summary/home-summary.component.ts @@ -8352,6 +8592,10 @@ apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts 14 + + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 37 + apps/client/src/app/core/http-response.interceptor.ts 80 @@ -8398,7 +8642,7 @@ apps/client/src/app/components/header/header.component.ts - 55 + 80 apps/client/src/app/core/auth.guard.ts @@ -8434,11 +8678,11 @@ apps/client/src/app/components/header/header.component.ts - 50 + 75 apps/client/src/app/components/header/header.component.ts - 56 + 81 apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts @@ -8456,6 +8700,10 @@ apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts 14 + + apps/client/src/app/pages/features/features-page.component.ts + 18 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts 14 @@ -8484,6 +8732,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts 28 @@ -8552,6 +8804,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts 28 @@ -8716,6 +8972,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 8 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. @@ -8828,6 +9092,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 13,25 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. @@ -8940,6 +9212,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 26,36 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + Let’s dive deeper into the detailed comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. @@ -9052,6 +9332,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 37,43 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,43 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,43 + Starting from / year @@ -9164,6 +9452,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 180,182 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 180,182 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 180,182 + Starting from / year @@ -9276,6 +9572,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 185,186 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185,186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185,186 + open-source-alternative-to @@ -9400,6 +9704,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 199,208 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 199,208 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 199,208 + Ready to take your investments to the next level? @@ -9512,6 +9824,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 211,214 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 211,214 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 211,214 + Get Started @@ -9624,29 +9944,37 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 220,222 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,222 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,222 + Switzerland Switzerland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 49 + 51 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 61 + 63 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 333 + 351 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 344 + 362 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 345 + 363 @@ -9654,15 +9982,15 @@ Global apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 51 + 53 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 182 + 193 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 283 + 294 @@ -9670,39 +9998,43 @@ United States apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 80 + 82 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 114 + 116 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 168 + 126 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 193 + 179 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 195 + 204 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 259 + 206 apps/client/src/app/pages/resources/personal-finance-tools/products.ts 270 + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 281 + Belgium Belgium apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 92 + 94 @@ -9710,31 +10042,31 @@ Germany apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 69 + 71 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 103 + 105 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 137 + 148 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 147 + 158 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 157 + 168 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 180 + 191 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 215 + 226 @@ -9742,7 +10074,7 @@ Austria apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 125 + 136 @@ -9750,7 +10082,7 @@ Italy apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 226 + 237 @@ -9758,7 +10090,7 @@ Netherlands apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 236 + 247 @@ -9766,7 +10098,7 @@ Thailand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 248 + 259 @@ -9774,7 +10106,7 @@ New Zealand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 281 + 292 @@ -9782,11 +10114,11 @@ Czech Republic apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 292 + 303 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 322 + 340 @@ -9910,7 +10242,7 @@ Do you really want to delete this tag? apps/client/src/app/components/admin-tag/admin-tag.component.ts - 76 + 78 @@ -9934,11 +10266,11 @@ France apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 303 + 314 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 312 + 330 @@ -9954,7 +10286,7 @@ Currency Cluster Risks apps/client/src/app/pages/portfolio/fire/fire-page.html - 111 + 124 @@ -9962,7 +10294,115 @@ Account Cluster Risks apps/client/src/app/pages/portfolio/fire/fire-page.html - 124 + 137 + + + + Transfer Cash Balance + Transfer Cash Balance + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 8 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + + Benchmark + Benchmark + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 154 + + + + Version + Version + + apps/client/src/app/components/admin-overview/admin-overview.html + 7 + + + + Settings + Settings + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 + + + + From + From + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 + + + + To + To + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 21 + + + + Transfer + Transfer + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 50 + + + + Finland + Finland + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 322 + + + + Membership + 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 + + + + Access + 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 + + + + Find holding... + Find holding... + + libs/ui/src/lib/assistant/assistant.component.ts + 87 + + + + No entries... + No entries... + + libs/ui/src/lib/assistant/assistant.html + 62 diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index bdba67fad..68994b48e 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -6,7 +6,7 @@ Le risque de perte en investissant peut être important. Il est déconseillé d'investir de l'argent dont vous pourriez avoir besoin à court terme. apps/client/src/app/app.component.html - 174,175 + 175,176 @@ -17,8 +17,8 @@ 15 - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 6 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 11 @@ -38,15 +38,15 @@ apps/client/src/app/components/admin-jobs/admin-jobs.html - 20 + 28 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 12 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 22 - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 17 + 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/activities-table.component.html @@ -86,11 +86,11 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 65 + 76 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 36 + 44 @@ -106,11 +106,11 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 93 + 104 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 88 + 81 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -134,7 +134,7 @@ Nom apps/client/src/app/components/accounts-table/accounts-table.component.html - 22 + 33 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -154,7 +154,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 7 + 12 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -174,7 +174,7 @@ Total apps/client/src/app/components/accounts-table/accounts-table.component.html - 38 + 49 libs/ui/src/lib/activities-table/activities-table.component.html @@ -186,15 +186,15 @@ Devise apps/client/src/app/components/accounts-table/accounts-table.component.html - 48 + 59 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 69 + 62 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 13 + 22 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -214,11 +214,11 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 110 + 121 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 23 + 32 @@ -226,11 +226,15 @@ Valeur apps/client/src/app/components/accounts-table/accounts-table.component.html - 145 + 156 apps/client/src/app/components/accounts-table/accounts-table.component.html - 180 + 191 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 31 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -278,7 +282,7 @@ Modifier apps/client/src/app/components/accounts-table/accounts-table.component.html - 246 + 257 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -298,7 +302,7 @@ Supprimer apps/client/src/app/components/accounts-table/accounts-table.component.html - 254 + 265 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -322,7 +326,7 @@ Voulez-vous vraiment supprimer ce compte ? apps/client/src/app/components/accounts-table/accounts-table.component.ts - 82 + 83 @@ -330,7 +334,7 @@ Symbole apps/client/src/app/components/admin-jobs/admin-jobs.html - 21 + 50 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -338,7 +342,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 64 + 57 @@ -346,7 +350,7 @@ Source Données apps/client/src/app/components/admin-jobs/admin-jobs.html - 22 + 59 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -362,7 +366,7 @@ Tentatives apps/client/src/app/components/admin-jobs/admin-jobs.html - 23 + 68 @@ -370,7 +374,7 @@ Créé apps/client/src/app/components/admin-jobs/admin-jobs.html - 24 + 77 @@ -378,7 +382,7 @@ Terminé apps/client/src/app/components/admin-jobs/admin-jobs.html - 25 + 86 @@ -386,7 +390,7 @@ Statut apps/client/src/app/components/admin-jobs/admin-jobs.html - 26 + 95 @@ -394,7 +398,7 @@ Supprimer Tâches apps/client/src/app/components/admin-jobs/admin-jobs.html - 38 + 140 @@ -402,7 +406,7 @@ Profil d'Actifs apps/client/src/app/components/admin-jobs/admin-jobs.html - 55 + 37 @@ -410,7 +414,7 @@ Données de Marché Historiques apps/client/src/app/components/admin-jobs/admin-jobs.html - 60 + 42 @@ -418,7 +422,7 @@ Voir Données apps/client/src/app/components/admin-jobs/admin-jobs.html - 115 + 155 @@ -426,7 +430,7 @@ Voir la Stacktrace apps/client/src/app/components/admin-jobs/admin-jobs.html - 122 + 162 @@ -434,7 +438,7 @@ Supprimer Tâche apps/client/src/app/components/admin-jobs/admin-jobs.html - 125 + 165 @@ -482,7 +486,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 191 + 195 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -496,9 +500,17 @@ apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html 13 + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 30 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 79 + 95 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 43 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -508,10 +520,6 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 37 - - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 25 - Save @@ -522,7 +530,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 198 + 202 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -536,18 +544,18 @@ apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html 20 + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 37 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 86 + 102 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 364 - - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 32 - Filter by... @@ -566,7 +574,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 93 + 86 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -586,7 +594,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 102 + 95 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -606,7 +614,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 79 + 72 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -686,7 +694,7 @@ Secteur apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 117 + 110 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -698,7 +706,7 @@ Pays apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 126 + 119 apps/client/src/app/components/admin-users/admin-users.html @@ -714,7 +722,7 @@ Secteurs apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 132 + 125 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -730,7 +738,7 @@ Pays apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 142 + 135 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -742,7 +750,7 @@ Équivalence de Symboles apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 156 + 160 @@ -750,11 +758,11 @@ Note apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 178 + 182 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 47 + 72 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -766,7 +774,7 @@ Veuillez ajouter une devise : apps/client/src/app/components/admin-overview/admin-overview.component.ts - 112 + 114 @@ -774,7 +782,7 @@ Voulez-vous vraiment supprimer ce code promotionnel ? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 126 + 128 @@ -782,7 +790,7 @@ Voulez-vous vraiment supprimer cette devise ? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 139 + 141 @@ -790,7 +798,7 @@ Voulez-vous vraiment vider le cache ? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 156 + 158 @@ -798,7 +806,7 @@ Veuillez définir votre message système : apps/client/src/app/components/admin-overview/admin-overview.component.ts - 186 + 188 @@ -806,7 +814,7 @@ Nombre d'Utilisateurs apps/client/src/app/components/admin-overview/admin-overview.html - 7 + 13 @@ -814,7 +822,7 @@ Nombre d'Activités apps/client/src/app/components/admin-overview/admin-overview.html - 17 + 23 @@ -822,7 +830,7 @@ par Utilisateur apps/client/src/app/components/admin-overview/admin-overview.html - 26 + 32 @@ -830,7 +838,7 @@ Taux de Conversion apps/client/src/app/components/admin-overview/admin-overview.html - 31 + 37 @@ -838,7 +846,7 @@ Ajouter Devise apps/client/src/app/components/admin-overview/admin-overview.html - 70 + 76 @@ -862,7 +870,7 @@ Inscription de Nouveaux Utilisateurs apps/client/src/app/components/admin-overview/admin-overview.html - 76 + 82 @@ -870,7 +878,7 @@ Mode Lecture Seule apps/client/src/app/components/admin-overview/admin-overview.html - 86 + 92 @@ -878,7 +886,7 @@ Message Système apps/client/src/app/components/admin-overview/admin-overview.html - 96 + 102 @@ -886,7 +894,7 @@ Définir Message apps/client/src/app/components/admin-overview/admin-overview.html - 118 + 124 @@ -894,7 +902,7 @@ Codes promotionnels apps/client/src/app/components/admin-overview/admin-overview.html - 126 + 132 @@ -902,7 +910,7 @@ Ajouter apps/client/src/app/components/admin-overview/admin-overview.html - 170 + 176 @@ -910,7 +918,7 @@ Maintenance apps/client/src/app/components/admin-overview/admin-overview.html - 177 + 183 @@ -918,7 +926,7 @@ Vider le Cache apps/client/src/app/components/admin-overview/admin-overview.html - 181 + 187 @@ -938,7 +946,7 @@ apps/client/src/app/components/header/header.component.html - 164 + 189 @@ -966,7 +974,7 @@ apps/client/src/app/components/header/header.component.html - 196 + 221 apps/client/src/app/pages/accounts/accounts-page.html @@ -1050,7 +1058,7 @@ apps/client/src/app/components/header/header.component.html - 178 + 203 @@ -1062,7 +1070,7 @@ apps/client/src/app/components/header/header.component.html - 188 + 213 @@ -1074,7 +1082,7 @@ apps/client/src/app/components/header/header.component.html - 212 + 237 @@ -1082,7 +1090,7 @@ Ressources apps/client/src/app/app.component.html - 59 + 60 apps/client/src/app/components/header/header.component.html @@ -1090,7 +1098,7 @@ apps/client/src/app/components/header/header.component.html - 223 + 248 apps/client/src/app/pages/resources/resources-page.html @@ -1102,7 +1110,7 @@ Prix apps/client/src/app/app.component.html - 85 + 86 apps/client/src/app/components/header/header.component.html @@ -1110,11 +1118,19 @@ apps/client/src/app/components/header/header.component.html - 235 + 260 apps/client/src/app/components/header/header.component.html - 304 + 329 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 179 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 179 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -1230,7 +1246,7 @@ À propos apps/client/src/app/app.component.html - 65 + 66 apps/client/src/app/components/header/header.component.html @@ -1238,7 +1254,7 @@ apps/client/src/app/components/header/header.component.html - 291 + 316 @@ -1246,7 +1262,7 @@ Moi apps/client/src/app/components/header/header.component.html - 145 + 170 @@ -1254,7 +1270,7 @@ Mon Ghostfolio apps/client/src/app/components/header/header.component.html - 203 + 228 @@ -1262,7 +1278,7 @@ À propos de Ghostfolio apps/client/src/app/components/header/header.component.html - 243 + 268 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1274,11 +1290,11 @@ Fonctionnalités apps/client/src/app/app.component.html - 72 + 73 apps/client/src/app/components/header/header.component.html - 278 + 303 apps/client/src/app/pages/features/features-page.html @@ -1290,11 +1306,11 @@ Marchés apps/client/src/app/app.component.html - 57 + 58 apps/client/src/app/components/header/header.component.html - 320 + 345 apps/client/src/app/components/home-market/home-market.html @@ -1310,7 +1326,7 @@ Se connecter apps/client/src/app/components/header/header.component.html - 333 + 358 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1322,7 +1338,7 @@ Démarrer apps/client/src/app/components/header/header.component.html - 345 + 370 @@ -1330,7 +1346,7 @@ Se connecter apps/client/src/app/components/header/header.component.ts - 131 + 169 apps/client/src/app/pages/webauthn/webauthn-page-routing.module.ts @@ -1342,7 +1358,7 @@ Oups! Jeton de Sécurité Incorrect. apps/client/src/app/components/header/header.component.ts - 145 + 183 @@ -1450,7 +1466,7 @@ apps/client/src/app/pages/landing/landing-page.html - 430 + 435 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html @@ -1605,7 +1621,7 @@ apps/client/src/app/pages/portfolio/fire/fire-page.html - 150 + 111 @@ -1853,7 +1869,7 @@ Historique des modifications apps/client/src/app/app.component.html - 70 + 71 apps/client/src/app/pages/about/changelog/changelog-page.html @@ -1865,7 +1881,7 @@ License apps/client/src/app/app.component.html - 79 + 80 apps/client/src/app/pages/about/license/license-page.html @@ -1889,7 +1905,7 @@ Politique de Vie Privée apps/client/src/app/app.component.html - 89 + 90 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html @@ -1901,55 +1917,55 @@ Mon Ghostfolio apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 12 + 32 Auto Auto - apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 35 Please enter your coupon code: Veuillez entrer votre code promotionnel : - apps/client/src/app/pages/user-account/user-account-page.component.ts - 263 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 110 Could not redeem coupon code Le code promotionnel n'a pas pu être appliqué - apps/client/src/app/pages/user-account/user-account-page.component.ts - 273 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 120 Coupon code has been redeemed Le code promotionnel a été appliqué - apps/client/src/app/pages/user-account/user-account-page.component.ts - 285 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 132 Reload Rafraîchir - apps/client/src/app/pages/user-account/user-account-page.component.ts - 286 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 133 Do you really want to remove this sign in method? Voulez-vous vraiment supprimer cette méthode de connexion ? - apps/client/src/app/pages/user-account/user-account-page.component.ts - 332 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 184 @@ -1959,10 +1975,6 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 75 - - apps/client/src/app/pages/user-account/user-account-page.html - 4 - libs/ui/src/lib/activities-table/activities-table.component.html 379 @@ -1972,68 +1984,68 @@ Membership Adhésion - apps/client/src/app/pages/user-account/user-account-page.html - 12 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 2 Upgrade Mettre à niveau - apps/client/src/app/pages/user-account/user-account-page.html - 39 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 26 per year par an - apps/client/src/app/pages/pricing/pricing-page.html - 332 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 41 - apps/client/src/app/pages/user-account/user-account-page.html - 56 + apps/client/src/app/pages/pricing/pricing-page.html + 332 Try Premium Essayer Premium - apps/client/src/app/pages/user-account/user-account-page.html - 64 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 49 Redeem Coupon Utiliser un Code Promotionnel - apps/client/src/app/pages/user-account/user-account-page.html - 77 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 62 Presenter View Vue de Présentation - apps/client/src/app/pages/user-account/user-account-page.html - 84 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 7 Base Currency Devise de Base - apps/client/src/app/pages/user-account/user-account-page.html - 103 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 26 Language Langue - apps/client/src/app/pages/user-account/user-account-page.html - 127 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 47 @@ -2041,143 +2053,143 @@ Communauté apps/client/src/app/app.component.html - 104 + 105 - apps/client/src/app/pages/features/features-page.html - 259 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 61 - apps/client/src/app/pages/user-account/user-account-page.html - 144 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 65 - apps/client/src/app/pages/user-account/user-account-page.html - 148 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 69 - apps/client/src/app/pages/user-account/user-account-page.html - 152 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 73 - apps/client/src/app/pages/user-account/user-account-page.html - 156 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 77 - apps/client/src/app/pages/user-account/user-account-page.html - 160 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 81 - apps/client/src/app/pages/user-account/user-account-page.html - 164 + apps/client/src/app/pages/features/features-page.html + 259 Locale Paramètres régionaux - apps/client/src/app/pages/user-account/user-account-page.html - 173 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 90 Date and number format Format de date et d'heure - apps/client/src/app/pages/user-account/user-account-page.html - 175 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 92 Appearance Apparence - apps/client/src/app/pages/user-account/user-account-page.html - 201 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 113 Auto Auto - apps/client/src/app/pages/user-account/user-account-page.html - 216 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 125 Light Clair - apps/client/src/app/pages/user-account/user-account-page.html - 217 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 126 Dark Sombre - apps/client/src/app/pages/user-account/user-account-page.html - 218 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 127 Zen Mode Mode Zen - apps/client/src/app/pages/features/features-page.html - 192 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 136 - apps/client/src/app/pages/user-account/user-account-page.html - 227 + apps/client/src/app/pages/features/features-page.html + 192 - - Sign in with fingerprint - Se connecter avec empreinte + + Sign in with fingerprint + Se connecter avec empreinte - apps/client/src/app/pages/user-account/user-account-page.html - 244,246 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 153 Experimental Features Fonctionnalités expérimentales - apps/client/src/app/pages/user-account/user-account-page.html - 262 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 169 User ID ID d'utilisateur - apps/client/src/app/pages/user-account/user-account-page.html - 277 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 184 Granted Access Accès donné - apps/client/src/app/pages/user-account/user-account-page.html - 295 + apps/client/src/app/components/user-account-access/user-account-access.html + 5 Grant access Donner accès - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 2 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 7 Public Public - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 19 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 @@ -2193,7 +2205,7 @@ Mettre à jour compte apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 2 + 7 @@ -2201,7 +2213,7 @@ Ajouter compte apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 3 + 8 @@ -2217,7 +2229,7 @@ ID du compte apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 68 + 89 @@ -2277,7 +2289,7 @@ Blog apps/client/src/app/app.component.html - 67 + 68 apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html @@ -2385,7 +2397,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 49 + 38 apps/client/src/app/pages/portfolio/holdings/holdings-page-routing.module.ts @@ -2409,7 +2421,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 54 + 43 @@ -2421,7 +2433,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 59 + 48 apps/client/src/app/pages/markets/markets-page-routing.module.ts @@ -2855,6 +2867,10 @@ apps/client/src/app/pages/public/public-page.html 14 + + libs/ui/src/lib/assistant/assistant.html + 46 + Pricing @@ -3013,7 +3029,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 44 + 33 apps/client/src/app/pages/zen/zen-page-routing.module.ts @@ -3432,8 +3448,8 @@ Valid until Valide jusqu'au - apps/client/src/app/pages/user-account/user-account-page.html - 24 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 17 @@ -3484,28 +3500,28 @@ 23 - + Protection for sensitive information like absolute performances and quantity values - Protection pour les informations sensibles telles que la performance absolue et les montants + Protection pour les informations sensibles telles que la performance absolue et les montants - apps/client/src/app/pages/user-account/user-account-page.html - 85,88 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 8,11 - + Distraction-free experience for turbulent times - Expérience sans distraction pour les périodes tumultueuses + Expérience sans distraction pour les périodes tumultueuses - apps/client/src/app/pages/user-account/user-account-page.html - 228,230 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 137,139 - + Sneak peek at upcoming functionality - Avant-première de fonctionnalités futures + Avant-première de fonctionnalités futures - apps/client/src/app/pages/user-account/user-account-page.html - 263,265 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 170,172 @@ -3741,7 +3757,7 @@ apps/client/src/app/pages/portfolio/fire/fire-page.html - 137 + 150 @@ -3884,8 +3900,8 @@ Renew Renouveler - apps/client/src/app/pages/user-account/user-account-page.html - 44 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 29 @@ -3977,7 +3993,7 @@ Voulez-vous vraiment supprimer cette plateforme ? apps/client/src/app/components/admin-platform/admin-platform.component.ts - 76 + 78 @@ -4039,6 +4055,14 @@ apps/client/src/app/pages/admin/admin-page.component.ts 31 + + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 17 + + + apps/client/src/app/pages/user-account/user-account-page.component.ts + 34 + Equity @@ -4056,14 +4080,6 @@ 15 - - Set as Benchmark - Mettre comme Référence - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 45 - - Manage Benchmarks Gérer les Références @@ -4133,7 +4149,7 @@ Finance Personnelle apps/client/src/app/app.component.html - 54 + 55 @@ -4141,7 +4157,7 @@ Questions Fréquentes (FAQ) apps/client/src/app/app.component.html - 75 + 76 @@ -4353,7 +4369,7 @@ Scraper Configuration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 167 + 171 @@ -4491,6 +4507,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 63 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 63 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 63 + Origin @@ -4603,6 +4627,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 68 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 68 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 68 + Region @@ -4715,6 +4747,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 73 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 73 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 73 + Available in @@ -4827,6 +4867,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 78,80 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 78,80 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 78,80 + ✅ Yes @@ -4939,6 +4987,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 100 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 100 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 100 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 107 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 107 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 107 @@ -5155,6 +5219,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 121 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 121 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 121 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 132 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 132 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 132 @@ -5371,6 +5451,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 146 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 146 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 146 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 153 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 153 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 153 @@ -5587,6 +5683,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 165 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 165 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 165 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 172 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 172 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 172 @@ -5807,6 +5919,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 102 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 102 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 102 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 125 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 125 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 125 @@ -6023,6 +6151,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 136 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 136 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 136 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 148 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 148 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 148 @@ -6239,6 +6383,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 155 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 155 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 155 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 167 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 167 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 167 @@ -6455,6 +6615,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 174 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 174 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 174 + ❌ No @@ -6567,6 +6735,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 109,110 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 109,110 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 109,110 + Self-Hosting @@ -6679,6 +6855,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 114,116 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 114,116 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 114,116 + Use anonymously @@ -6791,6 +6975,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 141,143 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 141,143 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 141,143 + Free Plan @@ -6903,6 +7095,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 160,162 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 160,162 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 160,162 + Notes @@ -7015,6 +7215,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 191 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. @@ -7127,10 +7335,26 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 215,218 - - - Personal Finance Tools - Personal Finance Tools + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 215,218 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 215,218 + + + + Personal Finance Tools + Personal Finance Tools + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 287 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 287 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 287 @@ -7444,8 +7668,8 @@ Biometric Authentication Biometric Authentication - apps/client/src/app/pages/user-account/user-account-page.html - 243 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 152 @@ -7528,8 +7752,8 @@ Export Data Export Data - apps/client/src/app/pages/user-account/user-account-page.html - 284 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 191 @@ -7621,7 +7845,7 @@ apps/client/src/app/pages/landing/landing-page.html - 426,428 + 431,433 @@ -7813,7 +8037,7 @@ Members from around the globe are using Ghostfolio Premium apps/client/src/app/pages/landing/landing-page.html - 353,355 + 358,360 @@ -7821,7 +8045,7 @@ How does Ghostfolio work? apps/client/src/app/pages/landing/landing-page.html - 368,370 + 373,375 @@ -7829,7 +8053,7 @@ Sign up anonymously* apps/client/src/app/pages/landing/landing-page.html - 377 + 382 @@ -7837,7 +8061,7 @@ * no e-mail address nor credit card required apps/client/src/app/pages/landing/landing-page.html - 379 + 384 @@ -7845,7 +8069,7 @@ Add any of your historical transactions apps/client/src/app/pages/landing/landing-page.html - 390,392 + 395,397 @@ -7853,7 +8077,7 @@ Get valuable insights of your portfolio composition apps/client/src/app/pages/landing/landing-page.html - 402,404 + 407,409 @@ -7861,7 +8085,7 @@ Are you ready? apps/client/src/app/pages/landing/landing-page.html - 414 + 419 @@ -7869,7 +8093,7 @@ Join now or check out the example account apps/client/src/app/pages/landing/landing-page.html - 415,418 + 420,423 @@ -7881,7 +8105,7 @@ apps/client/src/app/pages/landing/landing-page.html - 431 + 436 @@ -7897,7 +8121,7 @@ Get started in only 3 steps apps/client/src/app/pages/landing/landing-page.html - 371 + 376 @@ -7929,11 +8153,11 @@ apps/client/src/app/components/header/header.component.ts - 47 + 72 apps/client/src/app/components/header/header.component.ts - 52 + 77 apps/client/src/app/pages/about/overview/about-overview-page.component.ts @@ -7991,6 +8215,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts 26 @@ -8059,6 +8287,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts 26 @@ -8101,11 +8333,11 @@ apps/client/src/app/components/header/header.component.ts - 46 + 71 apps/client/src/app/components/header/header.component.ts - 51 + 76 apps/client/src/app/pages/about/about-page.component.ts @@ -8175,6 +8407,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts 25 @@ -8243,6 +8479,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts 25 @@ -8305,11 +8545,11 @@ apps/client/src/app/components/header/header.component.ts - 48 + 73 apps/client/src/app/components/header/header.component.ts - 53 + 78 apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts @@ -8337,11 +8577,11 @@ apps/client/src/app/components/header/header.component.ts - 49 + 74 apps/client/src/app/components/header/header.component.ts - 54 + 79 apps/client/src/app/components/home-summary/home-summary.component.ts @@ -8351,6 +8591,10 @@ apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts 14 + + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 37 + apps/client/src/app/core/http-response.interceptor.ts 80 @@ -8397,7 +8641,7 @@ apps/client/src/app/components/header/header.component.ts - 55 + 80 apps/client/src/app/core/auth.guard.ts @@ -8433,11 +8677,11 @@ apps/client/src/app/components/header/header.component.ts - 50 + 75 apps/client/src/app/components/header/header.component.ts - 56 + 81 apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts @@ -8455,6 +8699,10 @@ apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts 14 + + apps/client/src/app/pages/features/features-page.component.ts + 18 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts 14 @@ -8483,6 +8731,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts 28 @@ -8551,6 +8803,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts 28 @@ -8715,6 +8971,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 8 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. @@ -8827,6 +9091,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 13,25 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. @@ -8939,6 +9211,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 26,36 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + Let’s dive deeper into the detailed comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. @@ -9051,6 +9331,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 37,43 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,43 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,43 + Starting from / year @@ -9163,6 +9451,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 180,182 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 180,182 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 180,182 + Starting from / year @@ -9275,6 +9571,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 185,186 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185,186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185,186 + open-source-alternative-to @@ -9399,6 +9703,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 199,208 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 199,208 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 199,208 + Ready to take your investments to the next level? @@ -9511,6 +9823,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 211,214 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 211,214 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 211,214 + Get Started @@ -9623,29 +9943,37 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 220,222 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,222 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,222 + Switzerland Switzerland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 49 + 51 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 61 + 63 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 333 + 351 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 344 + 362 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 345 + 363 @@ -9653,15 +9981,15 @@ Global apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 51 + 53 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 182 + 193 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 283 + 294 @@ -9669,39 +9997,43 @@ United States apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 80 + 82 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 114 + 116 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 168 + 126 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 193 + 179 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 195 + 204 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 259 + 206 apps/client/src/app/pages/resources/personal-finance-tools/products.ts 270 + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 281 + Belgium Belgium apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 92 + 94 @@ -9709,31 +10041,31 @@ Germany apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 69 + 71 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 103 + 105 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 137 + 148 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 147 + 158 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 157 + 168 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 180 + 191 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 215 + 226 @@ -9741,7 +10073,7 @@ Austria apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 125 + 136 @@ -9749,7 +10081,7 @@ Italy apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 226 + 237 @@ -9757,7 +10089,7 @@ Netherlands apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 236 + 247 @@ -9765,7 +10097,7 @@ Thailand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 248 + 259 @@ -9773,7 +10105,7 @@ New Zealand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 281 + 292 @@ -9781,11 +10113,11 @@ Czech Republic apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 292 + 303 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 322 + 340 @@ -9909,7 +10241,7 @@ Do you really want to delete this tag? apps/client/src/app/components/admin-tag/admin-tag.component.ts - 76 + 78 @@ -9933,11 +10265,11 @@ France apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 303 + 314 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 312 + 330 @@ -9953,7 +10285,7 @@ Currency Cluster Risks apps/client/src/app/pages/portfolio/fire/fire-page.html - 111 + 124 @@ -9961,7 +10293,115 @@ Account Cluster Risks apps/client/src/app/pages/portfolio/fire/fire-page.html - 124 + 137 + + + + Transfer Cash Balance + Transfer Cash Balance + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 8 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + + Benchmark + Benchmark + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 154 + + + + Version + Version + + apps/client/src/app/components/admin-overview/admin-overview.html + 7 + + + + Settings + Settings + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 + + + + From + From + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 + + + + To + To + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 21 + + + + Transfer + Transfer + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 50 + + + + Finland + Finland + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 322 + + + + Membership + 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 + + + + Access + 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 + + + + Find holding... + Find holding... + + libs/ui/src/lib/assistant/assistant.component.ts + 87 + + + + No entries... + No entries... + + libs/ui/src/lib/assistant/assistant.html + 62 diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index ae8834f0c..248d3f9ec 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -23,7 +23,7 @@ Il rischio di perdita nel trading può essere notevole. Non è consigliabile investire denaro di cui potresti avere bisogno a breve termine. apps/client/src/app/app.component.html - 174,175 + 175,176 @@ -43,15 +43,15 @@ apps/client/src/app/components/admin-jobs/admin-jobs.html - 20 + 28 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 12 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 22 - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 17 + 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/activities-table.component.html @@ -95,11 +95,11 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 93 + 104 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 88 + 81 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -123,7 +123,7 @@ Nome apps/client/src/app/components/accounts-table/accounts-table.component.html - 22 + 33 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -143,7 +143,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 7 + 12 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -163,7 +163,7 @@ Totale apps/client/src/app/components/accounts-table/accounts-table.component.html - 38 + 49 libs/ui/src/lib/activities-table/activities-table.component.html @@ -175,11 +175,15 @@ Valore apps/client/src/app/components/accounts-table/accounts-table.component.html - 145 + 156 apps/client/src/app/components/accounts-table/accounts-table.component.html - 180 + 191 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 31 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -227,7 +231,7 @@ Modifica apps/client/src/app/components/accounts-table/accounts-table.component.html - 246 + 257 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -247,7 +251,7 @@ Elimina apps/client/src/app/components/accounts-table/accounts-table.component.html - 254 + 265 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -271,7 +275,7 @@ Vuoi davvero eliminare questo account? apps/client/src/app/components/accounts-table/accounts-table.component.ts - 82 + 83 @@ -279,7 +283,7 @@ Elimina i lavori apps/client/src/app/components/admin-jobs/admin-jobs.html - 38 + 140 @@ -287,7 +291,7 @@ Simbolo apps/client/src/app/components/admin-jobs/admin-jobs.html - 21 + 50 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -295,7 +299,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 64 + 57 @@ -303,7 +307,7 @@ Sorgente dei dati apps/client/src/app/components/admin-jobs/admin-jobs.html - 22 + 59 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -319,7 +323,7 @@ Tentativi apps/client/src/app/components/admin-jobs/admin-jobs.html - 23 + 68 @@ -327,7 +331,7 @@ Creato apps/client/src/app/components/admin-jobs/admin-jobs.html - 24 + 77 @@ -335,7 +339,7 @@ Finito apps/client/src/app/components/admin-jobs/admin-jobs.html - 25 + 86 @@ -343,7 +347,7 @@ Stato apps/client/src/app/components/admin-jobs/admin-jobs.html - 26 + 95 @@ -351,7 +355,7 @@ Profilo dell'asset apps/client/src/app/components/admin-jobs/admin-jobs.html - 55 + 37 @@ -359,7 +363,7 @@ Dati storici del mercato apps/client/src/app/components/admin-jobs/admin-jobs.html - 60 + 42 @@ -367,7 +371,7 @@ Visualizza i dati apps/client/src/app/components/admin-jobs/admin-jobs.html - 115 + 155 @@ -375,7 +379,7 @@ Visualizza Stacktrace apps/client/src/app/components/admin-jobs/admin-jobs.html - 122 + 162 @@ -383,7 +387,7 @@ Elimina il lavoro apps/client/src/app/components/admin-jobs/admin-jobs.html - 125 + 165 @@ -431,7 +435,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 191 + 195 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -445,9 +449,17 @@ apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html 13 + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 30 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 79 + 95 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 43 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -457,10 +469,6 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 37 - - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 25 - Save @@ -471,7 +479,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 198 + 202 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -485,18 +493,18 @@ apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html 20 + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 37 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 86 + 102 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 364 - - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 32 - First Activity @@ -507,7 +515,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 79 + 72 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -519,7 +527,7 @@ Conteggio attività apps/client/src/app/components/admin-overview/admin-overview.html - 17 + 23 @@ -535,7 +543,7 @@ Aggiungi una valuta: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 112 + 114 @@ -543,7 +551,7 @@ Vuoi davvero eliminare questo buono? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 126 + 128 @@ -551,7 +559,7 @@ Vuoi davvero eliminare questa valuta? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 139 + 141 @@ -559,7 +567,7 @@ Vuoi davvero svuotare la cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 156 + 158 @@ -567,7 +575,7 @@ Imposta il messaggio di sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 186 + 188 @@ -575,7 +583,7 @@ Numero di utenti apps/client/src/app/components/admin-overview/admin-overview.html - 7 + 13 @@ -583,7 +591,7 @@ per utente apps/client/src/app/components/admin-overview/admin-overview.html - 26 + 32 @@ -619,7 +627,7 @@ Tassi di cambio apps/client/src/app/components/admin-overview/admin-overview.html - 31 + 37 @@ -627,7 +635,7 @@ Aggiungi valuta apps/client/src/app/components/admin-overview/admin-overview.html - 70 + 76 @@ -635,7 +643,7 @@ Messaggio di sistema apps/client/src/app/components/admin-overview/admin-overview.html - 96 + 102 @@ -643,7 +651,7 @@ Imposta messaggio apps/client/src/app/components/admin-overview/admin-overview.html - 118 + 124 @@ -651,7 +659,7 @@ Modalità di sola lettura apps/client/src/app/components/admin-overview/admin-overview.html - 86 + 92 @@ -659,7 +667,7 @@ Buoni sconto apps/client/src/app/components/admin-overview/admin-overview.html - 126 + 132 @@ -667,7 +675,7 @@ Aggiungi apps/client/src/app/components/admin-overview/admin-overview.html - 170 + 176 @@ -675,7 +683,7 @@ Bilancio domestico apps/client/src/app/components/admin-overview/admin-overview.html - 177 + 183 @@ -683,7 +691,7 @@ Svuota la cache apps/client/src/app/components/admin-overview/admin-overview.html - 181 + 187 @@ -703,7 +711,7 @@ apps/client/src/app/components/header/header.component.html - 164 + 189 @@ -747,7 +755,7 @@ apps/client/src/app/components/header/header.component.html - 178 + 203 @@ -759,7 +767,7 @@ apps/client/src/app/components/header/header.component.html - 188 + 213 @@ -779,7 +787,7 @@ apps/client/src/app/components/header/header.component.html - 196 + 221 apps/client/src/app/pages/accounts/accounts-page.html @@ -795,7 +803,7 @@ apps/client/src/app/components/header/header.component.html - 212 + 237 @@ -803,7 +811,7 @@ Risorse apps/client/src/app/app.component.html - 59 + 60 apps/client/src/app/components/header/header.component.html @@ -811,7 +819,7 @@ apps/client/src/app/components/header/header.component.html - 223 + 248 apps/client/src/app/pages/resources/resources-page.html @@ -823,7 +831,7 @@ Prezzi apps/client/src/app/app.component.html - 85 + 86 apps/client/src/app/components/header/header.component.html @@ -831,11 +839,19 @@ apps/client/src/app/components/header/header.component.html - 235 + 260 apps/client/src/app/components/header/header.component.html - 304 + 329 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 179 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 179 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -951,7 +967,7 @@ Informazioni su apps/client/src/app/app.component.html - 65 + 66 apps/client/src/app/components/header/header.component.html @@ -959,7 +975,7 @@ apps/client/src/app/components/header/header.component.html - 291 + 316 @@ -967,7 +983,7 @@ Io apps/client/src/app/components/header/header.component.html - 145 + 170 @@ -975,7 +991,7 @@ Il mio Ghostfolio apps/client/src/app/components/header/header.component.html - 203 + 228 @@ -983,7 +999,7 @@ Informazioni su Ghostfolio apps/client/src/app/components/header/header.component.html - 243 + 268 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -995,11 +1011,11 @@ Funzionalità apps/client/src/app/app.component.html - 72 + 73 apps/client/src/app/components/header/header.component.html - 278 + 303 apps/client/src/app/pages/features/features-page.html @@ -1011,11 +1027,11 @@ Mercati apps/client/src/app/app.component.html - 57 + 58 apps/client/src/app/components/header/header.component.html - 320 + 345 apps/client/src/app/components/home-market/home-market.html @@ -1043,7 +1059,7 @@ Accedi apps/client/src/app/components/header/header.component.ts - 131 + 169 apps/client/src/app/pages/webauthn/webauthn-page-routing.module.ts @@ -1055,7 +1071,7 @@ Ops! Token di sicurezza errato. apps/client/src/app/components/header/header.component.ts - 145 + 183 @@ -1107,7 +1123,7 @@ apps/client/src/app/pages/landing/landing-page.html - 430 + 435 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html @@ -1151,7 +1167,7 @@ Accedi apps/client/src/app/components/header/header.component.html - 333 + 358 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1274,7 +1290,7 @@ apps/client/src/app/pages/portfolio/fire/fire-page.html - 150 + 111 @@ -1338,7 +1354,7 @@ Settori apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 132 + 125 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1354,7 +1370,7 @@ Paesi apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 142 + 135 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1514,7 +1530,7 @@ Informativa sulla privacy apps/client/src/app/app.component.html - 89 + 90 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html @@ -1526,7 +1542,7 @@ Blog apps/client/src/app/app.component.html - 67 + 68 apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html @@ -1606,7 +1622,7 @@ Registro delle modifiche apps/client/src/app/app.component.html - 70 + 71 apps/client/src/app/pages/about/changelog/changelog-page.html @@ -1618,7 +1634,7 @@ Licenza d'uso apps/client/src/app/app.component.html - 79 + 80 apps/client/src/app/pages/about/license/license-page.html @@ -1642,47 +1658,47 @@ Il mio Ghostfolio apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 12 + 32 Please enter your coupon code: Inserisci il tuo codice del buono: - apps/client/src/app/pages/user-account/user-account-page.component.ts - 263 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 110 Could not redeem coupon code Impossibile riscattare il codice del buono - apps/client/src/app/pages/user-account/user-account-page.component.ts - 273 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 120 Coupon code has been redeemed Il codice del buono è stato riscattato - apps/client/src/app/pages/user-account/user-account-page.component.ts - 285 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 132 Reload Ricarica - apps/client/src/app/pages/user-account/user-account-page.component.ts - 286 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 133 Do you really want to remove this sign in method? Vuoi davvero rimuovere questo metodo di accesso? - apps/client/src/app/pages/user-account/user-account-page.component.ts - 332 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 184 @@ -1692,10 +1708,6 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 75 - - apps/client/src/app/pages/user-account/user-account-page.html - 4 - libs/ui/src/lib/activities-table/activities-table.component.html 379 @@ -1705,128 +1717,128 @@ Membership Iscrizione - apps/client/src/app/pages/user-account/user-account-page.html - 12 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 2 Upgrade Aggiornamento - apps/client/src/app/pages/user-account/user-account-page.html - 39 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 26 per year per anno - apps/client/src/app/pages/pricing/pricing-page.html - 332 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 41 - apps/client/src/app/pages/user-account/user-account-page.html - 56 + apps/client/src/app/pages/pricing/pricing-page.html + 332 Try Premium Prova Premium - apps/client/src/app/pages/user-account/user-account-page.html - 64 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 49 Redeem Coupon Riscatta il buono - apps/client/src/app/pages/user-account/user-account-page.html - 77 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 62 Presenter View Vista presentatore - apps/client/src/app/pages/user-account/user-account-page.html - 84 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 7 Base Currency Valuta base - apps/client/src/app/pages/user-account/user-account-page.html - 103 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 26 Locale Locale - apps/client/src/app/pages/user-account/user-account-page.html - 173 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 90 Date and number format Formato data e numero - apps/client/src/app/pages/user-account/user-account-page.html - 175 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 92 Zen Mode Modalità Zen - apps/client/src/app/pages/features/features-page.html - 192 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 136 - apps/client/src/app/pages/user-account/user-account-page.html - 227 + apps/client/src/app/pages/features/features-page.html + 192 - - Sign in with fingerprint - Accesso con impronta digitale + + Sign in with fingerprint + Accesso con impronta digitale - apps/client/src/app/pages/user-account/user-account-page.html - 244,246 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 153 User ID ID utente - apps/client/src/app/pages/user-account/user-account-page.html - 277 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 184 Granted Access Accesso concesso - apps/client/src/app/pages/user-account/user-account-page.html - 295 + apps/client/src/app/components/user-account-access/user-account-access.html + 5 Grant access Concedi l'accesso - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 2 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 7 Public Pubblico - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 19 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 @@ -1842,7 +1854,7 @@ Aggiorna account apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 2 + 7 @@ -1850,7 +1862,7 @@ Aggiungi un account apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 3 + 8 @@ -1866,15 +1878,15 @@ Valuta apps/client/src/app/components/accounts-table/accounts-table.component.html - 48 + 59 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 69 + 62 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 13 + 22 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1894,11 +1906,11 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 110 + 121 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 23 + 32 @@ -1910,11 +1922,11 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 65 + 76 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 36 + 44 @@ -1922,7 +1934,7 @@ ID account apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 68 + 89 @@ -1974,7 +1986,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 44 + 33 apps/client/src/app/pages/zen/zen-page-routing.module.ts @@ -1994,7 +2006,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 59 + 48 apps/client/src/app/pages/markets/markets-page-routing.module.ts @@ -2174,7 +2186,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 49 + 38 apps/client/src/app/pages/portfolio/holdings/holdings-page-routing.module.ts @@ -2200,6 +2212,10 @@ apps/client/src/app/pages/public/public-page.html 14 + + libs/ui/src/lib/assistant/assistant.html + 46 + Update activity @@ -2294,11 +2310,11 @@ Nota apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 178 + 182 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 47 + 72 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2314,7 +2330,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 93 + 86 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2585,8 +2601,8 @@ Language Lingua - apps/client/src/app/pages/user-account/user-account-page.html - 127 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 47 @@ -2594,7 +2610,7 @@ Inizia apps/client/src/app/components/header/header.component.html - 345 + 370 @@ -2662,7 +2678,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 102 + 95 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2718,7 +2734,7 @@ Settore apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 117 + 110 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2730,7 +2746,7 @@ Paese apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 126 + 119 apps/client/src/app/components/admin-users/admin-users.html @@ -2897,16 +2913,16 @@ 15 - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 6 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 11 Experimental Features Funzionalità sperimentali - apps/client/src/app/pages/user-account/user-account-page.html - 262 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 169 @@ -2945,40 +2961,40 @@ Auto Auto - apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 35 Appearance Aspetto - apps/client/src/app/pages/user-account/user-account-page.html - 201 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 113 Auto Auto - apps/client/src/app/pages/user-account/user-account-page.html - 216 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 125 Light Chiaro - apps/client/src/app/pages/user-account/user-account-page.html - 217 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 126 Dark Scuro - apps/client/src/app/pages/user-account/user-account-page.html - 218 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 127 @@ -3238,35 +3254,35 @@ Comunità apps/client/src/app/app.component.html - 104 + 105 - apps/client/src/app/pages/features/features-page.html - 259 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 61 - apps/client/src/app/pages/user-account/user-account-page.html - 144 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 65 - apps/client/src/app/pages/user-account/user-account-page.html - 148 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 69 - apps/client/src/app/pages/user-account/user-account-page.html - 152 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 73 - apps/client/src/app/pages/user-account/user-account-page.html - 156 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 77 - apps/client/src/app/pages/user-account/user-account-page.html - 160 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 81 - apps/client/src/app/pages/user-account/user-account-page.html - 164 + apps/client/src/app/pages/features/features-page.html + 259 @@ -3290,7 +3306,7 @@ Mappatura dei simboli apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 156 + 160 @@ -3326,7 +3342,7 @@ Registrazione utente apps/client/src/app/components/admin-overview/admin-overview.html - 76 + 82 @@ -3394,7 +3410,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 54 + 43 @@ -3433,8 +3449,8 @@ Valid until Valido fino a - apps/client/src/app/pages/user-account/user-account-page.html - 24 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 17 @@ -3485,28 +3501,28 @@ 23 - + Protection for sensitive information like absolute performances and quantity values - Protezione delle informazioni sensibili come le prestazioni assolute e i valori quantitativi + Protezione delle informazioni sensibili come le prestazioni assolute e i valori quantitativi - apps/client/src/app/pages/user-account/user-account-page.html - 85,88 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 8,11 - + Distraction-free experience for turbulent times - Esperienza priva di distrazioni per i periodi più turbolenti + Esperienza priva di distrazioni per i periodi più turbolenti - apps/client/src/app/pages/user-account/user-account-page.html - 228,230 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 137,139 - + Sneak peek at upcoming functionality - Un'anteprima delle funzionalità in arrivo + Un'anteprima delle funzionalità in arrivo - apps/client/src/app/pages/user-account/user-account-page.html - 263,265 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 170,172 @@ -3742,7 +3758,7 @@ apps/client/src/app/pages/portfolio/fire/fire-page.html - 137 + 150 @@ -3885,8 +3901,8 @@ Renew Rinnova - apps/client/src/app/pages/user-account/user-account-page.html - 44 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 29 @@ -3978,7 +3994,7 @@ Vuoi davvero eliminare questa piattaforma? apps/client/src/app/components/admin-platform/admin-platform.component.ts - 76 + 78 @@ -4040,6 +4056,14 @@ apps/client/src/app/pages/admin/admin-page.component.ts 31 + + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 17 + + + apps/client/src/app/pages/user-account/user-account-page.component.ts + 34 + Equity @@ -4057,14 +4081,6 @@ 15 - - Set as Benchmark - Imposta come benchmark - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 45 - - Manage Benchmarks Gestisci i benchmark @@ -4134,7 +4150,7 @@ Finanza personale apps/client/src/app/app.component.html - 54 + 55 @@ -4142,7 +4158,7 @@ Domande più frequenti (FAQ) apps/client/src/app/app.component.html - 75 + 76 @@ -4354,7 +4370,7 @@ Configurazione dello scraper apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 167 + 171 @@ -4492,6 +4508,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 63 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 63 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 63 + Origin @@ -4604,6 +4628,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 68 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 68 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 68 + Region @@ -4716,6 +4748,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 73 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 73 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 73 + Available in @@ -4828,6 +4868,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 78,80 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 78,80 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 78,80 + ✅ Yes @@ -4940,6 +4988,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 100 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 100 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 100 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 107 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 107 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 107 @@ -5156,6 +5220,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 121 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 121 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 121 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 132 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 132 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 132 @@ -5372,6 +5452,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 146 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 146 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 146 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 153 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 153 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 153 @@ -5588,6 +5684,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 165 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 165 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 165 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 172 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 172 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 172 @@ -5808,6 +5920,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 102 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 102 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 102 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 125 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 125 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 125 @@ -6024,6 +6152,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 136 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 136 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 136 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 148 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 148 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 148 @@ -6240,6 +6384,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 155 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 155 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 155 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 167 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 167 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 167 @@ -6456,6 +6616,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 174 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 174 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 174 + ❌ No @@ -6568,6 +6736,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 109,110 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 109,110 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 109,110 + Self-Hosting @@ -6680,6 +6856,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 114,116 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 114,116 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 114,116 + Use anonymously @@ -6792,6 +6976,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 141,143 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 141,143 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 141,143 + Free Plan @@ -6904,6 +7096,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 160,162 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 160,162 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 160,162 + Notes @@ -7016,6 +7216,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 191 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. @@ -7128,10 +7336,26 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 215,218 - - - Personal Finance Tools - Strumenti di finanza personale + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 215,218 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 215,218 + + + + Personal Finance Tools + Strumenti di finanza personale + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 287 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 287 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 287 @@ -7445,8 +7669,8 @@ Biometric Authentication Autenticazione biometrica - apps/client/src/app/pages/user-account/user-account-page.html - 243 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 152 @@ -7529,8 +7753,8 @@ Export Data Esporta dati - apps/client/src/app/pages/user-account/user-account-page.html - 284 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 191 @@ -7622,7 +7846,7 @@ apps/client/src/app/pages/landing/landing-page.html - 426,428 + 431,433 @@ -7814,7 +8038,7 @@ Membri da tutto il mondo utilizzano Ghostfolio Premium apps/client/src/app/pages/landing/landing-page.html - 353,355 + 358,360 @@ -7822,7 +8046,7 @@ Come funziona Ghostfolio? apps/client/src/app/pages/landing/landing-page.html - 368,370 + 373,375 @@ -7830,7 +8054,7 @@ Iscriviti in modo anonimo* apps/client/src/app/pages/landing/landing-page.html - 377 + 382 @@ -7838,7 +8062,7 @@ * non è richiesto alcun indirizzo email né la carta di credito apps/client/src/app/pages/landing/landing-page.html - 379 + 384 @@ -7846,7 +8070,7 @@ Aggiungi le tue transazioni storiche apps/client/src/app/pages/landing/landing-page.html - 390,392 + 395,397 @@ -7854,7 +8078,7 @@ Ottieni informazioni preziose sulla composizione del tuo portafoglio apps/client/src/app/pages/landing/landing-page.html - 402,404 + 407,409 @@ -7862,7 +8086,7 @@ Seipronto? apps/client/src/app/pages/landing/landing-page.html - 414 + 419 @@ -7870,7 +8094,7 @@ Iscriviti adesso o consulta l'account di esempio apps/client/src/app/pages/landing/landing-page.html - 415,418 + 420,423 @@ -7882,7 +8106,7 @@ apps/client/src/app/pages/landing/landing-page.html - 431 + 436 @@ -7898,7 +8122,7 @@ Inizia in soli 3 passi apps/client/src/app/pages/landing/landing-page.html - 371 + 376 @@ -7930,11 +8154,11 @@ apps/client/src/app/components/header/header.component.ts - 47 + 72 apps/client/src/app/components/header/header.component.ts - 52 + 77 apps/client/src/app/pages/about/overview/about-overview-page.component.ts @@ -7992,6 +8216,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts 26 @@ -8060,6 +8288,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts 26 @@ -8102,11 +8334,11 @@ apps/client/src/app/components/header/header.component.ts - 46 + 71 apps/client/src/app/components/header/header.component.ts - 51 + 76 apps/client/src/app/pages/about/about-page.component.ts @@ -8176,6 +8408,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts 25 @@ -8244,6 +8480,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts 25 @@ -8306,11 +8546,11 @@ apps/client/src/app/components/header/header.component.ts - 48 + 73 apps/client/src/app/components/header/header.component.ts - 53 + 78 apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts @@ -8338,11 +8578,11 @@ apps/client/src/app/components/header/header.component.ts - 49 + 74 apps/client/src/app/components/header/header.component.ts - 54 + 79 apps/client/src/app/components/home-summary/home-summary.component.ts @@ -8352,6 +8592,10 @@ apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts 14 + + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 37 + apps/client/src/app/core/http-response.interceptor.ts 80 @@ -8398,7 +8642,7 @@ apps/client/src/app/components/header/header.component.ts - 55 + 80 apps/client/src/app/core/auth.guard.ts @@ -8434,11 +8678,11 @@ apps/client/src/app/components/header/header.component.ts - 50 + 75 apps/client/src/app/components/header/header.component.ts - 56 + 81 apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts @@ -8456,6 +8700,10 @@ apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts 14 + + apps/client/src/app/pages/features/features-page.component.ts + 18 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts 14 @@ -8484,6 +8732,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts 28 @@ -8552,6 +8804,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts 28 @@ -8716,6 +8972,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 8 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. @@ -8828,6 +9092,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 13,25 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. @@ -8940,6 +9212,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 26,36 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + Let’s dive deeper into the detailed comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. @@ -9052,6 +9332,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 37,43 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,43 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,43 + Starting from / year @@ -9164,6 +9452,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 180,182 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 180,182 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 180,182 + Starting from / year @@ -9276,6 +9572,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 185,186 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185,186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185,186 + open-source-alternative-to @@ -9400,6 +9704,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 199,208 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 199,208 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 199,208 + Ready to take your investments to the next level? @@ -9512,6 +9824,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 211,214 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 211,214 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 211,214 + Get Started @@ -9624,29 +9944,37 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 220,222 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,222 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,222 + Switzerland Svizzera apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 49 + 51 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 61 + 63 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 333 + 351 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 344 + 362 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 345 + 363 @@ -9654,15 +9982,15 @@ Globale apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 51 + 53 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 182 + 193 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 283 + 294 @@ -9670,39 +9998,43 @@ Stati Uniti apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 80 + 82 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 114 + 116 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 168 + 126 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 193 + 179 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 195 + 204 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 259 + 206 apps/client/src/app/pages/resources/personal-finance-tools/products.ts 270 + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 281 + Belgium Belgio apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 92 + 94 @@ -9710,31 +10042,31 @@ Germania apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 69 + 71 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 103 + 105 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 137 + 148 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 147 + 158 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 157 + 168 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 180 + 191 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 215 + 226 @@ -9742,7 +10074,7 @@ Austria apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 125 + 136 @@ -9750,7 +10082,7 @@ Italia apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 226 + 237 @@ -9758,7 +10090,7 @@ Paesi Bassi apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 236 + 247 @@ -9766,7 +10098,7 @@ Thailandia apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 248 + 259 @@ -9774,7 +10106,7 @@ Nuova Zelanda apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 281 + 292 @@ -9782,11 +10114,11 @@ Repubblica Ceca apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 292 + 303 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 322 + 340 @@ -9910,7 +10242,7 @@ Do you really want to delete this tag? apps/client/src/app/components/admin-tag/admin-tag.component.ts - 76 + 78 @@ -9934,11 +10266,11 @@ France apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 303 + 314 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 312 + 330 @@ -9954,7 +10286,7 @@ Currency Cluster Risks apps/client/src/app/pages/portfolio/fire/fire-page.html - 111 + 124 @@ -9962,7 +10294,115 @@ Account Cluster Risks apps/client/src/app/pages/portfolio/fire/fire-page.html - 124 + 137 + + + + Transfer Cash Balance + Transfer Cash Balance + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 8 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + + Benchmark + Benchmark + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 154 + + + + Version + Version + + apps/client/src/app/components/admin-overview/admin-overview.html + 7 + + + + Settings + Settings + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 + + + + From + From + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 + + + + To + To + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 21 + + + + Transfer + Transfer + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 50 + + + + Finland + Finland + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 322 + + + + Membership + 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 + + + + Access + 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 + + + + Find holding... + Find holding... + + libs/ui/src/lib/assistant/assistant.component.ts + 87 + + + + No entries... + No entries... + + libs/ui/src/lib/assistant/assistant.html + 62 diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index f69216f63..649f07f15 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -22,7 +22,7 @@ Het risico op verlies bij handelen kan aanzienlijk zijn. Het is niet aan te raden om geld te investeren dat je misschien op korte termijn nodig heeft. apps/client/src/app/app.component.html - 174,175 + 175,176 @@ -42,15 +42,15 @@ apps/client/src/app/components/admin-jobs/admin-jobs.html - 20 + 28 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 12 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 22 - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 17 + 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/activities-table.component.html @@ -94,11 +94,11 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 93 + 104 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 88 + 81 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -122,7 +122,7 @@ Naam apps/client/src/app/components/accounts-table/accounts-table.component.html - 22 + 33 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -142,7 +142,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 7 + 12 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -162,7 +162,7 @@ Totaal apps/client/src/app/components/accounts-table/accounts-table.component.html - 38 + 49 libs/ui/src/lib/activities-table/activities-table.component.html @@ -174,11 +174,15 @@ Waarde apps/client/src/app/components/accounts-table/accounts-table.component.html - 145 + 156 apps/client/src/app/components/accounts-table/accounts-table.component.html - 180 + 191 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 31 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -226,7 +230,7 @@ Bewerken apps/client/src/app/components/accounts-table/accounts-table.component.html - 246 + 257 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -246,7 +250,7 @@ Verwijderen apps/client/src/app/components/accounts-table/accounts-table.component.html - 254 + 265 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -270,7 +274,7 @@ Wil je deze rekening echt verwijderen? apps/client/src/app/components/accounts-table/accounts-table.component.ts - 82 + 83 @@ -278,7 +282,7 @@ Taken verwijderen apps/client/src/app/components/admin-jobs/admin-jobs.html - 38 + 140 @@ -286,7 +290,7 @@ Symbool apps/client/src/app/components/admin-jobs/admin-jobs.html - 21 + 50 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -294,7 +298,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 64 + 57 @@ -302,7 +306,7 @@ Gegevensbron apps/client/src/app/components/admin-jobs/admin-jobs.html - 22 + 59 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -318,7 +322,7 @@ Pogingen apps/client/src/app/components/admin-jobs/admin-jobs.html - 23 + 68 @@ -326,7 +330,7 @@ Aangemaakt apps/client/src/app/components/admin-jobs/admin-jobs.html - 24 + 77 @@ -334,7 +338,7 @@ Voltooid apps/client/src/app/components/admin-jobs/admin-jobs.html - 25 + 86 @@ -342,7 +346,7 @@ Status apps/client/src/app/components/admin-jobs/admin-jobs.html - 26 + 95 @@ -350,7 +354,7 @@ Asset Profiel apps/client/src/app/components/admin-jobs/admin-jobs.html - 55 + 37 @@ -358,7 +362,7 @@ Historische marktgegevens apps/client/src/app/components/admin-jobs/admin-jobs.html - 60 + 42 @@ -366,7 +370,7 @@ Bekijk gegevens apps/client/src/app/components/admin-jobs/admin-jobs.html - 115 + 155 @@ -374,7 +378,7 @@ Bekijk Stacktrace apps/client/src/app/components/admin-jobs/admin-jobs.html - 122 + 162 @@ -382,7 +386,7 @@ Taak verwijderen apps/client/src/app/components/admin-jobs/admin-jobs.html - 125 + 165 @@ -430,7 +434,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 191 + 195 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -444,9 +448,17 @@ apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html 13 + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 30 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 79 + 95 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 43 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -456,10 +468,6 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 37 - - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 25 - Save @@ -470,7 +478,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 198 + 202 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -484,18 +492,18 @@ apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html 20 + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 37 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 86 + 102 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 364 - - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 32 - First Activity @@ -506,7 +514,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 79 + 72 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -518,7 +526,7 @@ Aantal activiteiten apps/client/src/app/components/admin-overview/admin-overview.html - 17 + 23 @@ -534,7 +542,7 @@ Voeg een valuta toe: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 112 + 114 @@ -542,7 +550,7 @@ Wil je deze coupon echt verwijderen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 126 + 128 @@ -550,7 +558,7 @@ Wil je deze valuta echt verwijderen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 139 + 141 @@ -558,7 +566,7 @@ Wil je echt de cache legen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 156 + 158 @@ -566,7 +574,7 @@ Stel je systeemboodschap in: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 186 + 188 @@ -574,7 +582,7 @@ Aantal gebruikers apps/client/src/app/components/admin-overview/admin-overview.html - 7 + 13 @@ -582,7 +590,7 @@ per gebruiker apps/client/src/app/components/admin-overview/admin-overview.html - 26 + 32 @@ -618,7 +626,7 @@ Wisselkoersen apps/client/src/app/components/admin-overview/admin-overview.html - 31 + 37 @@ -626,7 +634,7 @@ Valuta toevoegen apps/client/src/app/components/admin-overview/admin-overview.html - 70 + 76 @@ -634,7 +642,7 @@ Systeembericht apps/client/src/app/components/admin-overview/admin-overview.html - 96 + 102 @@ -642,7 +650,7 @@ Bericht instellen apps/client/src/app/components/admin-overview/admin-overview.html - 118 + 124 @@ -650,7 +658,7 @@ Alleen lezen apps/client/src/app/components/admin-overview/admin-overview.html - 86 + 92 @@ -658,7 +666,7 @@ Coupons apps/client/src/app/components/admin-overview/admin-overview.html - 126 + 132 @@ -666,7 +674,7 @@ Toevoegen apps/client/src/app/components/admin-overview/admin-overview.html - 170 + 176 @@ -674,7 +682,7 @@ Huishouding apps/client/src/app/components/admin-overview/admin-overview.html - 177 + 183 @@ -682,7 +690,7 @@ Cache legen apps/client/src/app/components/admin-overview/admin-overview.html - 181 + 187 @@ -702,7 +710,7 @@ apps/client/src/app/components/header/header.component.html - 164 + 189 @@ -746,7 +754,7 @@ apps/client/src/app/components/header/header.component.html - 178 + 203 @@ -758,7 +766,7 @@ apps/client/src/app/components/header/header.component.html - 188 + 213 @@ -778,7 +786,7 @@ apps/client/src/app/components/header/header.component.html - 196 + 221 apps/client/src/app/pages/accounts/accounts-page.html @@ -794,7 +802,7 @@ apps/client/src/app/components/header/header.component.html - 212 + 237 @@ -802,7 +810,7 @@ Middelen apps/client/src/app/app.component.html - 59 + 60 apps/client/src/app/components/header/header.component.html @@ -810,7 +818,7 @@ apps/client/src/app/components/header/header.component.html - 223 + 248 apps/client/src/app/pages/resources/resources-page.html @@ -822,7 +830,7 @@ Prijzen apps/client/src/app/app.component.html - 85 + 86 apps/client/src/app/components/header/header.component.html @@ -830,11 +838,19 @@ apps/client/src/app/components/header/header.component.html - 235 + 260 apps/client/src/app/components/header/header.component.html - 304 + 329 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 179 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 179 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -950,7 +966,7 @@ Over apps/client/src/app/app.component.html - 65 + 66 apps/client/src/app/components/header/header.component.html @@ -958,7 +974,7 @@ apps/client/src/app/components/header/header.component.html - 291 + 316 @@ -966,7 +982,7 @@ Ik apps/client/src/app/components/header/header.component.html - 145 + 170 @@ -974,7 +990,7 @@ Mijn Ghostfolio apps/client/src/app/components/header/header.component.html - 203 + 228 @@ -982,7 +998,7 @@ Over Ghostfolio apps/client/src/app/components/header/header.component.html - 243 + 268 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -994,11 +1010,11 @@ Functionaliteiten apps/client/src/app/app.component.html - 72 + 73 apps/client/src/app/components/header/header.component.html - 278 + 303 apps/client/src/app/pages/features/features-page.html @@ -1010,11 +1026,11 @@ Markten apps/client/src/app/app.component.html - 57 + 58 apps/client/src/app/components/header/header.component.html - 320 + 345 apps/client/src/app/components/home-market/home-market.html @@ -1042,7 +1058,7 @@ Aanmelden apps/client/src/app/components/header/header.component.ts - 131 + 169 apps/client/src/app/pages/webauthn/webauthn-page-routing.module.ts @@ -1054,7 +1070,7 @@ Oeps! Onjuiste beveiligingstoken. apps/client/src/app/components/header/header.component.ts - 145 + 183 @@ -1106,7 +1122,7 @@ apps/client/src/app/pages/landing/landing-page.html - 430 + 435 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html @@ -1150,7 +1166,7 @@ Aanmelden apps/client/src/app/components/header/header.component.html - 333 + 358 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1273,7 +1289,7 @@ apps/client/src/app/pages/portfolio/fire/fire-page.html - 150 + 111 @@ -1337,7 +1353,7 @@ Sectoren apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 132 + 125 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1353,7 +1369,7 @@ Landen apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 142 + 135 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1513,7 +1529,7 @@ Privacybeleid apps/client/src/app/app.component.html - 89 + 90 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html @@ -1525,7 +1541,7 @@ Blog apps/client/src/app/app.component.html - 67 + 68 apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html @@ -1605,7 +1621,7 @@ Changelog apps/client/src/app/app.component.html - 70 + 71 apps/client/src/app/pages/about/changelog/changelog-page.html @@ -1617,7 +1633,7 @@ Licentie apps/client/src/app/app.component.html - 79 + 80 apps/client/src/app/pages/about/license/license-page.html @@ -1641,47 +1657,47 @@ Mijn Ghostfolio apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 12 + 32 Please enter your coupon code: Voer je couponcode in: - apps/client/src/app/pages/user-account/user-account-page.component.ts - 263 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 110 Could not redeem coupon code Kon je kortingscode niet inwisselen - apps/client/src/app/pages/user-account/user-account-page.component.ts - 273 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 120 Coupon code has been redeemed Je couponcode is ingewisseld - apps/client/src/app/pages/user-account/user-account-page.component.ts - 285 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 132 Reload Herladen - apps/client/src/app/pages/user-account/user-account-page.component.ts - 286 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 133 Do you really want to remove this sign in method? Wil je deze aanmeldingsmethode echt verwijderen? - apps/client/src/app/pages/user-account/user-account-page.component.ts - 332 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 184 @@ -1691,10 +1707,6 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 75 - - apps/client/src/app/pages/user-account/user-account-page.html - 4 - libs/ui/src/lib/activities-table/activities-table.component.html 379 @@ -1704,128 +1716,128 @@ Membership Lidmaatschap - apps/client/src/app/pages/user-account/user-account-page.html - 12 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 2 Upgrade Uitbreiden - apps/client/src/app/pages/user-account/user-account-page.html - 39 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 26 per year per jaar - apps/client/src/app/pages/pricing/pricing-page.html - 332 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 41 - apps/client/src/app/pages/user-account/user-account-page.html - 56 + apps/client/src/app/pages/pricing/pricing-page.html + 332 Try Premium Probeer Premium - apps/client/src/app/pages/user-account/user-account-page.html - 64 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 49 Redeem Coupon Coupon inwisselen - apps/client/src/app/pages/user-account/user-account-page.html - 77 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 62 Presenter View Presentatie weergave - apps/client/src/app/pages/user-account/user-account-page.html - 84 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 7 Base Currency Basisvaluta - apps/client/src/app/pages/user-account/user-account-page.html - 103 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 26 Locale Locatie - apps/client/src/app/pages/user-account/user-account-page.html - 173 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 90 Date and number format Datum- en getalnotatie - apps/client/src/app/pages/user-account/user-account-page.html - 175 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 92 Zen Mode Zen-modus - apps/client/src/app/pages/features/features-page.html - 192 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 136 - apps/client/src/app/pages/user-account/user-account-page.html - 227 + apps/client/src/app/pages/features/features-page.html + 192 - - Sign in with fingerprint - Aanmelden met vingerafdruk + + Sign in with fingerprint + Aanmelden met vingerafdruk - apps/client/src/app/pages/user-account/user-account-page.html - 244,246 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 153 User ID Gebruikers-ID - apps/client/src/app/pages/user-account/user-account-page.html - 277 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 184 Granted Access Verleende toegang - apps/client/src/app/pages/user-account/user-account-page.html - 295 + apps/client/src/app/components/user-account-access/user-account-access.html + 5 Grant access Toegang verlenen - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 2 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 7 Public Openbaar - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 19 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 @@ -1841,7 +1853,7 @@ Rekening bijwerken apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 2 + 7 @@ -1849,7 +1861,7 @@ Rekening toevoegen apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 3 + 8 @@ -1865,15 +1877,15 @@ Valuta apps/client/src/app/components/accounts-table/accounts-table.component.html - 48 + 59 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 69 + 62 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 13 + 22 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1893,11 +1905,11 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 110 + 121 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 23 + 32 @@ -1909,11 +1921,11 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 65 + 76 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 36 + 44 @@ -1921,7 +1933,7 @@ Rekening-ID apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 68 + 89 @@ -1973,7 +1985,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 44 + 33 apps/client/src/app/pages/zen/zen-page-routing.module.ts @@ -1993,7 +2005,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 59 + 48 apps/client/src/app/pages/markets/markets-page-routing.module.ts @@ -2173,7 +2185,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 49 + 38 apps/client/src/app/pages/portfolio/holdings/holdings-page-routing.module.ts @@ -2199,6 +2211,10 @@ apps/client/src/app/pages/public/public-page.html 14 + + libs/ui/src/lib/assistant/assistant.html + 46 + Update activity @@ -2293,11 +2309,11 @@ Opmerking apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 178 + 182 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 47 + 72 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2313,7 +2329,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 93 + 86 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2584,8 +2600,8 @@ Language Taal - apps/client/src/app/pages/user-account/user-account-page.html - 127 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 47 @@ -2593,7 +2609,7 @@ Aan de slag apps/client/src/app/components/header/header.component.html - 345 + 370 @@ -2661,7 +2677,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 102 + 95 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2717,7 +2733,7 @@ Sector apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 117 + 110 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2729,7 +2745,7 @@ Land apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 126 + 119 apps/client/src/app/components/admin-users/admin-users.html @@ -2896,16 +2912,16 @@ 15 - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 6 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 11 Experimental Features Experimentele functies - apps/client/src/app/pages/user-account/user-account-page.html - 262 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 169 @@ -2944,40 +2960,40 @@ Auto Automatisch - apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 35 Appearance Weergave - apps/client/src/app/pages/user-account/user-account-page.html - 201 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 113 Auto Automatisch - apps/client/src/app/pages/user-account/user-account-page.html - 216 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 125 Light Licht - apps/client/src/app/pages/user-account/user-account-page.html - 217 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 126 Dark Donker - apps/client/src/app/pages/user-account/user-account-page.html - 218 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 127 @@ -3237,35 +3253,35 @@ Gemeenschap apps/client/src/app/app.component.html - 104 + 105 - apps/client/src/app/pages/features/features-page.html - 259 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 61 - apps/client/src/app/pages/user-account/user-account-page.html - 144 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 65 - apps/client/src/app/pages/user-account/user-account-page.html - 148 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 69 - apps/client/src/app/pages/user-account/user-account-page.html - 152 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 73 - apps/client/src/app/pages/user-account/user-account-page.html - 156 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 77 - apps/client/src/app/pages/user-account/user-account-page.html - 160 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 81 - apps/client/src/app/pages/user-account/user-account-page.html - 164 + apps/client/src/app/pages/features/features-page.html + 259 @@ -3289,7 +3305,7 @@ Symbool toewijzen apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 156 + 160 @@ -3325,7 +3341,7 @@ Account aanmaken apps/client/src/app/components/admin-overview/admin-overview.html - 76 + 82 @@ -3393,7 +3409,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 54 + 43 @@ -3432,8 +3448,8 @@ Valid until Geldig tot - apps/client/src/app/pages/user-account/user-account-page.html - 24 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 17 @@ -3484,28 +3500,28 @@ 23 - + Protection for sensitive information like absolute performances and quantity values - Bescherming voor gevoelige informatie zoals absoluut rendement en hoeveelheden + Bescherming voor gevoelige informatie zoals absoluut rendement en hoeveelheden - apps/client/src/app/pages/user-account/user-account-page.html - 85,88 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 8,11 - + Distraction-free experience for turbulent times - Afleidingsvrije ervaring voor roerige tijden + Afleidingsvrije ervaring voor roerige tijden - apps/client/src/app/pages/user-account/user-account-page.html - 228,230 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 137,139 - + Sneak peek at upcoming functionality - Voorproefje van nieuwe functionaliteit + Voorproefje van nieuwe functionaliteit - apps/client/src/app/pages/user-account/user-account-page.html - 263,265 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 170,172 @@ -3741,7 +3757,7 @@ apps/client/src/app/pages/portfolio/fire/fire-page.html - 137 + 150 @@ -3884,8 +3900,8 @@ Renew Vernieuw - apps/client/src/app/pages/user-account/user-account-page.html - 44 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 29 @@ -3977,7 +3993,7 @@ Wil je dit platform echt verwijderen? apps/client/src/app/components/admin-platform/admin-platform.component.ts - 76 + 78 @@ -4039,6 +4055,14 @@ apps/client/src/app/pages/admin/admin-page.component.ts 31 + + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 17 + + + apps/client/src/app/pages/user-account/user-account-page.component.ts + 34 + Equity @@ -4056,14 +4080,6 @@ 15 - - Set as Benchmark - Instellen als benchmark - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 45 - - Manage Benchmarks Beheer Benchmarks @@ -4133,7 +4149,7 @@ Persoonlijke financiën apps/client/src/app/app.component.html - 54 + 55 @@ -4141,7 +4157,7 @@ Veelgestelde Vragen apps/client/src/app/app.component.html - 75 + 76 @@ -4353,7 +4369,7 @@ Scraper instellingen apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 167 + 171 @@ -4491,6 +4507,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 63 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 63 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 63 + Origin @@ -4603,6 +4627,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 68 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 68 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 68 + Region @@ -4715,6 +4747,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 73 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 73 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 73 + Available in @@ -4827,6 +4867,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 78,80 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 78,80 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 78,80 + ✅ Yes @@ -4939,6 +4987,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 100 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 100 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 100 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 107 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 107 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 107 @@ -5155,6 +5219,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 121 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 121 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 121 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 132 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 132 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 132 @@ -5371,6 +5451,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 146 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 146 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 146 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 153 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 153 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 153 @@ -5587,6 +5683,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 165 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 165 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 165 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 172 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 172 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 172 @@ -5807,6 +5919,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 102 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 102 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 102 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 125 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 125 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 125 @@ -6023,6 +6151,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 136 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 136 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 136 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 148 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 148 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 148 @@ -6239,6 +6383,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 155 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 155 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 155 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 167 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 167 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 167 @@ -6455,6 +6615,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 174 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 174 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 174 + ❌ No @@ -6567,6 +6735,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 109,110 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 109,110 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 109,110 + Self-Hosting @@ -6679,6 +6855,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 114,116 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 114,116 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 114,116 + Use anonymously @@ -6791,6 +6975,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 141,143 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 141,143 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 141,143 + Free Plan @@ -6903,6 +7095,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 160,162 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 160,162 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 160,162 + Notes @@ -7015,6 +7215,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 191 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. @@ -7127,10 +7335,26 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 215,218 - - - Personal Finance Tools - Tools voor persoonlijke financiën + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 215,218 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 215,218 + + + + Personal Finance Tools + Tools voor persoonlijke financiën + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 287 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 287 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 287 @@ -7444,8 +7668,8 @@ Biometric Authentication Biometrische authenticatie - apps/client/src/app/pages/user-account/user-account-page.html - 243 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 152 @@ -7528,8 +7752,8 @@ Export Data Exporteer Data - apps/client/src/app/pages/user-account/user-account-page.html - 284 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 191 @@ -7621,7 +7845,7 @@ apps/client/src/app/pages/landing/landing-page.html - 426,428 + 431,433 @@ -7813,7 +8037,7 @@ Leden van over de hele wereld gebruikenGhostfolio Premium apps/client/src/app/pages/landing/landing-page.html - 353,355 + 358,360 @@ -7821,7 +8045,7 @@ Hoe Ghostfolio werkt? apps/client/src/app/pages/landing/landing-page.html - 368,370 + 373,375 @@ -7829,7 +8053,7 @@ Anoniem aanmelden* apps/client/src/app/pages/landing/landing-page.html - 377 + 382 @@ -7837,7 +8061,7 @@ * geen e-mailadres of creditcard nodig apps/client/src/app/pages/landing/landing-page.html - 379 + 384 @@ -7845,7 +8069,7 @@ Voeg al je historische transacties toe apps/client/src/app/pages/landing/landing-page.html - 390,392 + 395,397 @@ -7853,7 +8077,7 @@ Krijg waardevolle inzichten in de samenstelling van je portefeuille apps/client/src/app/pages/landing/landing-page.html - 402,404 + 407,409 @@ -7861,7 +8085,7 @@ Ben je er klaar voor? apps/client/src/app/pages/landing/landing-page.html - 414 + 419 @@ -7869,7 +8093,7 @@ Nu lid worden of bekijk het voorbeeld account apps/client/src/app/pages/landing/landing-page.html - 415,418 + 420,423 @@ -7881,7 +8105,7 @@ apps/client/src/app/pages/landing/landing-page.html - 431 + 436 @@ -7897,7 +8121,7 @@ Aan de slag in slechts 3 stappen apps/client/src/app/pages/landing/landing-page.html - 371 + 376 @@ -7929,11 +8153,11 @@ apps/client/src/app/components/header/header.component.ts - 47 + 72 apps/client/src/app/components/header/header.component.ts - 52 + 77 apps/client/src/app/pages/about/overview/about-overview-page.component.ts @@ -7991,6 +8215,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts 26 @@ -8059,6 +8287,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts 26 @@ -8101,11 +8333,11 @@ apps/client/src/app/components/header/header.component.ts - 46 + 71 apps/client/src/app/components/header/header.component.ts - 51 + 76 apps/client/src/app/pages/about/about-page.component.ts @@ -8175,6 +8407,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts 25 @@ -8243,6 +8479,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts 25 @@ -8305,11 +8545,11 @@ apps/client/src/app/components/header/header.component.ts - 48 + 73 apps/client/src/app/components/header/header.component.ts - 53 + 78 apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts @@ -8337,11 +8577,11 @@ apps/client/src/app/components/header/header.component.ts - 49 + 74 apps/client/src/app/components/header/header.component.ts - 54 + 79 apps/client/src/app/components/home-summary/home-summary.component.ts @@ -8351,6 +8591,10 @@ apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts 14 + + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 37 + apps/client/src/app/core/http-response.interceptor.ts 80 @@ -8397,7 +8641,7 @@ apps/client/src/app/components/header/header.component.ts - 55 + 80 apps/client/src/app/core/auth.guard.ts @@ -8433,11 +8677,11 @@ apps/client/src/app/components/header/header.component.ts - 50 + 75 apps/client/src/app/components/header/header.component.ts - 56 + 81 apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts @@ -8455,6 +8699,10 @@ apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts 14 + + apps/client/src/app/pages/features/features-page.component.ts + 18 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts 14 @@ -8483,6 +8731,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts 28 @@ -8551,6 +8803,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts 28 @@ -8715,6 +8971,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 8 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. @@ -8827,6 +9091,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 13,25 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. @@ -8939,6 +9211,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 26,36 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + Let’s dive deeper into the detailed comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. @@ -9051,6 +9331,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 37,43 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,43 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,43 + Starting from / year @@ -9163,6 +9451,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 180,182 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 180,182 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 180,182 + Starting from / year @@ -9275,6 +9571,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 185,186 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185,186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185,186 + open-source-alternative-to @@ -9399,6 +9703,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 199,208 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 199,208 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 199,208 + Ready to take your investments to the next level? @@ -9511,6 +9823,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 211,214 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 211,214 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 211,214 + Get Started @@ -9623,29 +9943,37 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 220,222 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,222 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,222 + Switzerland Zwitserland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 49 + 51 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 61 + 63 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 333 + 351 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 344 + 362 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 345 + 363 @@ -9653,15 +9981,15 @@ Wereldwijd apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 51 + 53 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 182 + 193 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 283 + 294 @@ -9669,39 +9997,43 @@ Verenigde Staten apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 80 + 82 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 114 + 116 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 168 + 126 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 193 + 179 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 195 + 204 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 259 + 206 apps/client/src/app/pages/resources/personal-finance-tools/products.ts 270 + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 281 + Belgium België apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 92 + 94 @@ -9709,31 +10041,31 @@ Duitsland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 69 + 71 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 103 + 105 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 137 + 148 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 147 + 158 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 157 + 168 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 180 + 191 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 215 + 226 @@ -9741,7 +10073,7 @@ Oostenrijk apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 125 + 136 @@ -9749,7 +10081,7 @@ Italië apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 226 + 237 @@ -9757,7 +10089,7 @@ Nederland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 236 + 247 @@ -9765,7 +10097,7 @@ Thailand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 248 + 259 @@ -9773,7 +10105,7 @@ Nieuw-Zeeland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 281 + 292 @@ -9781,11 +10113,11 @@ Tsjechië apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 292 + 303 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 322 + 340 @@ -9909,7 +10241,7 @@ Do you really want to delete this tag? apps/client/src/app/components/admin-tag/admin-tag.component.ts - 76 + 78 @@ -9933,11 +10265,11 @@ France apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 303 + 314 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 312 + 330 @@ -9953,7 +10285,7 @@ Currency Cluster Risks apps/client/src/app/pages/portfolio/fire/fire-page.html - 111 + 124 @@ -9961,7 +10293,115 @@ Account Cluster Risks apps/client/src/app/pages/portfolio/fire/fire-page.html - 124 + 137 + + + + Transfer Cash Balance + Transfer Cash Balance + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 8 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + + Benchmark + Benchmark + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 154 + + + + Version + Version + + apps/client/src/app/components/admin-overview/admin-overview.html + 7 + + + + Settings + Settings + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 + + + + From + From + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 + + + + To + To + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 21 + + + + Transfer + Transfer + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 50 + + + + Finland + Finland + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 322 + + + + Membership + 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 + + + + Access + 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 + + + + Find holding... + Find holding... + + libs/ui/src/lib/assistant/assistant.component.ts + 87 + + + + No entries... + No entries... + + libs/ui/src/lib/assistant/assistant.html + 62 diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 19a8df179..f5050eab8 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -6,7 +6,7 @@ O risco de perda em investimentos pode ser substancial. Não é aconselhável investir dinheiro que possa vir a precisar a curto prazo. apps/client/src/app/app.component.html - 174,175 + 175,176 @@ -17,8 +17,8 @@ 15 - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 6 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 11 @@ -38,15 +38,15 @@ apps/client/src/app/components/admin-jobs/admin-jobs.html - 20 + 28 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 12 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 22 - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 17 + 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/activities-table.component.html @@ -86,11 +86,11 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 65 + 76 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 36 + 44 @@ -106,11 +106,11 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 93 + 104 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 88 + 81 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -134,7 +134,7 @@ Nome apps/client/src/app/components/accounts-table/accounts-table.component.html - 22 + 33 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -154,7 +154,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 7 + 12 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -174,7 +174,7 @@ Total apps/client/src/app/components/accounts-table/accounts-table.component.html - 38 + 49 libs/ui/src/lib/activities-table/activities-table.component.html @@ -186,15 +186,15 @@ Moeda apps/client/src/app/components/accounts-table/accounts-table.component.html - 48 + 59 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 69 + 62 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 13 + 22 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -214,11 +214,11 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 110 + 121 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 23 + 32 @@ -226,11 +226,15 @@ Valor apps/client/src/app/components/accounts-table/accounts-table.component.html - 145 + 156 apps/client/src/app/components/accounts-table/accounts-table.component.html - 180 + 191 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 31 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -278,7 +282,7 @@ Editar apps/client/src/app/components/accounts-table/accounts-table.component.html - 246 + 257 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -298,7 +302,7 @@ Eliminar apps/client/src/app/components/accounts-table/accounts-table.component.html - 254 + 265 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -322,7 +326,7 @@ Pretende realmente eliminar esta conta? apps/client/src/app/components/accounts-table/accounts-table.component.ts - 82 + 83 @@ -330,7 +334,7 @@ Símbolo apps/client/src/app/components/admin-jobs/admin-jobs.html - 21 + 50 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -338,7 +342,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 64 + 57 @@ -346,7 +350,7 @@ Fonte de dados apps/client/src/app/components/admin-jobs/admin-jobs.html - 22 + 59 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -362,7 +366,7 @@ Tentativas apps/client/src/app/components/admin-jobs/admin-jobs.html - 23 + 68 @@ -370,7 +374,7 @@ Criado apps/client/src/app/components/admin-jobs/admin-jobs.html - 24 + 77 @@ -378,7 +382,7 @@ Terminado apps/client/src/app/components/admin-jobs/admin-jobs.html - 25 + 86 @@ -386,7 +390,7 @@ Estado apps/client/src/app/components/admin-jobs/admin-jobs.html - 26 + 95 @@ -394,7 +398,7 @@ Eliminar Tarefas apps/client/src/app/components/admin-jobs/admin-jobs.html - 38 + 140 @@ -402,7 +406,7 @@ Perfil de Ativos apps/client/src/app/components/admin-jobs/admin-jobs.html - 55 + 37 @@ -410,7 +414,7 @@ Histórico de Dados de Mercado apps/client/src/app/components/admin-jobs/admin-jobs.html - 60 + 42 @@ -418,7 +422,7 @@ Visualizar dados apps/client/src/app/components/admin-jobs/admin-jobs.html - 115 + 155 @@ -426,7 +430,7 @@ Ver Stacktrace apps/client/src/app/components/admin-jobs/admin-jobs.html - 122 + 162 @@ -434,7 +438,7 @@ Apagar Tarefa apps/client/src/app/components/admin-jobs/admin-jobs.html - 125 + 165 @@ -482,7 +486,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 191 + 195 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -496,9 +500,17 @@ apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html 13 + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 30 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 79 + 95 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 43 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -508,10 +520,6 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 37 - - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 25 - Save @@ -522,7 +530,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 198 + 202 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -536,18 +544,18 @@ apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html 20 + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 37 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 86 + 102 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 364 - - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 32 - Filter by... @@ -566,7 +574,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 93 + 86 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -586,7 +594,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 102 + 95 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -606,7 +614,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 79 + 72 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -618,7 +626,7 @@ Número de Atividades apps/client/src/app/components/admin-overview/admin-overview.html - 17 + 23 @@ -678,7 +686,7 @@ Por favor, adicione uma moeda: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 112 + 114 @@ -686,7 +694,7 @@ Deseja realmente eliminar este cupão? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 126 + 128 @@ -694,7 +702,7 @@ Deseja realmente excluir esta moeda? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 139 + 141 @@ -702,7 +710,7 @@ Deseja realmente limpar a cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 156 + 158 @@ -710,7 +718,7 @@ Por favor, defina a sua mensagem do sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 186 + 188 @@ -718,7 +726,7 @@ Número de Utilizadores apps/client/src/app/components/admin-overview/admin-overview.html - 7 + 13 @@ -726,7 +734,7 @@ por Utilizador apps/client/src/app/components/admin-overview/admin-overview.html - 26 + 32 @@ -734,7 +742,7 @@ Taxas de Câmbio apps/client/src/app/components/admin-overview/admin-overview.html - 31 + 37 @@ -742,7 +750,7 @@ Adicionar Moeda apps/client/src/app/components/admin-overview/admin-overview.html - 70 + 76 @@ -750,7 +758,7 @@ Mensagem de Sistema apps/client/src/app/components/admin-overview/admin-overview.html - 96 + 102 @@ -758,7 +766,7 @@ Definir Mensagem apps/client/src/app/components/admin-overview/admin-overview.html - 118 + 124 @@ -766,7 +774,7 @@ Modo Somente Leitura apps/client/src/app/components/admin-overview/admin-overview.html - 86 + 92 @@ -774,7 +782,7 @@ Cupões apps/client/src/app/components/admin-overview/admin-overview.html - 126 + 132 @@ -782,7 +790,7 @@ Adicionar apps/client/src/app/components/admin-overview/admin-overview.html - 170 + 176 @@ -790,7 +798,7 @@ Manutenção apps/client/src/app/components/admin-overview/admin-overview.html - 177 + 183 @@ -798,7 +806,7 @@ Limpar Cache apps/client/src/app/components/admin-overview/admin-overview.html - 181 + 187 @@ -818,7 +826,7 @@ apps/client/src/app/components/header/header.component.html - 164 + 189 @@ -846,7 +854,7 @@ apps/client/src/app/components/header/header.component.html - 196 + 221 apps/client/src/app/pages/accounts/accounts-page.html @@ -930,7 +938,7 @@ apps/client/src/app/components/header/header.component.html - 178 + 203 @@ -942,7 +950,7 @@ apps/client/src/app/components/header/header.component.html - 188 + 213 @@ -954,7 +962,7 @@ apps/client/src/app/components/header/header.component.html - 212 + 237 @@ -962,7 +970,7 @@ Recursos apps/client/src/app/app.component.html - 59 + 60 apps/client/src/app/components/header/header.component.html @@ -970,7 +978,7 @@ apps/client/src/app/components/header/header.component.html - 223 + 248 apps/client/src/app/pages/resources/resources-page.html @@ -982,7 +990,7 @@ Preços apps/client/src/app/app.component.html - 85 + 86 apps/client/src/app/components/header/header.component.html @@ -990,11 +998,19 @@ apps/client/src/app/components/header/header.component.html - 235 + 260 apps/client/src/app/components/header/header.component.html - 304 + 329 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 179 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 179 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -1110,7 +1126,7 @@ Sobre apps/client/src/app/app.component.html - 65 + 66 apps/client/src/app/components/header/header.component.html @@ -1118,7 +1134,7 @@ apps/client/src/app/components/header/header.component.html - 291 + 316 @@ -1126,7 +1142,7 @@ Eu apps/client/src/app/components/header/header.component.html - 145 + 170 @@ -1134,7 +1150,7 @@ O meu Ghostfolio apps/client/src/app/components/header/header.component.html - 203 + 228 @@ -1142,7 +1158,7 @@ Sobre o Ghostfolio apps/client/src/app/components/header/header.component.html - 243 + 268 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1154,11 +1170,11 @@ Funcionalidades apps/client/src/app/app.component.html - 72 + 73 apps/client/src/app/components/header/header.component.html - 278 + 303 apps/client/src/app/pages/features/features-page.html @@ -1170,11 +1186,11 @@ Mercados apps/client/src/app/app.component.html - 57 + 58 apps/client/src/app/components/header/header.component.html - 320 + 345 apps/client/src/app/components/home-market/home-market.html @@ -1190,7 +1206,7 @@ Iniciar sessão apps/client/src/app/components/header/header.component.html - 333 + 358 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1202,7 +1218,7 @@ Começar apps/client/src/app/components/header/header.component.html - 345 + 370 @@ -1210,7 +1226,7 @@ Iniciar sessão apps/client/src/app/components/header/header.component.ts - 131 + 169 apps/client/src/app/pages/webauthn/webauthn-page-routing.module.ts @@ -1222,7 +1238,7 @@ Oops! Token de Segurança Incorreto. apps/client/src/app/components/header/header.component.ts - 145 + 183 @@ -1346,7 +1362,7 @@ apps/client/src/app/pages/landing/landing-page.html - 430 + 435 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html @@ -1501,7 +1517,7 @@ apps/client/src/app/pages/portfolio/fire/fire-page.html - 150 + 111 @@ -1637,7 +1653,7 @@ Setor apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 117 + 110 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1649,7 +1665,7 @@ País apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 126 + 119 apps/client/src/app/components/admin-users/admin-users.html @@ -1665,7 +1681,7 @@ Setores apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 132 + 125 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1681,7 +1697,7 @@ Países apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 142 + 135 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1837,7 +1853,7 @@ Changelog apps/client/src/app/app.component.html - 70 + 71 apps/client/src/app/pages/about/changelog/changelog-page.html @@ -1849,7 +1865,7 @@ Licença apps/client/src/app/app.component.html - 79 + 80 apps/client/src/app/pages/about/license/license-page.html @@ -1873,7 +1889,7 @@ Política de Privacidade apps/client/src/app/app.component.html - 89 + 90 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html @@ -1885,55 +1901,55 @@ O meu Ghostfolio apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 12 + 32 Auto Auto - apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 35 Please enter your coupon code: Por favor, insira o seu código de cupão: - apps/client/src/app/pages/user-account/user-account-page.component.ts - 263 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 110 Could not redeem coupon code Não foi possível resgatar o código de cupão - apps/client/src/app/pages/user-account/user-account-page.component.ts - 273 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 120 Coupon code has been redeemed Código de cupão foi resgatado - apps/client/src/app/pages/user-account/user-account-page.component.ts - 285 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 132 Reload Atualizar - apps/client/src/app/pages/user-account/user-account-page.component.ts - 286 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 133 Do you really want to remove this sign in method? Deseja realmente remover este método de início de sessão? - apps/client/src/app/pages/user-account/user-account-page.component.ts - 332 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 184 @@ -1943,10 +1959,6 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 75 - - apps/client/src/app/pages/user-account/user-account-page.html - 4 - libs/ui/src/lib/activities-table/activities-table.component.html 379 @@ -1956,68 +1968,68 @@ Membership Filiação - apps/client/src/app/pages/user-account/user-account-page.html - 12 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 2 Upgrade Atualizar - apps/client/src/app/pages/user-account/user-account-page.html - 39 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 26 per year por ano - apps/client/src/app/pages/pricing/pricing-page.html - 332 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 41 - apps/client/src/app/pages/user-account/user-account-page.html - 56 + apps/client/src/app/pages/pricing/pricing-page.html + 332 Try Premium Experimentar Premium - apps/client/src/app/pages/user-account/user-account-page.html - 64 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 49 Redeem Coupon Resgatar Cupão - apps/client/src/app/pages/user-account/user-account-page.html - 77 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 62 Presenter View Vista do Apresentador - apps/client/src/app/pages/user-account/user-account-page.html - 84 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 7 Base Currency Moeda Base - apps/client/src/app/pages/user-account/user-account-page.html - 103 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 26 Language Língua - apps/client/src/app/pages/user-account/user-account-page.html - 127 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 47 @@ -2036,108 +2048,108 @@ Locale Localidade - apps/client/src/app/pages/user-account/user-account-page.html - 173 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 90 Date and number format Formato de números e datas - apps/client/src/app/pages/user-account/user-account-page.html - 175 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 92 Zen Mode Modo Zen - apps/client/src/app/pages/features/features-page.html - 192 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 136 - apps/client/src/app/pages/user-account/user-account-page.html - 227 + apps/client/src/app/pages/features/features-page.html + 192 Appearance Aparência - apps/client/src/app/pages/user-account/user-account-page.html - 201 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 113 Auto Auto - apps/client/src/app/pages/user-account/user-account-page.html - 216 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 125 Light Claro - apps/client/src/app/pages/user-account/user-account-page.html - 217 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 126 Dark Escuro - apps/client/src/app/pages/user-account/user-account-page.html - 218 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 127 - - Sign in with fingerprint - Iniciar sessão com impressão digital + + Sign in with fingerprint + Iniciar sessão com impressão digital - apps/client/src/app/pages/user-account/user-account-page.html - 244,246 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 153 Experimental Features Funcionalidades Experimentais - apps/client/src/app/pages/user-account/user-account-page.html - 262 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 169 User ID ID do Utilizador - apps/client/src/app/pages/user-account/user-account-page.html - 277 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 184 Granted Access Acesso Concedido - apps/client/src/app/pages/user-account/user-account-page.html - 295 + apps/client/src/app/components/user-account-access/user-account-access.html + 5 Grant access Conceder Acesso - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 2 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 7 Public Público - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 19 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 @@ -2153,7 +2165,7 @@ Atualizar conta apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 2 + 7 @@ -2161,7 +2173,7 @@ Adicionar conta apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 3 + 8 @@ -2177,7 +2189,7 @@ ID da Conta apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 68 + 89 @@ -2201,7 +2213,7 @@ Blog apps/client/src/app/app.component.html - 67 + 68 apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html @@ -2309,7 +2321,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 44 + 33 apps/client/src/app/pages/zen/zen-page-routing.module.ts @@ -2329,7 +2341,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 59 + 48 apps/client/src/app/pages/markets/markets-page-routing.module.ts @@ -2437,11 +2449,11 @@ Nota apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 178 + 182 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 47 + 72 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2733,7 +2745,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 49 + 38 apps/client/src/app/pages/portfolio/holdings/holdings-page-routing.module.ts @@ -2759,6 +2771,10 @@ apps/client/src/app/pages/public/public-page.html 14 + + libs/ui/src/lib/assistant/assistant.html + 46 + Pricing @@ -3277,7 +3293,7 @@ Mapeamento de Símbolo apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 156 + 160 @@ -3285,7 +3301,7 @@ Registo do Utilizador apps/client/src/app/components/admin-overview/admin-overview.html - 76 + 82 @@ -3293,35 +3309,35 @@ Comunidade apps/client/src/app/app.component.html - 104 + 105 - apps/client/src/app/pages/features/features-page.html - 259 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 61 - apps/client/src/app/pages/user-account/user-account-page.html - 144 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 65 - apps/client/src/app/pages/user-account/user-account-page.html - 148 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 69 - apps/client/src/app/pages/user-account/user-account-page.html - 152 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 73 - apps/client/src/app/pages/user-account/user-account-page.html - 156 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 77 - apps/client/src/app/pages/user-account/user-account-page.html - 160 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 81 - apps/client/src/app/pages/user-account/user-account-page.html - 164 + apps/client/src/app/pages/features/features-page.html + 259 @@ -3345,7 +3361,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 54 + 43 @@ -3432,8 +3448,8 @@ Valid until Válido até - apps/client/src/app/pages/user-account/user-account-page.html - 24 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 17 @@ -3484,28 +3500,28 @@ 23 - + Protection for sensitive information like absolute performances and quantity values - Proteção para informações sensíveis, como desempenhos absolutos e valores quantitativos + Proteção para informações sensíveis, como desempenhos absolutos e valores quantitativos - apps/client/src/app/pages/user-account/user-account-page.html - 85,88 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 8,11 - + Distraction-free experience for turbulent times - Experiência sem distrações para tempos turbulentos + Experiência sem distrações para tempos turbulentos - apps/client/src/app/pages/user-account/user-account-page.html - 228,230 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 137,139 - + Sneak peek at upcoming functionality - Acesso antecipado a funcionalidades futuras + Acesso antecipado a funcionalidades futuras - apps/client/src/app/pages/user-account/user-account-page.html - 263,265 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 170,172 @@ -3741,7 +3757,7 @@ apps/client/src/app/pages/portfolio/fire/fire-page.html - 137 + 150 @@ -3884,8 +3900,8 @@ Renew Renovar - apps/client/src/app/pages/user-account/user-account-page.html - 44 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 29 @@ -3977,7 +3993,7 @@ Deseja mesmo eliminar esta plataforma? apps/client/src/app/components/admin-platform/admin-platform.component.ts - 76 + 78 @@ -4039,6 +4055,14 @@ apps/client/src/app/pages/admin/admin-page.component.ts 31 + + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 17 + + + apps/client/src/app/pages/user-account/user-account-page.component.ts + 34 + Equity @@ -4056,14 +4080,6 @@ 15 - - Set as Benchmark - Definir como Referência - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 45 - - Manage Benchmarks Gerir Referências @@ -4133,7 +4149,7 @@ Finanças pessoais apps/client/src/app/app.component.html - 54 + 55 @@ -4141,7 +4157,7 @@ Perguntas Frequentes (FAQ) apps/client/src/app/app.component.html - 75 + 76 @@ -4353,7 +4369,7 @@ Scraper Configuration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 167 + 171 @@ -4491,6 +4507,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 63 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 63 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 63 + Origin @@ -4603,6 +4627,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 68 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 68 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 68 + Region @@ -4715,6 +4747,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 73 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 73 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 73 + Available in @@ -4827,6 +4867,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 78,80 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 78,80 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 78,80 + ✅ Yes @@ -4939,6 +4987,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 100 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 100 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 100 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 107 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 107 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 107 @@ -5155,6 +5219,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 121 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 121 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 121 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 132 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 132 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 132 @@ -5371,6 +5451,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 146 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 146 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 146 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 153 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 153 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 153 @@ -5587,6 +5683,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 165 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 165 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 165 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 172 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 172 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 172 @@ -5807,6 +5919,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 102 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 102 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 102 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 125 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 125 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 125 @@ -6023,6 +6151,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 136 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 136 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 136 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 148 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 148 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 148 @@ -6239,6 +6383,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 155 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 155 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 155 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 167 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 167 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 167 @@ -6455,6 +6615,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 174 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 174 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 174 + ❌ No @@ -6567,6 +6735,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 109,110 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 109,110 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 109,110 + Self-Hosting @@ -6679,6 +6855,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 114,116 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 114,116 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 114,116 + Use anonymously @@ -6791,6 +6975,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 141,143 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 141,143 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 141,143 + Free Plan @@ -6903,6 +7095,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 160,162 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 160,162 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 160,162 + Notes @@ -7015,6 +7215,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 191 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. @@ -7127,10 +7335,26 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 215,218 - - - Personal Finance Tools - Personal Finance Tools + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 215,218 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 215,218 + + + + Personal Finance Tools + Personal Finance Tools + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 287 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 287 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 287 @@ -7444,8 +7668,8 @@ Biometric Authentication Biometric Authentication - apps/client/src/app/pages/user-account/user-account-page.html - 243 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 152 @@ -7528,8 +7752,8 @@ Export Data Export Data - apps/client/src/app/pages/user-account/user-account-page.html - 284 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 191 @@ -7621,7 +7845,7 @@ apps/client/src/app/pages/landing/landing-page.html - 426,428 + 431,433 @@ -7813,7 +8037,7 @@ Members from around the globe are using Ghostfolio Premium apps/client/src/app/pages/landing/landing-page.html - 353,355 + 358,360 @@ -7821,7 +8045,7 @@ How does Ghostfolio work? apps/client/src/app/pages/landing/landing-page.html - 368,370 + 373,375 @@ -7829,7 +8053,7 @@ Sign up anonymously* apps/client/src/app/pages/landing/landing-page.html - 377 + 382 @@ -7837,7 +8061,7 @@ * no e-mail address nor credit card required apps/client/src/app/pages/landing/landing-page.html - 379 + 384 @@ -7845,7 +8069,7 @@ Add any of your historical transactions apps/client/src/app/pages/landing/landing-page.html - 390,392 + 395,397 @@ -7853,7 +8077,7 @@ Get valuable insights of your portfolio composition apps/client/src/app/pages/landing/landing-page.html - 402,404 + 407,409 @@ -7861,7 +8085,7 @@ Are you ready? apps/client/src/app/pages/landing/landing-page.html - 414 + 419 @@ -7869,7 +8093,7 @@ Join now or check out the example account apps/client/src/app/pages/landing/landing-page.html - 415,418 + 420,423 @@ -7881,7 +8105,7 @@ apps/client/src/app/pages/landing/landing-page.html - 431 + 436 @@ -7897,7 +8121,7 @@ Get started in only 3 steps apps/client/src/app/pages/landing/landing-page.html - 371 + 376 @@ -7929,11 +8153,11 @@ apps/client/src/app/components/header/header.component.ts - 47 + 72 apps/client/src/app/components/header/header.component.ts - 52 + 77 apps/client/src/app/pages/about/overview/about-overview-page.component.ts @@ -7991,6 +8215,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts 26 @@ -8059,6 +8287,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts 26 @@ -8101,11 +8333,11 @@ apps/client/src/app/components/header/header.component.ts - 46 + 71 apps/client/src/app/components/header/header.component.ts - 51 + 76 apps/client/src/app/pages/about/about-page.component.ts @@ -8175,6 +8407,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts 25 @@ -8243,6 +8479,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts 25 @@ -8305,11 +8545,11 @@ apps/client/src/app/components/header/header.component.ts - 48 + 73 apps/client/src/app/components/header/header.component.ts - 53 + 78 apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts @@ -8337,11 +8577,11 @@ apps/client/src/app/components/header/header.component.ts - 49 + 74 apps/client/src/app/components/header/header.component.ts - 54 + 79 apps/client/src/app/components/home-summary/home-summary.component.ts @@ -8351,6 +8591,10 @@ apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts 14 + + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 37 + apps/client/src/app/core/http-response.interceptor.ts 80 @@ -8397,7 +8641,7 @@ apps/client/src/app/components/header/header.component.ts - 55 + 80 apps/client/src/app/core/auth.guard.ts @@ -8433,11 +8677,11 @@ apps/client/src/app/components/header/header.component.ts - 50 + 75 apps/client/src/app/components/header/header.component.ts - 56 + 81 apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts @@ -8455,6 +8699,10 @@ apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts 14 + + apps/client/src/app/pages/features/features-page.component.ts + 18 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts 14 @@ -8483,6 +8731,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts 28 @@ -8551,6 +8803,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts 28 @@ -8715,6 +8971,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 8 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. @@ -8827,6 +9091,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 13,25 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. @@ -8939,6 +9211,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 26,36 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + Let’s dive deeper into the detailed comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. @@ -9051,6 +9331,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 37,43 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,43 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,43 + Starting from / year @@ -9163,6 +9451,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 180,182 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 180,182 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 180,182 + Starting from / year @@ -9275,6 +9571,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 185,186 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185,186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185,186 + open-source-alternative-to @@ -9399,6 +9703,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 199,208 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 199,208 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 199,208 + Ready to take your investments to the next level? @@ -9511,6 +9823,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 211,214 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 211,214 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 211,214 + Get Started @@ -9623,29 +9943,37 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 220,222 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,222 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,222 + Switzerland Switzerland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 49 + 51 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 61 + 63 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 333 + 351 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 344 + 362 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 345 + 363 @@ -9653,15 +9981,15 @@ Global apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 51 + 53 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 182 + 193 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 283 + 294 @@ -9669,39 +9997,43 @@ United States apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 80 + 82 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 114 + 116 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 168 + 126 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 193 + 179 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 195 + 204 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 259 + 206 apps/client/src/app/pages/resources/personal-finance-tools/products.ts 270 + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 281 + Belgium Belgium apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 92 + 94 @@ -9709,31 +10041,31 @@ Germany apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 69 + 71 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 103 + 105 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 137 + 148 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 147 + 158 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 157 + 168 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 180 + 191 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 215 + 226 @@ -9741,7 +10073,7 @@ Austria apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 125 + 136 @@ -9749,7 +10081,7 @@ Italy apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 226 + 237 @@ -9757,7 +10089,7 @@ Netherlands apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 236 + 247 @@ -9765,7 +10097,7 @@ Thailand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 248 + 259 @@ -9773,7 +10105,7 @@ New Zealand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 281 + 292 @@ -9781,11 +10113,11 @@ Czech Republic apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 292 + 303 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 322 + 340 @@ -9909,7 +10241,7 @@ Do you really want to delete this tag? apps/client/src/app/components/admin-tag/admin-tag.component.ts - 76 + 78 @@ -9933,11 +10265,11 @@ France apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 303 + 314 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 312 + 330 @@ -9953,7 +10285,7 @@ Currency Cluster Risks apps/client/src/app/pages/portfolio/fire/fire-page.html - 111 + 124 @@ -9961,7 +10293,115 @@ Account Cluster Risks apps/client/src/app/pages/portfolio/fire/fire-page.html - 124 + 137 + + + + Transfer Cash Balance + Transfer Cash Balance + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 8 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + + Benchmark + Benchmark + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 154 + + + + Version + Version + + apps/client/src/app/components/admin-overview/admin-overview.html + 7 + + + + Settings + Settings + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 + + + + From + From + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 + + + + To + To + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 21 + + + + Transfer + Transfer + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 50 + + + + Finland + Finland + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 322 + + + + Membership + 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 + + + + Access + 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 + + + + Find holding... + Find holding... + + libs/ui/src/lib/assistant/assistant.component.ts + 87 + + + + No entries... + No entries... + + libs/ui/src/lib/assistant/assistant.html + 62 diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 61cdc0972..6c9b733c5 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 - 46 + 71 apps/client/src/app/components/header/header.component.ts - 51 + 76 apps/client/src/app/pages/about/about-page.component.ts @@ -100,6 +100,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts 25 @@ -168,6 +172,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts 25 @@ -214,11 +222,11 @@ apps/client/src/app/components/header/header.component.ts - 47 + 72 apps/client/src/app/components/header/header.component.ts - 52 + 77 apps/client/src/app/pages/about/overview/about-overview-page.component.ts @@ -276,6 +284,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts 26 @@ -344,6 +356,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts 26 @@ -390,11 +406,11 @@ apps/client/src/app/components/header/header.component.ts - 48 + 73 apps/client/src/app/components/header/header.component.ts - 53 + 78 apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts @@ -422,11 +438,11 @@ apps/client/src/app/components/header/header.component.ts - 49 + 74 apps/client/src/app/components/header/header.component.ts - 54 + 79 apps/client/src/app/components/home-summary/home-summary.component.ts @@ -436,6 +452,10 @@ apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts 14 + + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 37 + apps/client/src/app/core/http-response.interceptor.ts 80 @@ -498,7 +518,7 @@ apps/client/src/app/components/header/header.component.ts - 55 + 80 apps/client/src/app/core/auth.guard.ts @@ -534,11 +554,11 @@ apps/client/src/app/components/header/header.component.ts - 50 + 75 apps/client/src/app/components/header/header.component.ts - 56 + 81 apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts @@ -556,6 +576,10 @@ apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts 14 + + apps/client/src/app/pages/features/features-page.component.ts + 18 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts 14 @@ -584,6 +608,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts 28 @@ -652,6 +680,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts 28 @@ -678,7 +710,7 @@ Kişisel Finans apps/client/src/app/app.component.html - 54 + 55 @@ -686,11 +718,11 @@ Piyasalar apps/client/src/app/app.component.html - 57 + 58 apps/client/src/app/components/header/header.component.html - 320 + 345 apps/client/src/app/components/home-market/home-market.html @@ -706,7 +738,7 @@ Piyasalar apps/client/src/app/app.component.html - 59 + 60 apps/client/src/app/components/header/header.component.html @@ -714,7 +746,7 @@ apps/client/src/app/components/header/header.component.html - 223 + 248 apps/client/src/app/pages/resources/resources-page.html @@ -726,7 +758,7 @@ Hakkında apps/client/src/app/app.component.html - 65 + 66 apps/client/src/app/components/header/header.component.html @@ -734,7 +766,7 @@ apps/client/src/app/components/header/header.component.html - 291 + 316 @@ -742,7 +774,7 @@ Blog apps/client/src/app/app.component.html - 67 + 68 apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html @@ -822,7 +854,7 @@ Değişiklik Günlüğü apps/client/src/app/app.component.html - 70 + 71 apps/client/src/app/pages/about/changelog/changelog-page.html @@ -834,11 +866,11 @@ Özellikler apps/client/src/app/app.component.html - 72 + 73 apps/client/src/app/components/header/header.component.html - 278 + 303 apps/client/src/app/pages/features/features-page.html @@ -850,7 +882,7 @@ Sıkça Sorulan Sorular (SSS) apps/client/src/app/app.component.html - 75 + 76 @@ -858,7 +890,7 @@ Lisans apps/client/src/app/app.component.html - 79 + 80 apps/client/src/app/pages/about/license/license-page.html @@ -870,7 +902,7 @@ Fiyatlandırma apps/client/src/app/app.component.html - 85 + 86 apps/client/src/app/components/header/header.component.html @@ -878,11 +910,19 @@ apps/client/src/app/components/header/header.component.html - 235 + 260 apps/client/src/app/components/header/header.component.html - 304 + 329 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 179 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 179 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -998,7 +1038,7 @@ Gizlilik Politikası apps/client/src/app/app.component.html - 89 + 90 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html @@ -1010,35 +1050,35 @@ Topluluk apps/client/src/app/app.component.html - 104 + 105 - apps/client/src/app/pages/features/features-page.html - 259 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 61 - apps/client/src/app/pages/user-account/user-account-page.html - 144 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 65 - apps/client/src/app/pages/user-account/user-account-page.html - 148 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 69 - apps/client/src/app/pages/user-account/user-account-page.html - 152 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 73 - apps/client/src/app/pages/user-account/user-account-page.html - 156 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 77 - apps/client/src/app/pages/user-account/user-account-page.html - 160 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 81 - apps/client/src/app/pages/user-account/user-account-page.html - 164 + apps/client/src/app/pages/features/features-page.html + 259 @@ -1046,7 +1086,7 @@ Alım satımda kayıp riski büyük boyutta olabilir. Kısa vadede ihtiyaç duyabileceğiniz parayla yatırım yapmak tavsiye edilmez. apps/client/src/app/app.component.html - 174,175 + 175,176 @@ -1057,8 +1097,8 @@ 15 - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 6 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 11 @@ -1078,15 +1118,15 @@ apps/client/src/app/components/admin-jobs/admin-jobs.html - 20 + 28 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 12 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 22 - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 17 + 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/activities-table.component.html @@ -1126,11 +1166,11 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 110 + 121 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 23 + 32 @@ -1150,11 +1190,11 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 65 + 76 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 36 + 44 @@ -1170,11 +1210,11 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 93 + 104 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 88 + 81 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -1198,7 +1238,7 @@ Ad apps/client/src/app/components/accounts-table/accounts-table.component.html - 22 + 33 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -1218,7 +1258,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 7 + 12 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1238,7 +1278,7 @@ Toplam apps/client/src/app/components/accounts-table/accounts-table.component.html - 38 + 49 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1250,15 +1290,15 @@ Para Birimi apps/client/src/app/components/accounts-table/accounts-table.component.html - 48 + 59 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 69 + 62 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 13 + 22 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1274,11 +1314,15 @@ Değer apps/client/src/app/components/accounts-table/accounts-table.component.html - 145 + 156 apps/client/src/app/components/accounts-table/accounts-table.component.html - 180 + 191 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 31 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1326,7 +1370,7 @@ Düzenle apps/client/src/app/components/accounts-table/accounts-table.component.html - 246 + 257 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -1346,7 +1390,7 @@ Sil apps/client/src/app/components/accounts-table/accounts-table.component.html - 254 + 265 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -1370,7 +1414,7 @@ Bu hesabı silmeyi gerçekten istiyor musunuz? apps/client/src/app/components/accounts-table/accounts-table.component.ts - 82 + 83 @@ -1378,7 +1422,7 @@ Sembol apps/client/src/app/components/admin-jobs/admin-jobs.html - 21 + 50 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -1386,7 +1430,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 64 + 57 @@ -1394,7 +1438,7 @@ Veri Kaynağı apps/client/src/app/components/admin-jobs/admin-jobs.html - 22 + 59 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -1410,7 +1454,7 @@ Deneme apps/client/src/app/components/admin-jobs/admin-jobs.html - 23 + 68 @@ -1418,7 +1462,7 @@ Oluşturuldu apps/client/src/app/components/admin-jobs/admin-jobs.html - 24 + 77 @@ -1426,7 +1470,7 @@ Tamamlandı apps/client/src/app/components/admin-jobs/admin-jobs.html - 25 + 86 @@ -1434,7 +1478,7 @@ Durum apps/client/src/app/components/admin-jobs/admin-jobs.html - 26 + 95 @@ -1442,7 +1486,7 @@ İşleri Sil apps/client/src/app/components/admin-jobs/admin-jobs.html - 38 + 140 @@ -1450,7 +1494,7 @@ Varlık Profili apps/client/src/app/components/admin-jobs/admin-jobs.html - 55 + 37 @@ -1458,7 +1502,7 @@ Tarihsel Piyasa Verisi apps/client/src/app/components/admin-jobs/admin-jobs.html - 60 + 42 @@ -1466,7 +1510,7 @@ Veri Gör apps/client/src/app/components/admin-jobs/admin-jobs.html - 115 + 155 @@ -1474,7 +1518,7 @@ Hata İzini Görüntüle apps/client/src/app/components/admin-jobs/admin-jobs.html - 122 + 162 @@ -1482,7 +1526,7 @@ İşleri Sil apps/client/src/app/components/admin-jobs/admin-jobs.html - 125 + 165 @@ -1530,7 +1574,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 191 + 195 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -1544,9 +1588,17 @@ apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html 13 + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 30 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 79 + 95 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 43 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1556,10 +1608,6 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 37 - - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 25 - Save @@ -1570,7 +1618,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 198 + 202 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -1584,18 +1632,18 @@ apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html 20 + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 37 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 86 + 102 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 364 - - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 32 - Currencies @@ -1638,7 +1686,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 93 + 86 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1658,7 +1706,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 102 + 95 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1678,7 +1726,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 79 + 72 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -1761,20 +1809,12 @@ 30 - - Set as Benchmark - Karşılaştırma Ölçütü Olarak Ayarla - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 45 - - Sector Sektör apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 117 + 110 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1786,7 +1826,7 @@ Ülke apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 126 + 119 apps/client/src/app/components/admin-users/admin-users.html @@ -1802,7 +1842,7 @@ Sektörler apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 132 + 125 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1818,7 +1858,7 @@ Ülkeler apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 142 + 135 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1830,7 +1870,7 @@ Sembol Eşleştirme apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 156 + 160 @@ -1838,7 +1878,7 @@ Veri Toplayıcı Yapılandırması apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 167 + 171 @@ -1846,11 +1886,11 @@ Not apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 178 + 182 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 47 + 72 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1882,7 +1922,7 @@ Lütfen bir para birimi giriniz: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 112 + 114 @@ -1890,7 +1930,7 @@ Önbelleği temizlemeyi gerçekten istiyor musunuz? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 126 + 128 @@ -1898,7 +1938,7 @@ Bu para birimini silmeyi gerçekten istiyor musunuz? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 139 + 141 @@ -1906,7 +1946,7 @@ Önbelleği temizlemeyi gerçekten istiyor musunuz apps/client/src/app/components/admin-overview/admin-overview.component.ts - 156 + 158 @@ -1914,7 +1954,7 @@ Lütfen sistem mesajınızı belirleyin: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 186 + 188 @@ -1922,7 +1962,7 @@ Kullanıcı Sayısı apps/client/src/app/components/admin-overview/admin-overview.html - 7 + 13 @@ -1930,7 +1970,7 @@ İşlem Sayısı apps/client/src/app/components/admin-overview/admin-overview.html - 17 + 23 @@ -1938,7 +1978,7 @@ Kullanıcı başına apps/client/src/app/components/admin-overview/admin-overview.html - 26 + 32 @@ -1946,7 +1986,7 @@ Döviz Kurları apps/client/src/app/components/admin-overview/admin-overview.html - 31 + 37 @@ -1954,7 +1994,7 @@ Para Birimi Ekle apps/client/src/app/components/admin-overview/admin-overview.html - 70 + 76 @@ -1978,7 +2018,7 @@ Kullanıcı Kaydı apps/client/src/app/components/admin-overview/admin-overview.html - 76 + 82 @@ -1986,7 +2026,7 @@ Salt okunur mod apps/client/src/app/components/admin-overview/admin-overview.html - 86 + 92 @@ -1994,7 +2034,7 @@ Sistem Mesajı apps/client/src/app/components/admin-overview/admin-overview.html - 96 + 102 @@ -2002,7 +2042,7 @@ Mesaj Belirle apps/client/src/app/components/admin-overview/admin-overview.html - 118 + 124 @@ -2010,7 +2050,7 @@ Kupon apps/client/src/app/components/admin-overview/admin-overview.html - 126 + 132 @@ -2018,7 +2058,7 @@ Ekle apps/client/src/app/components/admin-overview/admin-overview.html - 170 + 176 @@ -2026,7 +2066,7 @@ Genel Ayarlar apps/client/src/app/components/admin-overview/admin-overview.html - 177 + 183 @@ -2034,7 +2074,7 @@ Önbelleği temizle apps/client/src/app/components/admin-overview/admin-overview.html - 181 + 187 @@ -2074,7 +2114,7 @@ apps/client/src/app/components/header/header.component.html - 196 + 221 apps/client/src/app/pages/accounts/accounts-page.html @@ -2086,7 +2126,7 @@ Bu platformu silmeyi gerçekten istiyor musunuz? apps/client/src/app/components/admin-platform/admin-platform.component.ts - 76 + 78 @@ -2130,7 +2170,7 @@ apps/client/src/app/components/header/header.component.html - 164 + 189 @@ -2242,7 +2282,7 @@ apps/client/src/app/components/header/header.component.html - 178 + 203 @@ -2254,7 +2294,7 @@ apps/client/src/app/components/header/header.component.html - 188 + 213 @@ -2266,7 +2306,7 @@ apps/client/src/app/components/header/header.component.html - 212 + 237 @@ -2274,7 +2314,7 @@ Ben apps/client/src/app/components/header/header.component.html - 145 + 170 @@ -2282,7 +2322,7 @@ Ghostfolio'm apps/client/src/app/components/header/header.component.html - 203 + 228 @@ -2290,7 +2330,7 @@ Ghostfolio Hakkında apps/client/src/app/components/header/header.component.html - 243 + 268 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -2302,7 +2342,7 @@ Giriş apps/client/src/app/components/header/header.component.html - 333 + 358 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -2314,7 +2354,7 @@ Haydi Başlayalım apps/client/src/app/components/header/header.component.html - 345 + 370 @@ -2322,7 +2362,7 @@ Giriş apps/client/src/app/components/header/header.component.ts - 131 + 169 apps/client/src/app/pages/webauthn/webauthn-page-routing.module.ts @@ -2334,7 +2374,7 @@ Hay Allah! Güvenlik anahtarı yanlış. apps/client/src/app/components/header/header.component.ts - 145 + 183 @@ -2526,7 +2566,7 @@ apps/client/src/app/pages/landing/landing-page.html - 430 + 435 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html @@ -2681,7 +2721,7 @@ apps/client/src/app/pages/portfolio/fire/fire-page.html - 150 + 111 @@ -2837,7 +2877,7 @@ apps/client/src/app/pages/portfolio/fire/fire-page.html - 137 + 150 @@ -3181,7 +3221,7 @@ Update account apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 2 + 7 @@ -3189,7 +3229,7 @@ Add account apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 3 + 8 @@ -3197,7 +3237,7 @@ Account ID apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 68 + 89 @@ -3243,6 +3283,14 @@ apps/client/src/app/pages/admin/admin-page.component.ts 31 + + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 17 + + + apps/client/src/app/pages/user-account/user-account-page.component.ts + 34 + Users @@ -3265,7 +3313,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 44 + 33 apps/client/src/app/pages/zen/zen-page-routing.module.ts @@ -3408,12 +3456,12 @@ Zen Mode Zen Mode - apps/client/src/app/pages/features/features-page.html - 192 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 136 - apps/client/src/app/pages/user-account/user-account-page.html - 227 + apps/client/src/app/pages/features/features-page.html + 192 @@ -3469,7 +3517,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 49 + 38 apps/client/src/app/pages/portfolio/holdings/holdings-page-routing.module.ts @@ -3493,7 +3541,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 54 + 43 @@ -3505,7 +3553,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 59 + 48 apps/client/src/app/pages/markets/markets-page-routing.module.ts @@ -3537,7 +3585,7 @@ apps/client/src/app/pages/landing/landing-page.html - 426,428 + 431,433 @@ -3557,7 +3605,7 @@ apps/client/src/app/pages/landing/landing-page.html - 431 + 436 @@ -3773,7 +3821,7 @@ Members from around the globe are using Ghostfolio Premium apps/client/src/app/pages/landing/landing-page.html - 353,355 + 358,360 @@ -3781,7 +3829,7 @@ How does Ghostfolio work? apps/client/src/app/pages/landing/landing-page.html - 368,370 + 373,375 @@ -3789,7 +3837,7 @@ Get started in only 3 steps apps/client/src/app/pages/landing/landing-page.html - 371 + 376 @@ -3797,7 +3845,7 @@ Sign up anonymously* apps/client/src/app/pages/landing/landing-page.html - 377 + 382 @@ -3805,7 +3853,7 @@ * no e-mail address nor credit card required apps/client/src/app/pages/landing/landing-page.html - 379 + 384 @@ -3813,7 +3861,7 @@ Add any of your historical transactions apps/client/src/app/pages/landing/landing-page.html - 390,392 + 395,397 @@ -3821,7 +3869,7 @@ Get valuable insights of your portfolio composition apps/client/src/app/pages/landing/landing-page.html - 402,404 + 407,409 @@ -3829,7 +3877,7 @@ Are you ready? apps/client/src/app/pages/landing/landing-page.html - 414 + 419 @@ -3837,7 +3885,7 @@ Join now or check out the example account apps/client/src/app/pages/landing/landing-page.html - 415,418 + 420,423 @@ -3955,10 +4003,6 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 75 - - apps/client/src/app/pages/user-account/user-account-page.html - 4 - libs/ui/src/lib/activities-table/activities-table.component.html 379 @@ -4487,6 +4531,10 @@ apps/client/src/app/pages/public/public-page.html 14 + + libs/ui/src/lib/assistant/assistant.html + 46 + Pricing @@ -4955,6 +5003,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 8 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. @@ -5067,6 +5123,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 13,25 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. @@ -5179,6 +5243,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 26,36 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + Let’s dive deeper into the detailed comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. @@ -5291,6 +5363,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 37,43 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,43 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,43 + Founded @@ -5403,6 +5483,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 63 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 63 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 63 + Origin @@ -5515,6 +5603,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 68 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 68 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 68 + Region @@ -5627,6 +5723,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 73 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 73 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 73 + Available in @@ -5739,6 +5843,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 78,80 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 78,80 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 78,80 + ✅ Yes @@ -5851,6 +5963,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 100 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 100 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 100 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 107 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 107 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 107 @@ -6067,6 +6195,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 121 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 121 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 121 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 132 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 132 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 132 @@ -6283,6 +6427,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 146 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 146 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 146 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 153 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 153 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 153 @@ -6499,6 +6659,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 165 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 165 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 165 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 172 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 172 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 172 @@ -6719,6 +6895,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 102 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 102 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 102 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 125 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 125 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 125 @@ -6935,6 +7127,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 136 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 136 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 136 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 148 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 148 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 148 @@ -7151,6 +7359,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 155 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 155 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 155 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 167 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 167 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 167 @@ -7367,6 +7591,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 174 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 174 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 174 + ❌ No @@ -7479,6 +7711,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 109,110 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 109,110 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 109,110 + Self-Hosting @@ -7591,6 +7831,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 114,116 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 114,116 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 114,116 + Use anonymously @@ -7703,6 +7951,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 141,143 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 141,143 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 141,143 + Free Plan @@ -7815,6 +8071,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 160,162 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 160,162 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 160,162 + Starting from / year @@ -7927,6 +8191,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 180,182 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 180,182 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 180,182 + Starting from / year @@ -8039,6 +8311,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 185,186 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185,186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185,186 + Notes @@ -8151,6 +8431,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 191 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + Please note that the information provided 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. @@ -8263,6 +8551,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 199,208 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 199,208 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 199,208 + Ready to take your investments to the next level? @@ -8375,6 +8671,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 211,214 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 211,214 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 211,214 + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. @@ -8487,6 +8791,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 215,218 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 215,218 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 215,218 + Get Started @@ -8599,6 +8911,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 220,222 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,222 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,222 + Personal Finance Tools @@ -8711,29 +9031,37 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 287 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 287 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 287 + Switzerland Switzerland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 49 + 51 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 61 + 63 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 333 + 351 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 344 + 362 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 345 + 363 @@ -8741,15 +9069,15 @@ Global apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 51 + 53 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 182 + 193 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 283 + 294 @@ -8757,39 +9085,43 @@ United States apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 80 + 82 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 114 + 116 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 168 + 126 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 193 + 179 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 195 + 204 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 259 + 206 apps/client/src/app/pages/resources/personal-finance-tools/products.ts 270 + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 281 + Belgium Belgium apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 92 + 94 @@ -8797,31 +9129,31 @@ Germany apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 69 + 71 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 103 + 105 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 137 + 148 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 147 + 158 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 157 + 168 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 180 + 191 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 215 + 226 @@ -8829,7 +9161,7 @@ Austria apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 125 + 136 @@ -8837,7 +9169,7 @@ Italy apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 226 + 237 @@ -8845,7 +9177,7 @@ Netherlands apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 236 + 247 @@ -8853,7 +9185,7 @@ Thailand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 248 + 259 @@ -8861,7 +9193,7 @@ New Zealand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 281 + 292 @@ -8869,11 +9201,11 @@ Czech Republic apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 292 + 303 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 322 + 340 @@ -8904,16 +9236,16 @@ Grant access Grant access - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 2 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 7 Public Public - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 19 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 @@ -8921,259 +9253,259 @@ My Ghostfolio apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 12 + 32 Auto Auto - apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 35 Please enter your coupon code: Please enter your coupon code: - apps/client/src/app/pages/user-account/user-account-page.component.ts - 263 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 110 Could not redeem coupon code Could not redeem coupon code - apps/client/src/app/pages/user-account/user-account-page.component.ts - 273 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 120 Coupon code has been redeemed Coupon code has been redeemed - apps/client/src/app/pages/user-account/user-account-page.component.ts - 285 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 132 Reload Reload - apps/client/src/app/pages/user-account/user-account-page.component.ts - 286 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 133 Do you really want to remove this sign in method? Do you really want to remove this sign in method? - apps/client/src/app/pages/user-account/user-account-page.component.ts - 332 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 184 Membership Membership - apps/client/src/app/pages/user-account/user-account-page.html - 12 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 2 Valid until Valid until - apps/client/src/app/pages/user-account/user-account-page.html - 24 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 17 Upgrade Upgrade - apps/client/src/app/pages/user-account/user-account-page.html - 39 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 26 Renew Renew - apps/client/src/app/pages/user-account/user-account-page.html - 44 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 29 per year per year - apps/client/src/app/pages/pricing/pricing-page.html - 332 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 41 - apps/client/src/app/pages/user-account/user-account-page.html - 56 + apps/client/src/app/pages/pricing/pricing-page.html + 332 Try Premium Try Premium - apps/client/src/app/pages/user-account/user-account-page.html - 64 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 49 Redeem Coupon Redeem Coupon - apps/client/src/app/pages/user-account/user-account-page.html - 77 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 62 Presenter View Presenter View - apps/client/src/app/pages/user-account/user-account-page.html - 84 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 7 - + Protection for sensitive information like absolute performances and quantity values Protection for sensitive information like absolute performances and quantity values - apps/client/src/app/pages/user-account/user-account-page.html - 85,88 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 8,11 Base Currency Base Currency - apps/client/src/app/pages/user-account/user-account-page.html - 103 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 26 Language Language - apps/client/src/app/pages/user-account/user-account-page.html - 127 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 47 Locale Locale - apps/client/src/app/pages/user-account/user-account-page.html - 173 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 90 Date and number format Date and number format - apps/client/src/app/pages/user-account/user-account-page.html - 175 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 92 Appearance Appearance - apps/client/src/app/pages/user-account/user-account-page.html - 201 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 113 Auto Auto - apps/client/src/app/pages/user-account/user-account-page.html - 216 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 125 Light Light - apps/client/src/app/pages/user-account/user-account-page.html - 217 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 126 Dark Dark - apps/client/src/app/pages/user-account/user-account-page.html - 218 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 127 - + Distraction-free experience for turbulent times Distraction-free experience for turbulent times - apps/client/src/app/pages/user-account/user-account-page.html - 228,230 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 137,139 Biometric Authentication Biometric Authentication - apps/client/src/app/pages/user-account/user-account-page.html - 243 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 152 - - Sign in with fingerprint - Sign in with fingerprint + + Sign in with fingerprint + Sign in with fingerprint - apps/client/src/app/pages/user-account/user-account-page.html - 244,246 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 153 Experimental Features Experimental Features - apps/client/src/app/pages/user-account/user-account-page.html - 262 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 169 - + Sneak peek at upcoming functionality Sneak peek at upcoming functionality - apps/client/src/app/pages/user-account/user-account-page.html - 263,265 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 170,172 User ID User ID - apps/client/src/app/pages/user-account/user-account-page.html - 277 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 184 Export Data Export Data - apps/client/src/app/pages/user-account/user-account-page.html - 284 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 191 Granted Access Granted Access - apps/client/src/app/pages/user-account/user-account-page.html - 295 + apps/client/src/app/components/user-account-access/user-account-access.html + 5 @@ -9909,7 +10241,7 @@ Do you really want to delete this tag? apps/client/src/app/components/admin-tag/admin-tag.component.ts - 76 + 78 @@ -9933,11 +10265,11 @@ France apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 303 + 314 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 312 + 330 @@ -9953,7 +10285,7 @@ Currency Cluster Risks apps/client/src/app/pages/portfolio/fire/fire-page.html - 111 + 124 @@ -9961,7 +10293,115 @@ Account Cluster Risks apps/client/src/app/pages/portfolio/fire/fire-page.html - 124 + 137 + + + + Transfer Cash Balance + Transfer Cash Balance + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 8 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + + Benchmark + Benchmark + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 154 + + + + Version + Version + + apps/client/src/app/components/admin-overview/admin-overview.html + 7 + + + + Settings + Settings + + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 + + + + From + From + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 + + + + To + To + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 21 + + + + Transfer + Transfer + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 50 + + + + Finland + Finland + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 322 + + + + Membership + 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 + + + + Access + 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 + + + + Find holding... + Find holding... + + libs/ui/src/lib/assistant/assistant.component.ts + 87 + + + + No entries... + No entries... + + libs/ui/src/lib/assistant/assistant.html + 62 diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 956a2ad85..512ad60e2 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 - 46 + 71 apps/client/src/app/components/header/header.component.ts - 51 + 76 apps/client/src/app/pages/about/about-page.component.ts @@ -100,6 +100,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts 25 @@ -168,6 +172,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts 25 @@ -212,11 +220,11 @@ apps/client/src/app/components/header/header.component.ts - 47 + 72 apps/client/src/app/components/header/header.component.ts - 52 + 77 apps/client/src/app/pages/about/overview/about-overview-page.component.ts @@ -274,6 +282,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts 26 @@ -342,6 +354,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts 26 @@ -386,11 +402,11 @@ apps/client/src/app/components/header/header.component.ts - 48 + 73 apps/client/src/app/components/header/header.component.ts - 53 + 78 apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.component.ts @@ -417,11 +433,11 @@ apps/client/src/app/components/header/header.component.ts - 49 + 74 apps/client/src/app/components/header/header.component.ts - 54 + 79 apps/client/src/app/components/home-summary/home-summary.component.ts @@ -431,6 +447,10 @@ apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts 14 + + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 37 + apps/client/src/app/core/http-response.interceptor.ts 80 @@ -491,7 +511,7 @@ apps/client/src/app/components/header/header.component.ts - 55 + 80 apps/client/src/app/core/auth.guard.ts @@ -526,11 +546,11 @@ apps/client/src/app/components/header/header.component.ts - 50 + 75 apps/client/src/app/components/header/header.component.ts - 56 + 81 apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.component.ts @@ -548,6 +568,10 @@ apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.component.ts 14 + + apps/client/src/app/pages/features/features-page.component.ts + 18 + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts 14 @@ -576,6 +600,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts 28 @@ -644,6 +672,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts 28 @@ -669,18 +701,18 @@ Personal Finance apps/client/src/app/app.component.html - 54 + 55 Markets apps/client/src/app/app.component.html - 57 + 58 apps/client/src/app/components/header/header.component.html - 320 + 345 apps/client/src/app/components/home-market/home-market.html @@ -695,7 +727,7 @@ Resources apps/client/src/app/app.component.html - 59 + 60 apps/client/src/app/components/header/header.component.html @@ -703,7 +735,7 @@ apps/client/src/app/components/header/header.component.html - 223 + 248 apps/client/src/app/pages/resources/resources-page.html @@ -714,7 +746,7 @@ About apps/client/src/app/app.component.html - 65 + 66 apps/client/src/app/components/header/header.component.html @@ -722,14 +754,14 @@ apps/client/src/app/components/header/header.component.html - 291 + 316 Blog apps/client/src/app/app.component.html - 67 + 68 apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html @@ -808,7 +840,7 @@ Changelog apps/client/src/app/app.component.html - 70 + 71 apps/client/src/app/pages/about/changelog/changelog-page.html @@ -819,11 +851,11 @@ Features apps/client/src/app/app.component.html - 72 + 73 apps/client/src/app/components/header/header.component.html - 278 + 303 apps/client/src/app/pages/features/features-page.html @@ -834,14 +866,14 @@ Frequently Asked Questions (FAQ) apps/client/src/app/app.component.html - 75 + 76 License apps/client/src/app/app.component.html - 79 + 80 apps/client/src/app/pages/about/license/license-page.html @@ -852,7 +884,7 @@ Pricing apps/client/src/app/app.component.html - 85 + 86 apps/client/src/app/components/header/header.component.html @@ -860,11 +892,19 @@ apps/client/src/app/components/header/header.component.html - 235 + 260 apps/client/src/app/components/header/header.component.html - 304 + 329 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 179 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 179 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -979,7 +1019,7 @@ Privacy Policy apps/client/src/app/app.component.html - 89 + 90 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.html @@ -990,42 +1030,42 @@ Community apps/client/src/app/app.component.html - 104 + 105 - apps/client/src/app/pages/features/features-page.html - 259 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 61 - apps/client/src/app/pages/user-account/user-account-page.html - 144 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 65 - apps/client/src/app/pages/user-account/user-account-page.html - 148 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 69 - apps/client/src/app/pages/user-account/user-account-page.html - 152 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 73 - apps/client/src/app/pages/user-account/user-account-page.html - 156 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 77 - apps/client/src/app/pages/user-account/user-account-page.html - 160 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 81 - apps/client/src/app/pages/user-account/user-account-page.html - 164 + apps/client/src/app/pages/features/features-page.html + 259 The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. apps/client/src/app/app.component.html - 174,175 + 175,176 @@ -1035,8 +1075,8 @@ 15 - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 6 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 11 @@ -1054,15 +1094,15 @@ apps/client/src/app/components/admin-jobs/admin-jobs.html - 20 + 28 - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 12 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 22 - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 17 + 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/activities-table.component.html @@ -1098,11 +1138,11 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 110 + 121 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 23 + 32 @@ -1120,11 +1160,11 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 65 + 76 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 36 + 44 @@ -1139,11 +1179,11 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 93 + 104 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 88 + 81 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -1166,7 +1206,7 @@ Name apps/client/src/app/components/accounts-table/accounts-table.component.html - 22 + 33 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -1186,7 +1226,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 7 + 12 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1205,7 +1245,7 @@ Total apps/client/src/app/components/accounts-table/accounts-table.component.html - 38 + 49 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1216,15 +1256,15 @@ Currency apps/client/src/app/components/accounts-table/accounts-table.component.html - 48 + 59 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 69 + 62 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 13 + 22 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1239,11 +1279,15 @@ Value apps/client/src/app/components/accounts-table/accounts-table.component.html - 145 + 156 apps/client/src/app/components/accounts-table/accounts-table.component.html - 180 + 191 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 31 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1290,7 +1334,7 @@ Edit apps/client/src/app/components/accounts-table/accounts-table.component.html - 246 + 257 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -1309,7 +1353,7 @@ Delete apps/client/src/app/components/accounts-table/accounts-table.component.html - 254 + 265 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -1332,14 +1376,14 @@ Do you really want to delete this account? apps/client/src/app/components/accounts-table/accounts-table.component.ts - 82 + 83 Symbol apps/client/src/app/components/admin-jobs/admin-jobs.html - 21 + 50 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -1347,14 +1391,14 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 64 + 57 Data Source apps/client/src/app/components/admin-jobs/admin-jobs.html - 22 + 59 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -1369,70 +1413,70 @@ Attempts apps/client/src/app/components/admin-jobs/admin-jobs.html - 23 + 68 Created apps/client/src/app/components/admin-jobs/admin-jobs.html - 24 + 77 Finished apps/client/src/app/components/admin-jobs/admin-jobs.html - 25 + 86 Status apps/client/src/app/components/admin-jobs/admin-jobs.html - 26 + 95 Delete Jobs apps/client/src/app/components/admin-jobs/admin-jobs.html - 38 + 140 Asset Profile apps/client/src/app/components/admin-jobs/admin-jobs.html - 55 + 37 Historical Market Data apps/client/src/app/components/admin-jobs/admin-jobs.html - 60 + 42 View Data apps/client/src/app/components/admin-jobs/admin-jobs.html - 115 + 155 View Stacktrace apps/client/src/app/components/admin-jobs/admin-jobs.html - 122 + 162 Delete Job apps/client/src/app/components/admin-jobs/admin-jobs.html - 125 + 165 @@ -1476,7 +1520,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 191 + 195 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -1490,9 +1534,17 @@ apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html 13 + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 30 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 79 + 95 + + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 43 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1502,10 +1554,6 @@ apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html 37 - - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 25 - Save @@ -1515,7 +1563,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 198 + 202 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -1529,18 +1577,18 @@ apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html 20 + + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 37 + apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 86 + 102 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 364 - - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 32 - Currencies @@ -1578,7 +1626,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 93 + 86 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1597,7 +1645,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 102 + 95 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1616,7 +1664,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 79 + 72 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -1690,18 +1738,11 @@ 30 - - Set as Benchmark - - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 45 - - Sector apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 117 + 110 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1712,7 +1753,7 @@ Country apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 126 + 119 apps/client/src/app/components/admin-users/admin-users.html @@ -1727,7 +1768,7 @@ Sectors apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 132 + 125 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1742,7 +1783,7 @@ Countries apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 142 + 135 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1753,25 +1794,25 @@ Symbol Mapping apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 156 + 160 Scraper Configuration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 167 + 171 Note apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 178 + 182 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 47 + 72 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1800,70 +1841,70 @@ Please add a currency: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 112 + 114 Do you really want to delete this coupon? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 126 + 128 Do you really want to delete this currency? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 139 + 141 Do you really want to flush the cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 156 + 158 Please set your system message: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 186 + 188 User Count apps/client/src/app/components/admin-overview/admin-overview.html - 7 + 13 Activity Count apps/client/src/app/components/admin-overview/admin-overview.html - 17 + 23 per User apps/client/src/app/components/admin-overview/admin-overview.html - 26 + 32 Exchange Rates apps/client/src/app/components/admin-overview/admin-overview.html - 31 + 37 Add Currency apps/client/src/app/components/admin-overview/admin-overview.html - 70 + 76 @@ -1885,56 +1926,56 @@ User Signup apps/client/src/app/components/admin-overview/admin-overview.html - 76 + 82 Read-only Mode apps/client/src/app/components/admin-overview/admin-overview.html - 86 + 92 System Message apps/client/src/app/components/admin-overview/admin-overview.html - 96 + 102 Set Message apps/client/src/app/components/admin-overview/admin-overview.html - 118 + 124 Coupons apps/client/src/app/components/admin-overview/admin-overview.html - 126 + 132 Add apps/client/src/app/components/admin-overview/admin-overview.html - 170 + 176 Housekeeping apps/client/src/app/components/admin-overview/admin-overview.html - 177 + 183 Flush Cache apps/client/src/app/components/admin-overview/admin-overview.html - 181 + 187 @@ -1971,7 +2012,7 @@ apps/client/src/app/components/header/header.component.html - 196 + 221 apps/client/src/app/pages/accounts/accounts-page.html @@ -1982,7 +2023,7 @@ Do you really want to delete this platform? apps/client/src/app/components/admin-platform/admin-platform.component.ts - 76 + 78 @@ -2021,7 +2062,7 @@ apps/client/src/app/components/header/header.component.html - 164 + 189 @@ -2121,7 +2162,7 @@ apps/client/src/app/components/header/header.component.html - 178 + 203 @@ -2132,7 +2173,7 @@ apps/client/src/app/components/header/header.component.html - 188 + 213 @@ -2143,28 +2184,28 @@ apps/client/src/app/components/header/header.component.html - 212 + 237 Me apps/client/src/app/components/header/header.component.html - 145 + 170 My Ghostfolio apps/client/src/app/components/header/header.component.html - 203 + 228 About Ghostfolio apps/client/src/app/components/header/header.component.html - 243 + 268 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -2175,7 +2216,7 @@ Sign in apps/client/src/app/components/header/header.component.html - 333 + 358 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -2186,14 +2227,14 @@ Get started apps/client/src/app/components/header/header.component.html - 345 + 370 Sign in apps/client/src/app/components/header/header.component.ts - 131 + 169 apps/client/src/app/pages/webauthn/webauthn-page-routing.module.ts @@ -2204,7 +2245,7 @@ Oops! Incorrect Security Token. apps/client/src/app/components/header/header.component.ts - 145 + 183 @@ -2375,7 +2416,7 @@ apps/client/src/app/pages/landing/landing-page.html - 430 + 435 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html @@ -2514,7 +2555,7 @@ apps/client/src/app/pages/portfolio/fire/fire-page.html - 150 + 111 @@ -2655,7 +2696,7 @@ apps/client/src/app/pages/portfolio/fire/fire-page.html - 137 + 150 @@ -2967,21 +3008,21 @@ Update account apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 2 + 7 Add account apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 3 + 8 Account ID apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 68 + 89 @@ -3023,6 +3064,14 @@ apps/client/src/app/pages/admin/admin-page.component.ts 31 + + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 17 + + + apps/client/src/app/pages/user-account/user-account-page.component.ts + 34 + Users @@ -3043,7 +3092,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 44 + 33 apps/client/src/app/pages/zen/zen-page-routing.module.ts @@ -3169,12 +3218,12 @@ Zen Mode - apps/client/src/app/pages/features/features-page.html - 192 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 136 - apps/client/src/app/pages/user-account/user-account-page.html - 227 + apps/client/src/app/pages/features/features-page.html + 192 @@ -3224,7 +3273,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 49 + 38 apps/client/src/app/pages/portfolio/holdings/holdings-page-routing.module.ts @@ -3247,7 +3296,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 54 + 43 @@ -3258,7 +3307,7 @@ apps/client/src/app/pages/home/home-page.component.ts - 59 + 48 apps/client/src/app/pages/markets/markets-page-routing.module.ts @@ -3294,7 +3343,7 @@ apps/client/src/app/pages/landing/landing-page.html - 426,428 + 431,433 @@ -3312,7 +3361,7 @@ apps/client/src/app/pages/landing/landing-page.html - 431 + 436 @@ -3502,63 +3551,63 @@ Members from around the globe are using Ghostfolio Premium apps/client/src/app/pages/landing/landing-page.html - 353,355 + 358,360 How does Ghostfolio work? apps/client/src/app/pages/landing/landing-page.html - 368,370 + 373,375 Get started in only 3 steps apps/client/src/app/pages/landing/landing-page.html - 371 + 376 Sign up anonymously* apps/client/src/app/pages/landing/landing-page.html - 377 + 382 * no e-mail address nor credit card required apps/client/src/app/pages/landing/landing-page.html - 379 + 384 Add any of your historical transactions apps/client/src/app/pages/landing/landing-page.html - 390,392 + 395,397 Get valuable insights of your portfolio composition apps/client/src/app/pages/landing/landing-page.html - 402,404 + 407,409 Are you ready? apps/client/src/app/pages/landing/landing-page.html - 414 + 419 Join now or check out the example account apps/client/src/app/pages/landing/landing-page.html - 415,418 + 420,423 @@ -3688,10 +3737,6 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 75 - - apps/client/src/app/pages/user-account/user-account-page.html - 4 - libs/ui/src/lib/activities-table/activities-table.component.html 379 @@ -4164,6 +4209,10 @@ apps/client/src/app/pages/public/public-page.html 14 + + libs/ui/src/lib/assistant/assistant.html + 46 + Pricing @@ -4320,12 +4369,12 @@ per year - apps/client/src/app/pages/pricing/pricing-page.html - 332 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 41 - apps/client/src/app/pages/user-account/user-account-page.html - 56 + apps/client/src/app/pages/pricing/pricing-page.html + 332 @@ -4604,6 +4653,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 8 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. @@ -4715,6 +4772,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 13,25 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. @@ -4826,6 +4891,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 26,36 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + Let’s dive deeper into the detailed comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. @@ -4937,6 +5010,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 37,43 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,43 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,43 + Founded @@ -5048,6 +5129,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 63 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 63 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 63 + Origin @@ -5159,6 +5248,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 68 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 68 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 68 + Region @@ -5270,6 +5367,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 73 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 73 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 73 + Available in @@ -5381,6 +5486,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 78,80 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 78,80 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 78,80 + ✅ Yes @@ -5492,6 +5605,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 100 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 100 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 100 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 107 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 107 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 107 @@ -5708,6 +5837,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 121 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 121 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 121 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 132 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 132 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 132 @@ -5924,6 +6069,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 146 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 146 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 146 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 153 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 153 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 153 @@ -6140,6 +6301,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 165 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 165 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 165 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 172 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 172 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 172 @@ -6359,6 +6536,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 102 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 102 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 102 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 125 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 125 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 125 @@ -6575,6 +6768,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 136 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 136 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 136 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 148 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 148 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 148 @@ -6791,6 +7000,22 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 155 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 155 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 155 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 167 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 167 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 167 @@ -7007,6 +7232,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 174 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 174 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 174 + ❌ No @@ -7118,6 +7351,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 109,110 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 109,110 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 109,110 + Self-Hosting @@ -7229,6 +7470,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 114,116 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 114,116 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 114,116 + Use anonymously @@ -7340,6 +7589,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 141,143 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 141,143 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 141,143 + Free Plan @@ -7451,6 +7708,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 160,162 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 160,162 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 160,162 + Starting from / year @@ -7562,6 +7827,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 180,182 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 180,182 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 180,182 + Starting from / year @@ -7673,6 +7946,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 185,186 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185,186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185,186 + Notes @@ -7784,6 +8065,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 191 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + Please note that the information provided 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. @@ -7895,6 +8184,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 199,208 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 199,208 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 199,208 + Ready to take your investments to the next level? @@ -8006,6 +8303,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 211,214 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 211,214 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 211,214 + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. @@ -8117,6 +8422,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 215,218 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 215,218 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 215,218 + Get Started @@ -8228,6 +8541,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 220,222 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,222 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,222 + Personal Finance Tools @@ -8339,158 +8660,170 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 287 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 287 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 287 + Switzerland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 49 + 51 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 61 + 63 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 333 + 351 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 344 + 362 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 345 + 363 Global apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 51 + 53 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 182 + 193 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 283 + 294 United States apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 80 + 82 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 114 + 116 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 168 + 126 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 193 + 179 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 195 + 204 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 259 + 206 apps/client/src/app/pages/resources/personal-finance-tools/products.ts 270 + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 281 + Belgium apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 92 + 94 Germany apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 69 + 71 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 103 + 105 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 137 + 148 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 147 + 158 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 157 + 168 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 180 + 191 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 215 + 226 Austria apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 125 + 136 Italy apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 226 + 237 Netherlands apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 236 + 247 Thailand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 248 + 259 New Zealand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 281 + 292 Czech Republic apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 292 + 303 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 322 + 340 @@ -8517,232 +8850,232 @@ Grant access - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 2 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 7 Public - apps/client/src/app/pages/user-account/create-or-update-access-dialog/create-or-update-access-dialog.html - 19 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 My Ghostfolio apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 12 + 32 Auto - apps/client/src/app/pages/user-account/user-account-page.component.ts - 47 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 35 Please enter your coupon code: - apps/client/src/app/pages/user-account/user-account-page.component.ts - 263 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 110 Could not redeem coupon code - apps/client/src/app/pages/user-account/user-account-page.component.ts - 273 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 120 Coupon code has been redeemed - apps/client/src/app/pages/user-account/user-account-page.component.ts - 285 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 132 Reload - apps/client/src/app/pages/user-account/user-account-page.component.ts - 286 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 133 Do you really want to remove this sign in method? - apps/client/src/app/pages/user-account/user-account-page.component.ts - 332 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 184 Membership - apps/client/src/app/pages/user-account/user-account-page.html - 12 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 2 Valid until - apps/client/src/app/pages/user-account/user-account-page.html - 24 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 17 Upgrade - apps/client/src/app/pages/user-account/user-account-page.html - 39 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 26 Renew - apps/client/src/app/pages/user-account/user-account-page.html - 44 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 29 Try Premium - apps/client/src/app/pages/user-account/user-account-page.html - 64 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 49 Redeem Coupon - apps/client/src/app/pages/user-account/user-account-page.html - 77 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 62 Presenter View - apps/client/src/app/pages/user-account/user-account-page.html - 84 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 7 - + Protection for sensitive information like absolute performances and quantity values - apps/client/src/app/pages/user-account/user-account-page.html - 85,88 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 8,11 Base Currency - apps/client/src/app/pages/user-account/user-account-page.html - 103 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 26 Language - apps/client/src/app/pages/user-account/user-account-page.html - 127 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 47 Locale - apps/client/src/app/pages/user-account/user-account-page.html - 173 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 90 Date and number format - apps/client/src/app/pages/user-account/user-account-page.html - 175 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 92 Appearance - apps/client/src/app/pages/user-account/user-account-page.html - 201 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 113 Auto - apps/client/src/app/pages/user-account/user-account-page.html - 216 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 125 Light - apps/client/src/app/pages/user-account/user-account-page.html - 217 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 126 Dark - apps/client/src/app/pages/user-account/user-account-page.html - 218 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 127 - + Distraction-free experience for turbulent times - apps/client/src/app/pages/user-account/user-account-page.html - 228,230 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 137,139 Biometric Authentication - apps/client/src/app/pages/user-account/user-account-page.html - 243 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 152 - - Sign in with fingerprint + + Sign in with fingerprint - apps/client/src/app/pages/user-account/user-account-page.html - 244,246 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 153 Experimental Features - apps/client/src/app/pages/user-account/user-account-page.html - 262 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 169 - + Sneak peek at upcoming functionality - apps/client/src/app/pages/user-account/user-account-page.html - 263,265 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 170,172 User ID - apps/client/src/app/pages/user-account/user-account-page.html - 277 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 184 Export Data - apps/client/src/app/pages/user-account/user-account-page.html - 284 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 191 Granted Access - apps/client/src/app/pages/user-account/user-account-page.html - 295 + apps/client/src/app/components/user-account-access/user-account-access.html + 5 @@ -9358,18 +9691,18 @@ Do you really want to delete this tag? apps/client/src/app/components/admin-tag/admin-tag.component.ts - 76 + 78 France apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 303 + 314 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 312 + 330 @@ -9397,14 +9730,110 @@ Currency Cluster Risks apps/client/src/app/pages/portfolio/fire/fire-page.html - 111 + 124 Account Cluster Risks apps/client/src/app/pages/portfolio/fire/fire-page.html - 124 + 137 + + + + Benchmark + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 154 + + + + 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 + 87 + + + + Transfer Cash Balance + + apps/client/src/app/components/accounts-table/accounts-table.component.html + 8 + + + 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 + 21 + + + + Transfer + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 50 + + + + Finland + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 322 + + + + Version + + apps/client/src/app/components/admin-overview/admin-overview.html + 7 + + + + No entries... + + libs/ui/src/lib/assistant/assistant.html + 62 + + + + From + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 From 3b5a34f6f30bfd3c03cd0ee1b693ea98baedd47c Mon Sep 17 00:00:00 2001 From: Aldrin <53973174+Dhoni77@users.noreply.github.com> Date: Wed, 11 Oct 2023 13:27:35 +0530 Subject: [PATCH 030/194] Use fab-button in access management tab (#2456) * Use fab-button in access management tab * Refactor fab container * Update changelog --------- Co-authored-by: Thomas <4159106+dtslvr@users.noreply.github.com> --- CHANGELOG.md | 1 + .../access-table/access-table.component.html | 12 ------------ .../access-table/access-table.component.ts | 1 - .../admin-market-data/admin-market-data.scss | 7 ------- .../user-account-access/user-account-access.html | 12 +++++++++++- .../user-account-access.module.ts | 2 ++ .../client/src/app/pages/accounts/accounts-page.scss | 7 ------- .../pages/portfolio/activities/activities-page.scss | 7 ------- apps/client/src/styles.scss | 11 +++++++++++ 9 files changed, 25 insertions(+), 35 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b51ced82a..12254fd9f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Harmonized the style of the create button on the page for granting and revoking public access to share the portfolio - Improved the language localization for German (`de`) ## 2.10.0 - 2023-10-09 diff --git a/apps/client/src/app/components/access-table/access-table.component.html b/apps/client/src/app/components/access-table/access-table.component.html index 498e73bf0..589c67e1f 100644 --- a/apps/client/src/app/components/access-table/access-table.component.html +++ b/apps/client/src/app/components/access-table/access-table.component.html @@ -1,15 +1,3 @@ - - diff --git a/apps/client/src/app/components/access-table/access-table.component.ts b/apps/client/src/app/components/access-table/access-table.component.ts index 298a02069..c0db8fb2f 100644 --- a/apps/client/src/app/components/access-table/access-table.component.ts +++ b/apps/client/src/app/components/access-table/access-table.component.ts @@ -19,7 +19,6 @@ import { Access } from '@ghostfolio/common/interfaces'; }) export class AccessTableComponent implements OnChanges, OnInit { @Input() accesses: Access[]; - @Input() hasPermissionToCreateAccess = false; @Input() showActions: boolean; @Output() accessDeleted = new EventEmitter(); diff --git a/apps/client/src/app/components/admin-market-data/admin-market-data.scss b/apps/client/src/app/components/admin-market-data/admin-market-data.scss index 50901445b..b5b58f67e 100644 --- a/apps/client/src/app/components/admin-market-data/admin-market-data.scss +++ b/apps/client/src/app/components/admin-market-data/admin-market-data.scss @@ -2,11 +2,4 @@ :host { display: block; - - .fab-container { - bottom: 2rem; - position: fixed; - right: 2rem; - z-index: 999; - } } diff --git a/apps/client/src/app/components/user-account-access/user-account-access.html b/apps/client/src/app/components/user-account-access/user-account-access.html index c3aa485cd..392337a83 100644 --- a/apps/client/src/app/components/user-account-access/user-account-access.html +++ b/apps/client/src/app/components/user-account-access/user-account-access.html @@ -10,8 +10,18 @@ +
    + + + +
    diff --git a/apps/client/src/app/components/user-account-access/user-account-access.module.ts b/apps/client/src/app/components/user-account-access/user-account-access.module.ts index 76495db63..0388dd244 100644 --- a/apps/client/src/app/components/user-account-access/user-account-access.module.ts +++ b/apps/client/src/app/components/user-account-access/user-account-access.module.ts @@ -7,6 +7,7 @@ import { GfPremiumIndicatorModule } from '@ghostfolio/ui/premium-indicator'; import { GfCreateOrUpdateAccessDialogModule } from './create-or-update-access-dialog/create-or-update-access-dialog.module'; import { UserAccountAccessComponent } from './user-account-access.component'; +import { MatButtonModule } from '@angular/material/button'; @NgModule({ declarations: [UserAccountAccessComponent], @@ -16,6 +17,7 @@ import { UserAccountAccessComponent } from './user-account-access.component'; GfCreateOrUpdateAccessDialogModule, GfPortfolioAccessTableModule, GfPremiumIndicatorModule, + MatButtonModule, MatDialogModule, RouterModule ] diff --git a/apps/client/src/app/pages/accounts/accounts-page.scss b/apps/client/src/app/pages/accounts/accounts-page.scss index 307bf0f32..32e9fe146 100644 --- a/apps/client/src/app/pages/accounts/accounts-page.scss +++ b/apps/client/src/app/pages/accounts/accounts-page.scss @@ -4,11 +4,4 @@ .accounts { overflow-x: auto; } - - .fab-container { - position: fixed; - right: 2rem; - bottom: 2rem; - z-index: 999; - } } diff --git a/apps/client/src/app/pages/portfolio/activities/activities-page.scss b/apps/client/src/app/pages/portfolio/activities/activities-page.scss index c10640da3..5d4e87f30 100644 --- a/apps/client/src/app/pages/portfolio/activities/activities-page.scss +++ b/apps/client/src/app/pages/portfolio/activities/activities-page.scss @@ -1,10 +1,3 @@ :host { display: block; - - .fab-container { - position: fixed; - right: 2rem; - bottom: 2rem; - z-index: 999; - } } diff --git a/apps/client/src/styles.scss b/apps/client/src/styles.scss index 26f8a4a48..8e79de778 100644 --- a/apps/client/src/styles.scss +++ b/apps/client/src/styles.scss @@ -491,6 +491,13 @@ ngx-skeleton-loader { flex-direction: column; overflow-y: auto; + .fab-container { + bottom: 2rem; + position: fixed; + right: 2rem; + z-index: 999; + } + &:not(.has-tabs) { @media (min-width: 576px) { padding: 2rem 0; @@ -502,6 +509,10 @@ ngx-skeleton-loader { padding-bottom: env(safe-area-inset-bottom); padding-bottom: constant(safe-area-inset-bottom); + .fab-container { + bottom: 5rem; + } + .mat-mdc-tab-nav-bar { --mat-tab-header-active-focus-indicator-color: transparent; --mat-tab-header-active-hover-indicator-color: transparent; From fb3cd4b689385bc28af9cd8b5831f0c10560c339 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 11 Oct 2023 09:58:18 +0200 Subject: [PATCH 031/194] Remove icon (#2467) --- .../app/components/admin-jobs/admin-jobs.html | 23 ++++++++----------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/apps/client/src/app/components/admin-jobs/admin-jobs.html b/apps/client/src/app/components/admin-jobs/admin-jobs.html index 0fb95a26a..55224b51c 100644 --- a/apps/client/src/app/components/admin-jobs/admin-jobs.html +++ b/apps/client/src/app/components/admin-jobs/admin-jobs.html @@ -28,20 +28,15 @@ Type
    From 5db984ffef13118b219ad2638196f6caa68ab1af Mon Sep 17 00:00:00 2001 From: Aldrin <53973174+Dhoni77@users.noreply.github.com> Date: Thu, 12 Oct 2023 13:51:00 +0530 Subject: [PATCH 032/194] Add date column to benchmark component (#2466) * Add date column to benchmark component --- .../lib/benchmark/benchmark.component.html | 27 +++++++++++++++---- .../src/lib/benchmark/benchmark.component.ts | 2 +- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/libs/ui/src/lib/benchmark/benchmark.component.html b/libs/ui/src/lib/benchmark/benchmark.component.html index e395553ec..33cf72389 100644 --- a/libs/ui/src/lib/benchmark/benchmark.component.html +++ b/libs/ui/src/lib/benchmark/benchmark.component.html @@ -6,14 +6,33 @@ + + + + + - - diff --git a/libs/ui/src/lib/benchmark/benchmark.component.ts b/libs/ui/src/lib/benchmark/benchmark.component.ts index a5c117c24..b9f1dd25b 100644 --- a/libs/ui/src/lib/benchmark/benchmark.component.ts +++ b/libs/ui/src/lib/benchmark/benchmark.component.ts @@ -18,7 +18,7 @@ export class BenchmarkComponent implements OnChanges { @Input() benchmarks: Benchmark[]; @Input() locale: string; - public displayedColumns = ['name', 'change', 'marketCondition']; + public displayedColumns = ['name', 'date', 'change', 'marketCondition']; public resolveMarketCondition = resolveMarketCondition; public constructor() {} From 3905782ad6aad7b0a6a43c8b9c759055ba2fc253 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 13 Oct 2023 19:49:30 +0200 Subject: [PATCH 033/194] Fix fab-container (#2476) --- apps/client/src/styles.scss | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/apps/client/src/styles.scss b/apps/client/src/styles.scss index 8e79de778..36099a249 100644 --- a/apps/client/src/styles.scss +++ b/apps/client/src/styles.scss @@ -510,7 +510,9 @@ ngx-skeleton-loader { padding-bottom: constant(safe-area-inset-bottom); .fab-container { - bottom: 5rem; + @media (max-width: 575.98px) { + bottom: 5rem; + } } .mat-mdc-tab-nav-bar { From 86344635973ebe5fed279cc8dda9ad11508c696e Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 13 Oct 2023 19:50:06 +0200 Subject: [PATCH 034/194] Feature/upgrade prisma to version 5.4.2 (#2477) * Upgrade prisma to version 5.4.2 * Update changelog --- CHANGELOG.md | 1 + package.json | 4 ++-- yarn.lock | 36 ++++++++++++++++++------------------ 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 12254fd9f..a13ad1b68 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Harmonized the style of the create button on the page for granting and revoking public access to share the portfolio - Improved the language localization for German (`de`) +- Upgraded `prisma` from version `5.3.1` to `5.4.2` ## 2.10.0 - 2023-10-09 diff --git a/package.json b/package.json index bbbb99907..0f75e6df4 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "@nestjs/platform-express": "10.1.3", "@nestjs/schedule": "3.0.2", "@nestjs/serve-static": "4.0.0", - "@prisma/client": "5.3.1", + "@prisma/client": "5.4.2", "@simplewebauthn/browser": "5.2.1", "@simplewebauthn/server": "5.2.1", "@stripe/stripe-js": "1.47.0", @@ -122,7 +122,7 @@ "passport": "0.6.0", "passport-google-oauth20": "2.0.0", "passport-jwt": "4.0.0", - "prisma": "5.3.1", + "prisma": "5.4.2", "reflect-metadata": "0.1.13", "rxjs": "7.5.6", "stripe": "11.12.0", diff --git a/yarn.lock b/yarn.lock index 69f995b5d..aede5f1be 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4293,22 +4293,22 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@prisma/client@5.3.1": - version "5.3.1" - resolved "https://registry.yarnpkg.com/@prisma/client/-/client-5.3.1.tgz#fc7fc2d91e814cc4fe18a4bc5e78bf851c26985e" - integrity sha512-ArOKjHwdFZIe1cGU56oIfy7wRuTn0FfZjGuU/AjgEBOQh+4rDkB6nF+AGHP8KaVpkBIiHGPQh3IpwQ3xDMdO0Q== +"@prisma/client@5.4.2": + version "5.4.2" + resolved "https://registry.yarnpkg.com/@prisma/client/-/client-5.4.2.tgz#786f9c1d8f06d955933004ac638d14da4bf14025" + integrity sha512-2xsPaz4EaMKj1WS9iW6MlPhmbqtBsXAOeVttSePp8vTFTtvzh2hZbDgswwBdSCgPzmmwF+tLB259QzggvCmJqA== dependencies: - "@prisma/engines-version" "5.3.1-2.61e140623197a131c2a6189271ffee05a7aa9a59" + "@prisma/engines-version" "5.4.1-2.ac9d7041ed77bcc8a8dbd2ab6616b39013829574" -"@prisma/engines-version@5.3.1-2.61e140623197a131c2a6189271ffee05a7aa9a59": - version "5.3.1-2.61e140623197a131c2a6189271ffee05a7aa9a59" - resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-5.3.1-2.61e140623197a131c2a6189271ffee05a7aa9a59.tgz#7eb6f5c6b7628b8b39df55c903f411528a6f761c" - integrity sha512-y5qbUi3ql2Xg7XraqcXEdMHh0MocBfnBzDn5GbV1xk23S3Mq8MGs+VjacTNiBh3dtEdUERCrUUG7Z3QaJ+h79w== +"@prisma/engines-version@5.4.1-2.ac9d7041ed77bcc8a8dbd2ab6616b39013829574": + version "5.4.1-2.ac9d7041ed77bcc8a8dbd2ab6616b39013829574" + resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-5.4.1-2.ac9d7041ed77bcc8a8dbd2ab6616b39013829574.tgz#ff14f2926890edee47e8f1d08df7b4f392ee34bf" + integrity sha512-wvupDL4AA1vf4TQNANg7kR7y98ITqPsk6aacfBxZKtrJKRIsWjURHkZCGcQliHdqCiW/hGreO6d6ZuSv9MhdAA== -"@prisma/engines@5.3.1": - version "5.3.1" - resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-5.3.1.tgz#53cc72a5ed176dc27d22305fe5569c64cc78b381" - integrity sha512-6QkILNyfeeN67BNEPEtkgh3Xo2tm6D7V+UhrkBbRHqKw9CTaz/vvTP/ROwYSP/3JT2MtIutZm/EnhxUiuOPVDA== +"@prisma/engines@5.4.2": + version "5.4.2" + resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-5.4.2.tgz#ba2b7faeb227c76e423e88f962afe6a031319f3f" + integrity sha512-fqeucJ3LH0e1eyFdT0zRx+oETLancu5+n4lhiYECyEz6H2RDskPJHJYHkVc0LhkU4Uv7fuEnppKU3nVKNzMh8g== "@radix-ui/number@1.0.1": version "1.0.1" @@ -15918,12 +15918,12 @@ pretty-hrtime@^1.0.3: resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" integrity sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A== -prisma@5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/prisma/-/prisma-5.3.1.tgz#a0932c1c1a5ed4ff449d064b193d9c7e94e8bf77" - integrity sha512-Wp2msQIlMPHe+5k5Od6xnsI/WNG7UJGgFUJgqv/ygc7kOECZapcSz/iU4NIEzISs3H1W9sFLjAPbg/gOqqtB7A== +prisma@5.4.2: + version "5.4.2" + resolved "https://registry.yarnpkg.com/prisma/-/prisma-5.4.2.tgz#7eac9276439ec7073ec697c6c0dfa259d96e955e" + integrity sha512-GDMZwZy7mysB2oXU+angQqJ90iaPFdD0rHaZNkn+dio5NRkGLmMqmXs31//tg/qXT3iB0cTQwnGGQNuirhSTZg== dependencies: - "@prisma/engines" "5.3.1" + "@prisma/engines" "5.4.2" prismjs@^1.28.0: version "1.29.0" From 827270704af33417b3c87592cf8feeef02a88c44 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 13 Oct 2023 19:51:02 +0200 Subject: [PATCH 035/194] Bugfix/fix import for activities of type fee and interest (#2474) * Fix import for activities of type fee and interest * Update changelog --- CHANGELOG.md | 4 ++++ .../src/app/services/import-activities.service.ts | 4 ++++ test/import/ok.csv | 11 ++++++----- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a13ad1b68..e8f1c342a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the language localization for German (`de`) - Upgraded `prisma` from version `5.3.1` to `5.4.2` +### Fixed + +- Fixed `FEE` and `INTEREST` types in the activities import of `csv` files + ## 2.10.0 - 2023-10-09 ### Added diff --git a/apps/client/src/app/services/import-activities.service.ts b/apps/client/src/app/services/import-activities.service.ts index 0a58e3cdd..760871922 100644 --- a/apps/client/src/app/services/import-activities.service.ts +++ b/apps/client/src/app/services/import-activities.service.ts @@ -337,6 +337,10 @@ export class ImportActivitiesService { return Type.BUY; case 'dividend': return Type.DIVIDEND; + case 'fee': + return Type.FEE; + case 'interest': + return Type.INTEREST; case 'item': return Type.ITEM; case 'liability': diff --git a/test/import/ok.csv b/test/import/ok.csv index 9f1f1c768..8be69ee90 100644 --- a/test/import/ok.csv +++ b/test/import/ok.csv @@ -1,5 +1,6 @@ -Date,Code,Currency,Price,Quantity,Action,Fee,Note -16-09-2021,MSFT,USD,298.580,5,buy,19.00,My first order 🤓 -17/11/2021,MSFT,USD,0.62,5,dividend,0.00 -01.01.2022,Penthouse Apartment,USD,500000.0,1,item,0.00 -20500606,MSFT,USD,0.00,0,buy,0.00 +Date,Code,DataSource,Currency,Price,Quantity,Action,Fee,Note +01-09-2021,Account Opening Fee,MANUAL,USD,0,0,fee,49, +16-09-2021,MSFT,YAHOO,USD,298.580,5,buy,19.00,My first order 🤓 +17/11/2021,MSFT,YAHOO,USD,0.62,5,dividend,0.00 +01.01.2022,Penthouse Apartment,MANUAL,USD,500000.0,1,item,0.00 +20500606,MSFT,YAHOO,USD,0.00,0,buy,0.00 From 0ac97bd112f39b0702fe4ec41d21ee3193f8e8e0 Mon Sep 17 00:00:00 2001 From: Aldrin <53973174+Dhoni77@users.noreply.github.com> Date: Sat, 14 Oct 2023 01:16:49 +0530 Subject: [PATCH 036/194] Transfer cash balance between accounts (#2455) * Transfer cash balance between accounts * Update changelog --------- Co-authored-by: Thomas <4159106+dtslvr@users.noreply.github.com> --- CHANGELOG.md | 1 + .../api/src/app/account/account.controller.ts | 53 +++++++++++++++++++ apps/api/src/app/account/account.service.ts | 6 +-- .../accounts-table.component.html | 2 +- .../pages/accounts/accounts-page.component.ts | 13 +++-- apps/client/src/app/services/data.service.ts | 13 +++++ 6 files changed, 81 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e8f1c342a..8bff6b300 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- Added support to transfer a part of the cash balance from one to another account - Extended the markets overview by benchmarks (date of last all time high) ### Changed diff --git a/apps/api/src/app/account/account.controller.ts b/apps/api/src/app/account/account.controller.ts index bf15d998f..05d0c11de 100644 --- a/apps/api/src/app/account/account.controller.ts +++ b/apps/api/src/app/account/account.controller.ts @@ -29,6 +29,7 @@ import { StatusCodes, getReasonPhrase } from 'http-status-codes'; import { AccountService } from './account.service'; import { CreateAccountDto } from './create-account.dto'; +import { TransferBalanceDto } from './transfer-balance.dto'; import { UpdateAccountDto } from './update-account.dto'; @Controller('account') @@ -154,6 +155,58 @@ export class AccountController { } } + @Post('transfer-balance') + @UseGuards(AuthGuard('jwt')) + public async transferAccountBalance( + @Body() { accountIdFrom, accountIdTo, balance }: TransferBalanceDto + ) { + if ( + !hasPermission(this.request.user.permissions, permissions.updateAccount) + ) { + throw new HttpException( + getReasonPhrase(StatusCodes.FORBIDDEN), + StatusCodes.FORBIDDEN + ); + } + + const accountsOfUser = await this.accountService.getAccounts( + this.request.user.id + ); + + const currentAccountIds = accountsOfUser.map(({ id }) => { + return id; + }); + + if ( + ![accountIdFrom, accountIdTo].every((accountId) => { + return currentAccountIds.includes(accountId); + }) + ) { + throw new HttpException( + getReasonPhrase(StatusCodes.NOT_FOUND), + StatusCodes.NOT_FOUND + ); + } + + const { currency } = accountsOfUser.find(({ id }) => { + return id === accountIdFrom; + }); + + await this.accountService.updateAccountBalance({ + currency, + accountId: accountIdFrom, + amount: -balance, + userId: this.request.user.id + }); + + await this.accountService.updateAccountBalance({ + currency, + accountId: accountIdTo, + amount: balance, + userId: this.request.user.id + }); + } + @Put(':id') @UseGuards(AuthGuard('jwt')) public async update(@Param('id') id: string, @Body() data: UpdateAccountDto) { diff --git a/apps/api/src/app/account/account.service.ts b/apps/api/src/app/account/account.service.ts index dc049108c..bc6abcc7a 100644 --- a/apps/api/src/app/account/account.service.ts +++ b/apps/api/src/app/account/account.service.ts @@ -109,7 +109,7 @@ export class AccountService { }); } - public async getAccounts(aUserId: string) { + public async getAccounts(aUserId: string): Promise { const accounts = await this.accounts({ include: { Order: true, Platform: true }, orderBy: { name: 'asc' }, @@ -218,13 +218,13 @@ export class AccountService { accountId, amount, currency, - date, + date = new Date(), userId }: { accountId: string; amount: number; currency: string; - date: Date; + date?: Date; userId: string; }) { const { balance, currency: currencyOfAccount } = await this.account({ diff --git a/apps/client/src/app/components/accounts-table/accounts-table.component.html b/apps/client/src/app/components/accounts-table/accounts-table.component.html index 664694735..a4548c1b9 100644 --- a/apps/client/src/app/components/accounts-table/accounts-table.component.html +++ b/apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -1,4 +1,4 @@ -
    +
    From b6101c6375dfb5c14ef391bd950d5b171d594413 Mon Sep 17 00:00:00 2001 From: Kevin Date: Sat, 14 Oct 2023 19:06:27 +0200 Subject: [PATCH 039/194] Feature/import historical data (#2448) * Import historical data for an asset * Update changelog --------- Co-authored-by: Thomas <4159106+dtslvr@users.noreply.github.com> --- CHANGELOG.md | 1 + apps/api/src/app/admin/admin.controller.ts | 38 +++++++++++++++++++ .../app/admin/update-bulk-market-data.dto.ts | 11 ++++++ .../src/app/admin/update-market-data.dto.ts | 6 ++- .../admin-market-data-detail.component.ts | 2 +- .../admin-market-data.component.ts | 2 +- .../asset-profile-dialog.component.ts | 34 +++++++++++++++++ .../asset-profile-dialog.html | 30 +++++++++++++++ apps/client/src/app/services/admin.service.ts | 15 ++++++++ 9 files changed, 136 insertions(+), 3 deletions(-) create mode 100644 apps/api/src/app/admin/update-bulk-market-data.dto.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 25921fc92..17b60924b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added support to transfer a part of the cash balance from one to another account - Extended the markets overview by benchmarks (date of last all time high) +- Added support to import historical market data in the admin control panel ### Changed diff --git a/apps/api/src/app/admin/admin.controller.ts b/apps/api/src/app/admin/admin.controller.ts index 67e106ff8..2d6022221 100644 --- a/apps/api/src/app/admin/admin.controller.ts +++ b/apps/api/src/app/admin/admin.controller.ts @@ -43,6 +43,7 @@ import { StatusCodes, getReasonPhrase } from 'http-status-codes'; import { AdminService } from './admin.service'; import { UpdateAssetProfileDto } from './update-asset-profile.dto'; +import { UpdateBulkMarketDataDto } from './update-bulk-market-data.dto'; import { UpdateMarketDataDto } from './update-market-data.dto'; @Controller('admin') @@ -313,6 +314,43 @@ export class AdminController { return this.adminService.getMarketDataBySymbol({ dataSource, symbol }); } + @Post('market-data/:dataSource/:symbol') + @UseGuards(AuthGuard('jwt')) + public async updateMarketData( + @Body() data: UpdateBulkMarketDataDto, + @Param('dataSource') dataSource: DataSource, + @Param('symbol') symbol: string + ) { + if ( + !hasPermission( + this.request.user.permissions, + permissions.accessAdminControl + ) + ) { + throw new HttpException( + getReasonPhrase(StatusCodes.FORBIDDEN), + StatusCodes.FORBIDDEN + ); + } + + const dataBulkUpdate: Prisma.MarketDataUpdateInput[] = data.marketData.map( + ({ date, marketPrice }) => ({ + dataSource, + date, + marketPrice, + symbol, + state: 'CLOSE' + }) + ); + + return this.marketDataService.updateMany({ + data: dataBulkUpdate + }); + } + + /** + * @deprecated + */ @Put('market-data/:dataSource/:symbol/:dateString') @UseGuards(AuthGuard('jwt')) public async update( diff --git a/apps/api/src/app/admin/update-bulk-market-data.dto.ts b/apps/api/src/app/admin/update-bulk-market-data.dto.ts new file mode 100644 index 000000000..5177263a6 --- /dev/null +++ b/apps/api/src/app/admin/update-bulk-market-data.dto.ts @@ -0,0 +1,11 @@ +import { Type } from 'class-transformer'; +import { ArrayNotEmpty, IsArray, isNotEmptyObject } from 'class-validator'; + +import { UpdateMarketDataDto } from './update-market-data.dto'; + +export class UpdateBulkMarketDataDto { + @ArrayNotEmpty() + @IsArray() + @Type(() => UpdateMarketDataDto) + marketData: UpdateMarketDataDto[]; +} diff --git a/apps/api/src/app/admin/update-market-data.dto.ts b/apps/api/src/app/admin/update-market-data.dto.ts index 79779a318..c0463de31 100644 --- a/apps/api/src/app/admin/update-market-data.dto.ts +++ b/apps/api/src/app/admin/update-market-data.dto.ts @@ -1,6 +1,10 @@ -import { IsNumber } from 'class-validator'; +import { IsDate, IsNumber, IsOptional } from 'class-validator'; export class UpdateMarketDataDto { + @IsDate() + @IsOptional() + date?: Date; + @IsNumber() marketPrice: number; } diff --git a/apps/client/src/app/components/admin-market-data-detail/admin-market-data-detail.component.ts b/apps/client/src/app/components/admin-market-data-detail/admin-market-data-detail.component.ts index cff078e37..0b3123b5c 100644 --- a/apps/client/src/app/components/admin-market-data-detail/admin-market-data-detail.component.ts +++ b/apps/client/src/app/components/admin-market-data-detail/admin-market-data-detail.component.ts @@ -177,7 +177,7 @@ export class AdminMarketDataDetailComponent implements OnChanges, OnInit { dialogRef .afterClosed() .pipe(takeUntil(this.unsubscribeSubject)) - .subscribe(({ withRefresh }) => { + .subscribe(({ withRefresh } = { withRefresh: false }) => { this.marketDataChanged.next(withRefresh); }); } diff --git a/apps/client/src/app/components/admin-market-data/admin-market-data.component.ts b/apps/client/src/app/components/admin-market-data/admin-market-data.component.ts index 7896db655..0ffa77bf0 100644 --- a/apps/client/src/app/components/admin-market-data/admin-market-data.component.ts +++ b/apps/client/src/app/components/admin-market-data/admin-market-data.component.ts @@ -342,7 +342,7 @@ export class AdminMarketDataComponent dialogRef .afterClosed() .pipe(takeUntil(this.unsubscribeSubject)) - .subscribe(({ dataSource, symbol }) => { + .subscribe(({ dataSource, symbol } = {}) => { if (dataSource && symbol) { this.adminService .addAssetProfile({ dataSource, symbol }) 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 792025e9b..ccb6f3ccd 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 @@ -11,12 +11,15 @@ import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { UpdateAssetProfileDto } from '@ghostfolio/api/app/admin/update-asset-profile.dto'; import { AdminService } from '@ghostfolio/client/services/admin.service'; import { DataService } from '@ghostfolio/client/services/data.service'; +import { DATE_FORMAT } from '@ghostfolio/common/helper'; import { AdminMarketDataDetails, UniqueAsset } from '@ghostfolio/common/interfaces'; import { translate } from '@ghostfolio/ui/i18n'; import { MarketData, SymbolProfile } from '@prisma/client'; +import { format, parseISO } from 'date-fns'; +import { parse as csvToJson } from 'papaparse'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @@ -42,12 +45,17 @@ export class AssetProfileDialog implements OnDestroy, OnInit { public countries: { [code: string]: { name: string; value: number }; }; + public historicalDataAsCsvString: string; public isBenchmark = false; public marketDataDetails: MarketData[] = []; public sectors: { [name: string]: { name: string; value: number }; }; + private static readonly HISTORICAL_DATA_TEMPLATE = `date;marketPrice\n${format( + new Date(), + DATE_FORMAT + )};123.45`; private unsubscribeSubject = new Subject(); public constructor( @@ -66,6 +74,9 @@ export class AssetProfileDialog implements OnDestroy, OnInit { } public initialize() { + this.historicalDataAsCsvString = + AssetProfileDialog.HISTORICAL_DATA_TEMPLATE; + this.adminService .fetchAdminMarketDataBySymbol({ dataSource: this.data.dataSource, @@ -134,6 +145,29 @@ export class AssetProfileDialog implements OnDestroy, OnInit { .subscribe(() => {}); } + public onImportHistoricalData() { + const marketData = csvToJson(this.historicalDataAsCsvString, { + dynamicTyping: true, + header: true, + skipEmptyLines: true + }).data; + + this.adminService + .postMarketData({ + dataSource: this.data.dataSource, + marketData: { + marketData: marketData.map(({ date, marketPrice }) => { + return { marketPrice, date: parseISO(date) }; + }) + }, + symbol: this.data.symbol + }) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(() => { + this.initialize(); + }); + } + public onMarketDataChanged(withRefresh: boolean = false) { if (withRefresh) { this.initialize(); 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 6682d004d..66d00e720 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 @@ -51,6 +51,36 @@ [symbol]="data.symbol" (marketDataChanged)="onMarketDataChanged($event)" > + +
    + + + Historical Data (CSV) + + + +
    + +
    + +
    +
    (url, marketData); + } + public postPlatform(aPlatform: CreatePlatformDto) { return this.http.post(`/api/v1/platform`, aPlatform); } From 20f9225daabdb183fadd476a1e17893f95513c6f Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 14 Oct 2023 19:12:37 +0200 Subject: [PATCH 040/194] Release 2.11.0 (#2488) --- CHANGELOG.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 17b60924b..63d566f7d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ 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.11.0 - 2023-10-14 ### Added diff --git a/package.json b/package.json index 0f75e6df4..4cb57f549 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.10.0", + "version": "2.11.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From bf816c3b899e483f9c9877c33bc0ef72330d60d0 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 15 Oct 2023 10:02:55 +0200 Subject: [PATCH 041/194] Bugfix/show transfer balance button based on permission (#2489) * Show button depending on permission * Update changelog --- CHANGELOG.md | 6 ++++++ .../components/accounts-table/accounts-table.component.html | 2 +- .../src/app/pages/accounts/accounts-page.component.ts | 6 +++--- apps/client/src/app/pages/accounts/accounts-page.html | 2 +- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 63d566f7d..dcdffbf53 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ 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 + +### Fixed + +- Displayed the transfer cash balance button based on a permission + ## 2.11.0 - 2023-10-14 ### Added diff --git a/apps/client/src/app/components/accounts-table/accounts-table.component.html b/apps/client/src/app/components/accounts-table/accounts-table.component.html index a4548c1b9..bfe5a667a 100644 --- a/apps/client/src/app/components/accounts-table/accounts-table.component.html +++ b/apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -1,4 +1,4 @@ -
    +
    diff --git a/libs/ui/src/lib/assistant/interfaces/interfaces.ts b/libs/ui/src/lib/assistant/interfaces/interfaces.ts index 922091fb5..99f70dbe1 100644 --- a/libs/ui/src/lib/assistant/interfaces/interfaces.ts +++ b/libs/ui/src/lib/assistant/interfaces/interfaces.ts @@ -1,5 +1,12 @@ -import { Position } from '@ghostfolio/common/interfaces'; +import { UniqueAsset } from '@ghostfolio/common/interfaces'; + +export interface ISearchResultItem extends UniqueAsset { + assetSubClassString: string; + currency: string; + name: string; +} export interface ISearchResults { - holdings: Position[]; + assetProfiles: ISearchResultItem[]; + holdings: ISearchResultItem[]; } From 8492a8fed097b6f2511f4cde19c2b24ebad0df17 Mon Sep 17 00:00:00 2001 From: Kevin Date: Tue, 17 Oct 2023 09:17:44 +0200 Subject: [PATCH 045/194] Upgrade simplewebauthn (#2498) * Upgrade simplewebauthn to new major version * Update changelog --- CHANGELOG.md | 2 + apps/api/src/app/auth/web-auth.service.ts | 30 ++- .../user-account-settings.component.ts | 16 +- .../user-account-settings.html | 2 +- .../src/app/services/web-authn.service.ts | 4 +- package.json | 6 +- yarn.lock | 243 +++++++++--------- 7 files changed, 154 insertions(+), 149 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 02922b3e9..ba9a7d750 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,10 +15,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Extended the `copy-assets` `Nx` target to copy the locales to the server’s assets +- Upgraded `@simplewebauthn/browser` and `@simplewebauthn/server` from version `5.2.1` to `8.3` ### Fixed - Displayed the transfer cash balance button based on a permission +- Fixed the biometric authentication ## 2.11.0 - 2023-10-14 diff --git a/apps/api/src/app/auth/web-auth.service.ts b/apps/api/src/app/auth/web-auth.service.ts index 471b77709..8d5c91a74 100644 --- a/apps/api/src/app/auth/web-auth.service.ts +++ b/apps/api/src/app/auth/web-auth.service.ts @@ -64,7 +64,7 @@ export class WebAuthService { } }; - const options = generateRegistrationOptions(opts); + const options = await generateRegistrationOptions(opts); await this.userService.updateUser({ data: { @@ -88,10 +88,16 @@ export class WebAuthService { let verification: VerifiedRegistrationResponse; try { const opts: VerifyRegistrationResponseOpts = { - credential, expectedChallenge, expectedOrigin: this.expectedOrigin, - expectedRPID: this.rpID + expectedRPID: this.rpID, + response: { + clientExtensionResults: credential.clientExtensionResults, + id: credential.id, + rawId: credential.rawId, + response: credential.response, + type: 'public-key' + } }; verification = await verifyRegistrationResponse(opts); } catch (error) { @@ -117,8 +123,8 @@ export class WebAuthService { */ existingDevice = await this.deviceService.createAuthDevice({ counter, - credentialPublicKey, - credentialId: credentialID, + credentialId: Buffer.from(credentialID), + credentialPublicKey: Buffer.from(credentialPublicKey), User: { connect: { id: user.id } } }); } @@ -152,7 +158,7 @@ export class WebAuthService { userVerification: 'preferred' }; - const options = generateAuthenticationOptions(opts); + const options = await generateAuthenticationOptions(opts); await this.userService.updateUser({ data: { @@ -181,7 +187,6 @@ export class WebAuthService { let verification: VerifiedAuthenticationResponse; try { const opts: VerifyAuthenticationResponseOpts = { - credential, authenticator: { credentialID: device.credentialId, credentialPublicKey: device.credentialPublicKey, @@ -189,9 +194,16 @@ export class WebAuthService { }, expectedChallenge: `${user.authChallenge}`, expectedOrigin: this.expectedOrigin, - expectedRPID: this.rpID + expectedRPID: this.rpID, + response: { + clientExtensionResults: credential.clientExtensionResults, + id: credential.id, + rawId: credential.rawId, + response: credential.response, + type: 'public-key' + } }; - verification = verifyAuthenticationResponse(opts); + verification = await verifyAuthenticationResponse(opts); } catch (error) { Logger.error(error, 'WebAuthService'); throw new InternalServerErrorException({ error: error.message }); diff --git a/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts b/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts index a52812ed3..6fb8d5c15 100644 --- a/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts +++ b/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -3,10 +3,9 @@ import { ChangeDetectorRef, Component, OnDestroy, - OnInit, - ViewChild + OnInit } from '@angular/core'; -import { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox'; +import { MatCheckboxChange } from '@angular/material/checkbox'; import { DataService } from '@ghostfolio/client/services/data.service'; import { STAY_SIGNED_IN, @@ -29,14 +28,12 @@ import { catchError, takeUntil } from 'rxjs/operators'; templateUrl: './user-account-settings.html' }) export class UserAccountSettingsComponent implements OnDestroy, OnInit { - @ViewChild('toggleSignInWithFingerprintEnabledElement') - signInWithFingerprintElement: MatCheckbox; - public appearancePlaceholder = $localize`Auto`; public baseCurrency: string; public currencies: string[] = []; public hasPermissionToUpdateViewMode: boolean; public hasPermissionToUpdateUserSettings: boolean; + public isWebAuthnEnabled: boolean; public language = document.documentElement.lang; public locales = [ 'de', @@ -250,9 +247,8 @@ export class UserAccountSettingsComponent implements OnDestroy, OnInit { } private update() { - if (this.signInWithFingerprintElement) { - this.signInWithFingerprintElement.checked = - this.webAuthnService.isEnabled() ?? false; - } + this.isWebAuthnEnabled = this.webAuthnService.isEnabled() ?? false; + + this.changeDetectorRef.markForCheck(); } } diff --git a/apps/client/src/app/components/user-account-settings/user-account-settings.html b/apps/client/src/app/components/user-account-settings/user-account-settings.html index 12f3da458..66829d55e 100644 --- a/apps/client/src/app/components/user-account-settings/user-account-settings.html +++ b/apps/client/src/app/components/user-account-settings/user-account-settings.html @@ -154,8 +154,8 @@
    diff --git a/apps/client/src/app/services/web-authn.service.ts b/apps/client/src/app/services/web-authn.service.ts index eb033884c..5075d036d 100644 --- a/apps/client/src/app/services/web-authn.service.ts +++ b/apps/client/src/app/services/web-authn.service.ts @@ -88,7 +88,9 @@ export class WebAuthnService { { deviceId } ) .pipe( - switchMap(startAuthentication), + switchMap((requestOptionsJSON) => + startAuthentication(requestOptionsJSON, true) + ), switchMap((assertionResponse) => { return this.http.post<{ authToken: string }>( `/api/v1/auth/webauthn/verify-assertion`, diff --git a/package.json b/package.json index 4cb57f549..5bc51418d 100644 --- a/package.json +++ b/package.json @@ -82,8 +82,8 @@ "@nestjs/schedule": "3.0.2", "@nestjs/serve-static": "4.0.0", "@prisma/client": "5.4.2", - "@simplewebauthn/browser": "5.2.1", - "@simplewebauthn/server": "5.2.1", + "@simplewebauthn/browser": "8.3.1", + "@simplewebauthn/server": "8.3.2", "@stripe/stripe-js": "1.47.0", "alphavantage": "2.2.0", "big.js": "6.2.1", @@ -157,7 +157,7 @@ "@nx/web": "16.7.4", "@nx/workspace": "16.7.4", "@schematics/angular": "16.2.0", - "@simplewebauthn/typescript-types": "5.2.1", + "@simplewebauthn/typescript-types": "8.0.0", "@storybook/addon-essentials": "7.3.2", "@storybook/angular": "7.3.2", "@storybook/core-server": "7.3.2", diff --git a/yarn.lock b/yarn.lock index aede5f1be..3c798bb15 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1819,6 +1819,36 @@ resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.2.tgz#6110f918d273fe2af8ea1c4398a88774bb9fc12f" integrity sha512-Tbsj02wXCbqGmzdnXNk0SOF19ChhRU70BsroIi4Pm6Ehp56in6vch94mfbdQ17DozxkL3BAVjbZ4Qc1a0HFRAg== +"@cbor-extract/cbor-extract-darwin-arm64@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.1.1.tgz#5721f6dd3feae0b96d23122853ce977e0671b7a6" + integrity sha512-blVBy5MXz6m36Vx0DfLd7PChOQKEs8lK2bD1WJn/vVgG4FXZiZmZb2GECHFvVPA5T7OnODd9xZiL3nMCv6QUhA== + +"@cbor-extract/cbor-extract-darwin-x64@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-darwin-x64/-/cbor-extract-darwin-x64-2.1.1.tgz#c25e7d0133950d87d101d7b3afafea8d50d83f5f" + integrity sha512-h6KFOzqk8jXTvkOftyRIWGrd7sKQzQv2jVdTL9nKSf3D2drCvQB/LHUxAOpPXo3pv2clDtKs3xnHalpEh3rDsw== + +"@cbor-extract/cbor-extract-linux-arm64@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-linux-arm64/-/cbor-extract-linux-arm64-2.1.1.tgz#48f78e7d8f0fcc84ed074b6bfa6d15dd83187c63" + integrity sha512-SxAaRcYf8S0QHaMc7gvRSiTSr7nUYMqbUdErBEu+HYA4Q6UNydx1VwFE68hGcp1qvxcy9yT5U7gA+a5XikfwSQ== + +"@cbor-extract/cbor-extract-linux-arm@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-linux-arm/-/cbor-extract-linux-arm-2.1.1.tgz#7507d346389cb682e44fab8fae9534edd52e2e41" + integrity sha512-ds0uikdcIGUjPyraV4oJqyVE5gl/qYBpa/Wnh6l6xLE2lj/hwnjT2XcZCChdXwW/YFZ1LUHs6waoYN8PmK0nKQ== + +"@cbor-extract/cbor-extract-linux-x64@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.1.1.tgz#b7c1d2be61c58ec18d58afbad52411ded63cd4cd" + integrity sha512-GVK+8fNIE9lJQHAlhOROYiI0Yd4bAZ4u++C2ZjlkS3YmO6hi+FUxe6Dqm+OKWTcMpL/l71N6CQAmaRcb4zyJuA== + +"@cbor-extract/cbor-extract-win32-x64@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.1.1.tgz#21b11a1a3f18c3e7d62fd5f87438b7ed2c64c1f7" + integrity sha512-2Niq1C41dCRIDeD8LddiH+mxGlO7HJ612Ll3D/E73ZWBmycued+8ghTr/Ho3CMOWPUEr08XtyBMVXAjqF+TcKw== + "@codewithdan/observable-store@2.2.15": version "2.2.15" resolved "https://registry.yarnpkg.com/@codewithdan/observable-store/-/observable-store-2.2.15.tgz#6d27e0988e182853def59a714b712f4389e558d2" @@ -2540,6 +2570,11 @@ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.1.tgz#1a5b1959a528e374e8037c4396c3e825d6cf4a83" integrity sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw== +"@hexagon/base64@^1.1.27": + version "1.1.28" + resolved "https://registry.yarnpkg.com/@hexagon/base64/-/base64-1.1.28.tgz#7d306a97f1423829be5b27c9d388fe50e3099d48" + integrity sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw== + "@humanwhocodes/config-array@^0.11.8": version "0.11.10" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.10.tgz#5a3ffe32cc9306365fb3fd572596cd602d5e12d2" @@ -4252,7 +4287,7 @@ node-addon-api "^3.2.1" node-gyp-build "^4.3.0" -"@peculiar/asn1-android@^2.1.7": +"@peculiar/asn1-android@^2.3.6": version "2.3.6" resolved "https://registry.yarnpkg.com/@peculiar/asn1-android/-/asn1-android-2.3.6.tgz#20363c23bc5b9a91f7ffd80d7c3842dccff8c20b" integrity sha512-zkYh4DsiRhiNfg6tWaUuRc+huwlb9XJbmeZLrjTz9v76UK1Ehq3EnfJFED6P3sdznW/nqWe46LoM9JrqxcD58g== @@ -4261,7 +4296,27 @@ asn1js "^3.0.5" tslib "^2.4.0" -"@peculiar/asn1-schema@^2.1.7", "@peculiar/asn1-schema@^2.3.6": +"@peculiar/asn1-ecc@^2.3.6": + version "2.3.6" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-ecc/-/asn1-ecc-2.3.6.tgz#f155f33f5c61df463d9b33b911d25578a19694b7" + integrity sha512-Hu1xzMJQWv8/GvzOiinaE6XiD1/kEhq2C/V89UEoWeZ2fLUcGNIvMxOr/pMyL0OmpRWj/mhCTXOZp4PP+a0aTg== + dependencies: + "@peculiar/asn1-schema" "^2.3.6" + "@peculiar/asn1-x509" "^2.3.6" + asn1js "^3.0.5" + tslib "^2.4.0" + +"@peculiar/asn1-rsa@^2.3.6": + version "2.3.6" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-rsa/-/asn1-rsa-2.3.6.tgz#e2af2c52a914c60f33853a86a48905ec555b29c2" + integrity sha512-DswjJyAXZnvESuImGNTvbNKvh1XApBVqU+r3UmrFFTAI23gv62byl0f5OFKWTNhCf66WQrd3sklpsCZc/4+jwA== + dependencies: + "@peculiar/asn1-schema" "^2.3.6" + "@peculiar/asn1-x509" "^2.3.6" + asn1js "^3.0.5" + tslib "^2.4.0" + +"@peculiar/asn1-schema@^2.3.6": version "2.3.6" resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.3.6.tgz#3dd3c2ade7f702a9a94dfb395c192f5fa5d6b922" integrity sha512-izNRxPoaeJeg/AyH8hER6s+H7p4itk+03QCa4sbxI3lNdseQYCuxzgsuNK8bTXChtLTjpJz6NmXKA73qLa3rCA== @@ -4270,7 +4325,7 @@ pvtsutils "^1.3.2" tslib "^2.4.0" -"@peculiar/asn1-x509@^2.1.7": +"@peculiar/asn1-x509@^2.3.6": version "2.3.6" resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509/-/asn1-x509-2.3.6.tgz#e50154a460cdf43da8a41b23ee807a53e0036af0" integrity sha512-dRwX31R1lcbIdzbztiMvLNTDoGptxdV7HocNx87LfKU0fEWh7fTWJjx4oV+glETSy6heF/hJHB2J4RGB3vVSYg== @@ -4638,38 +4693,32 @@ "@sigstore/protobuf-specs" "^0.1.0" tuf-js "^1.1.7" -"@simplewebauthn/browser@5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@simplewebauthn/browser/-/browser-5.2.1.tgz#569252a9f235a99aae90c4d1cc6c441f42637b8e" - integrity sha512-TxL3OPHJf57hmnfQoF3zRIQWEdsJLxrA9NcGdRK0sB/h3jd13kpGQonBtMnj4YBQnWTtRDZ804wlpI9IEMaJ9g== - -"@simplewebauthn/server@5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@simplewebauthn/server/-/server-5.2.1.tgz#49038d2951ad2ac065bdf8342fdb13f78ee4df1c" - integrity sha512-+CQ8oJf9Io8y4ReYLagX5JG9ShntIkdeCPkMoyHLBSRPlNY0N/Yv3Iun4YPQ8d4LJUU9f8S1eD5bibIEMjWDRg== - dependencies: - "@peculiar/asn1-android" "^2.1.7" - "@peculiar/asn1-schema" "^2.1.7" - "@peculiar/asn1-x509" "^2.1.7" - "@simplewebauthn/typescript-types" "^5.2.1" - base64url "^3.0.1" - cbor "^5.1.0" - debug "^4.3.2" - elliptic "^6.5.3" - jsrsasign "^10.4.0" - jwk-to-pem "^2.0.4" - node-fetch "^2.6.0" - node-rsa "^1.1.1" +"@simplewebauthn/browser@8.3.1": + version "8.3.1" + resolved "https://registry.yarnpkg.com/@simplewebauthn/browser/-/browser-8.3.1.tgz#f5c1aed6313d61944a9e13f16ae4495750bddf93" + integrity sha512-bMW7oOkxX4ydRAkkPtJ1do2k9yOoIGc/hZYebcuEOVdJoC6wwVpu97mYY7Mz8B9hLlcaR5WFgBsLl5tSJVzm8A== + dependencies: + "@simplewebauthn/typescript-types" "^8.0.0" -"@simplewebauthn/typescript-types@5.2.1": - version "5.2.1" - resolved "https://registry.yarnpkg.com/@simplewebauthn/typescript-types/-/typescript-types-5.2.1.tgz#a8229ce4f71be7edafe3bfdce062b332ef494f0d" - integrity sha512-t/NzbjaD0zu4ivUmiof2cPA8X5LHhFX+DflBBl71/dzEhl15qepDI2rxWdjB+Hc0FfOT1fBQnb1uP19fPcDUiA== +"@simplewebauthn/server@8.3.2": + version "8.3.2" + resolved "https://registry.yarnpkg.com/@simplewebauthn/server/-/server-8.3.2.tgz#dfdbe7af4c1258e786c4a0b1c83c54743ba7568c" + integrity sha512-ceo8t5gdO5W/JOePQWPDH+rAd8tO6QNalLU56rc9ItdzaTjk+qcYwQg/BKXDDg6117P3HKrRBkZwBrMJl4dOdA== + dependencies: + "@hexagon/base64" "^1.1.27" + "@peculiar/asn1-android" "^2.3.6" + "@peculiar/asn1-ecc" "^2.3.6" + "@peculiar/asn1-rsa" "^2.3.6" + "@peculiar/asn1-schema" "^2.3.6" + "@peculiar/asn1-x509" "^2.3.6" + "@simplewebauthn/typescript-types" "^8.0.0" + cbor-x "^1.5.2" + cross-fetch "^4.0.0" -"@simplewebauthn/typescript-types@^5.2.1": - version "5.4.0" - resolved "https://registry.yarnpkg.com/@simplewebauthn/typescript-types/-/typescript-types-5.4.0.tgz#533b28e7cabcc092396ecd07bbb953b71e7696b6" - integrity sha512-LeJq6Jx+o7D6iIlCy8CH5jCjwVcUvAReEo66VcF3nysfc/yKW5yCAPLSRmPITF4CRZTfnVPxUBUcveUQL6aBMA== +"@simplewebauthn/typescript-types@8.0.0", "@simplewebauthn/typescript-types@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@simplewebauthn/typescript-types/-/typescript-types-8.0.0.tgz#1698a7228aba880c5c1deba1f13a4f9fd8851cb3" + integrity sha512-d7Izb2H+LZJteXMkS8DmpAarD6mZdpIOu/av/yH4/u/3Pd6DKFLyBM3j8BMmUvUqpzvJvHARNrRfQYto58mtTQ== "@sinclair/typebox@^0.27.8": version "0.27.8" @@ -7122,17 +7171,7 @@ arrify@^2.0.0: resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== -asn1.js@^5.3.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - -asn1@^0.2.4, asn1@~0.2.3: +asn1@~0.2.3: version "0.2.6" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== @@ -7461,7 +7500,7 @@ base64-js@^1.2.0, base64-js@^1.3.0, base64-js@^1.3.1: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -base64url@3.x.x, base64url@^3.0.1: +base64url@3.x.x: version "3.0.1" resolved "https://registry.yarnpkg.com/base64url/-/base64url-3.0.1.tgz#6399d572e2bc3f90a9a8b22d5dbb0a32d33f788d" integrity sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A== @@ -7527,7 +7566,7 @@ big.js@^5.2.2: resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== -bignumber.js@^9.0.0, bignumber.js@^9.0.1: +bignumber.js@^9.0.0: version "9.1.1" resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.1.tgz#c4df7dc496bd849d4c9464344c1aa74228b4dac6" integrity sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig== @@ -7556,11 +7595,6 @@ bluebird@^3.7.2: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -bn.js@^4.0.0, bn.js@^4.11.9: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - body-parser@1.20.1: version "1.20.1" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" @@ -7689,11 +7723,6 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== - browser-assert@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/browser-assert/-/browser-assert-1.2.1.tgz#9aaa5a2a8c74685c2ae05bfe46efd606f068c200" @@ -7953,13 +7982,26 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== -cbor@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/cbor/-/cbor-5.2.0.tgz#4cca67783ccd6de7b50ab4ed62636712f287a67c" - integrity sha512-5IMhi9e1QU76ppa5/ajP1BmMWZ2FHkhAhjeVKQ/EFCgYSEaeVaoGtL7cxJskf9oCCk+XjzaIdc3IuU/dbA/o2A== +cbor-extract@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/cbor-extract/-/cbor-extract-2.1.1.tgz#f154b31529fdb6b7c70fb3ca448f44eda96a1b42" + integrity sha512-1UX977+L+zOJHsp0mWFG13GLwO6ucKgSmSW6JTl8B9GUvACvHeIVpFqhU92299Z6PfD09aTXDell5p+lp1rUFA== dependencies: - bignumber.js "^9.0.1" - nofilter "^1.0.4" + node-gyp-build-optional-packages "5.0.3" + optionalDependencies: + "@cbor-extract/cbor-extract-darwin-arm64" "2.1.1" + "@cbor-extract/cbor-extract-darwin-x64" "2.1.1" + "@cbor-extract/cbor-extract-linux-arm" "2.1.1" + "@cbor-extract/cbor-extract-linux-arm64" "2.1.1" + "@cbor-extract/cbor-extract-linux-x64" "2.1.1" + "@cbor-extract/cbor-extract-win32-x64" "2.1.1" + +cbor-x@^1.5.2: + version "1.5.4" + resolved "https://registry.yarnpkg.com/cbor-x/-/cbor-x-1.5.4.tgz#8f0754fa8589cbd7339b613b2b5717d133508e98" + integrity sha512-PVKILDn+Rf6MRhhcyzGXi5eizn1i0i3F8Fe6UMMxXBnWkalq9+C5+VTmlIjAYM4iF2IYF2N+zToqAfYOp+3rfw== + optionalDependencies: + cbor-extract "^2.1.1" chalk@^1.0.0, chalk@^1.1.3: version "1.1.3" @@ -8691,6 +8733,13 @@ cross-fetch@^3.0.5: dependencies: node-fetch "^2.6.12" +cross-fetch@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-4.0.0.tgz#f037aef1580bb3a1a35164ea2a848ba81b445983" + integrity sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g== + dependencies: + node-fetch "^2.6.12" + cross-spawn@^6.0.0, cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -9741,19 +9790,6 @@ elkjs@^0.8.2: resolved "https://registry.yarnpkg.com/elkjs/-/elkjs-0.8.2.tgz#c37763c5a3e24e042e318455e0147c912a7c248e" integrity sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ== -elliptic@^6.5.3, elliptic@^6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - emittery@^0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" @@ -11673,14 +11709,6 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -hash.js@^1.0.0, hash.js@^1.0.3: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - hdr-histogram-js@^2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz#0b860534655722b6e3f3e7dca7b78867cf43dcb5" @@ -11710,15 +11738,6 @@ helmet@7.0.0: resolved "https://registry.yarnpkg.com/helmet/-/helmet-7.0.0.tgz#ac3011ba82fa2467f58075afa58a49427ba6212d" integrity sha512-MsIgYmdBh460ZZ8cJC81q4XJknjG567wzEmv46WOBblDb6TUd3z8/GhgmsM9pn8g2B80tAJ4m5/d3Bi1KrSUBQ== -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - hosted-git-info@^2.1.4: version "2.8.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" @@ -13490,11 +13509,6 @@ jsprim@^2.0.2: json-schema "0.4.0" verror "1.10.0" -jsrsasign@^10.4.0: - version "10.8.6" - resolved "https://registry.yarnpkg.com/jsrsasign/-/jsrsasign-10.8.6.tgz#ebf7f3c812c6517af84f0d8a10115e0dbfabe145" - integrity sha512-bQmbVtsfbgaKBTWCKiDCPlUPbdlRIK/FzSwT3BzIgZl/cU6TqXu6pZJsCI/dJVrZ9Gir5GC4woqw9shH/v7MBw== - jwa@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/jwa/-/jwa-1.4.1.tgz#743c32985cb9e98655530d53641b66c8645b039a" @@ -13513,15 +13527,6 @@ jwa@^2.0.0: ecdsa-sig-formatter "1.0.11" safe-buffer "^5.0.1" -jwk-to-pem@^2.0.4: - version "2.0.5" - resolved "https://registry.yarnpkg.com/jwk-to-pem/-/jwk-to-pem-2.0.5.tgz#151310bcfbcf731adc5ad9f379cbc8b395742906" - integrity sha512-L90jwellhO8jRKYwbssU9ifaMVqajzj3fpRjDKcsDzrslU9syRbFqfkXtT4B89HYAap+xsxNcxgBSB09ig+a7A== - dependencies: - asn1.js "^5.3.0" - elliptic "^6.5.4" - safe-buffer "^5.0.1" - jws@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/jws/-/jws-3.2.2.tgz#001099f3639468c9414000e99995fa52fb478304" @@ -14226,16 +14231,11 @@ mini-css-extract-plugin@~2.4.7: dependencies: schema-utils "^4.0.0" -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: +minimalistic-assert@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== - minimatch@3.0.5: version "3.0.5" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.5.tgz#4da8f1290ee0f0f8e83d60ca69f8f134068604a3" @@ -14600,7 +14600,7 @@ node-fetch-native@^1.0.2: resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.2.0.tgz#13ec6df98f33168958dbfb6945f10aedf42e7ea8" integrity sha512-5IAMBTl9p6PaAjYCnMv5FmqIF6GcZnawAVnzaCG0rX2aYZJ4CxEkZNtVPuTRug7fL7wyM5BQYTlAzcyMPi6oTQ== -node-fetch@^2.0.0, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7: +node-fetch@^2.0.0, node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7: version "2.6.12" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.12.tgz#02eb8e22074018e3d5a83016649d04df0e348fba" integrity sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g== @@ -14612,6 +14612,11 @@ node-forge@^1, node-forge@^1.3.1: resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== +node-gyp-build-optional-packages@5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.3.tgz#92a89d400352c44ad3975010368072b41ad66c17" + integrity sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA== + node-gyp-build-optional-packages@5.0.7: version "5.0.7" resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz#5d2632bbde0ab2f6e22f1bbac2199b07244ae0b3" @@ -14654,18 +14659,6 @@ node-releases@^2.0.12: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== -node-rsa@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/node-rsa/-/node-rsa-1.1.1.tgz#efd9ad382097782f506153398496f79e4464434d" - integrity sha512-Jd4cvbJMryN21r5HgxQOpMEqv+ooke/korixNNK3mGqfGJmy0M77WDDzo/05969+OkMy3XW1UuZsSmW9KQm7Fw== - dependencies: - asn1 "^0.2.4" - -nofilter@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-1.0.4.tgz#78d6f4b6a613e7ced8b015cec534625f7667006e" - integrity sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA== - non-layered-tidy-tree-layout@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz#57d35d13c356643fc296a55fb11ac15e74da7804" From 32df7620d90c65102e97d9495eb60955b2bb2373 Mon Sep 17 00:00:00 2001 From: Manushreshta B L <77065548+M27afk@users.noreply.github.com> Date: Tue, 17 Oct 2023 22:03:22 +0530 Subject: [PATCH 046/194] Add support for creating asset profiles with MANUAL data source (#2479) * Add support for creating asset profiles with MANUAL data source * Refactoring * Update changelog --------- Co-authored-by: Thomas <4159106+dtslvr@users.noreply.github.com> --- CHANGELOG.md | 1 + apps/api/src/app/admin/admin.controller.ts | 7 ++- apps/api/src/app/admin/admin.service.ts | 11 +++- ...create-asset-profile-dialog.component.scss | 3 + .../create-asset-profile-dialog.component.ts | 62 +++++++++++++++---- .../create-asset-profile-dialog.html | 38 +++++++++--- .../create-asset-profile-dialog.module.ts | 4 ++ 7 files changed, 104 insertions(+), 22 deletions(-) create mode 100644 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.scss diff --git a/CHANGELOG.md b/CHANGELOG.md index ba9a7d750..2c3f4dd80 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added the endpoint `GET api/v1/account/:id/balances` which provides historical cash balances - Added support to search for an asset profile by `isin`, `name` and `symbol` as an administrator (experimental) +- Added support for creating asset profiles with `MANUAL` data source ### Changed diff --git a/apps/api/src/app/admin/admin.controller.ts b/apps/api/src/app/admin/admin.controller.ts index 30270d0c1..a19b17d4a 100644 --- a/apps/api/src/app/admin/admin.controller.ts +++ b/apps/api/src/app/admin/admin.controller.ts @@ -398,8 +398,11 @@ export class AdminController { StatusCodes.FORBIDDEN ); } - - return this.adminService.addAssetProfile({ dataSource, symbol }); + return this.adminService.addAssetProfile({ + dataSource, + symbol, + currency: this.request.user.Settings.settings.baseCurrency + }); } @Delete('profile-data/:dataSource/:symbol') diff --git a/apps/api/src/app/admin/admin.service.ts b/apps/api/src/app/admin/admin.service.ts index 173854ea7..84ae5934c 100644 --- a/apps/api/src/app/admin/admin.service.ts +++ b/apps/api/src/app/admin/admin.service.ts @@ -41,10 +41,19 @@ export class AdminService { ) {} public async addAssetProfile({ + currency, dataSource, symbol - }: UniqueAsset): Promise { + }: UniqueAsset & { currency?: string }): Promise { try { + if (dataSource === 'MANUAL') { + return this.symbolProfileService.add({ + currency, + dataSource, + symbol + }); + } + const assetProfiles = await this.dataProviderService.getAssetProfiles([ { dataSource, symbol } ]); diff --git a/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.scss b/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.scss new file mode 100644 index 000000000..5d4e87f30 --- /dev/null +++ b/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.scss @@ -0,0 +1,3 @@ +:host { + display: block; +} diff --git a/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts b/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts index c3c2fb2eb..eea8898c1 100644 --- a/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts +++ b/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts @@ -1,15 +1,15 @@ import { ChangeDetectionStrategy, - ChangeDetectorRef, Component, - Inject, OnDestroy, OnInit } from '@angular/core'; import { + AbstractControl, FormBuilder, FormControl, FormGroup, + ValidationErrors, Validators } from '@angular/forms'; import { MatDialogRef } from '@angular/material/dialog'; @@ -19,35 +19,75 @@ import { AdminService } from '@ghostfolio/client/services/admin.service'; changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'h-100' }, selector: 'gf-create-asset-profile-dialog', + styleUrls: ['./create-asset-profile-dialog.component.scss'], templateUrl: 'create-asset-profile-dialog.html' }) export class CreateAssetProfileDialog implements OnInit, OnDestroy { public createAssetProfileForm: FormGroup; + public mode: 'auto' | 'manual'; public constructor( public readonly adminService: AdminService, - public readonly changeDetectorRef: ChangeDetectorRef, public readonly dialogRef: MatDialogRef, public readonly formBuilder: FormBuilder ) {} public ngOnInit() { - this.createAssetProfileForm = this.formBuilder.group({ - searchSymbol: new FormControl(null, [Validators.required]) - }); + this.createAssetProfileForm = this.formBuilder.group( + { + addSymbol: new FormControl(null, [Validators.required]), + searchSymbol: new FormControl(null, [Validators.required]) + }, + { + validators: this.atLeastOneValid + } + ); + + this.mode = 'auto'; } public onCancel() { this.dialogRef.close(); } + public onRadioChange(mode: 'auto' | 'manual') { + this.mode = mode; + } + public onSubmit() { - this.dialogRef.close({ - dataSource: - this.createAssetProfileForm.controls['searchSymbol'].value.dataSource, - symbol: this.createAssetProfileForm.controls['searchSymbol'].value.symbol - }); + this.mode === 'auto' + ? this.dialogRef.close({ + dataSource: + this.createAssetProfileForm.controls['searchSymbol'].value + .dataSource, + symbol: + this.createAssetProfileForm.controls['searchSymbol'].value.symbol + }) + : this.dialogRef.close({ + dataSource: 'MANUAL', + symbol: this.createAssetProfileForm.controls['addSymbol'].value + }); } public ngOnDestroy() {} + + private atLeastOneValid(control: AbstractControl): ValidationErrors { + const addSymbolControl = control.get('addSymbol'); + const searchSymbolControl = control.get('searchSymbol'); + + if (addSymbolControl.valid && searchSymbolControl.valid) { + return { atLeastOneValid: true }; + } + + if ( + addSymbolControl.valid || + !addSymbolControl || + searchSymbolControl.valid || + !searchSymbolControl + ) { + return { atLeastOneValid: false }; + } + + return { atLeastOneValid: true }; + } } diff --git a/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html b/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html index 43eadf93e..e7ed9352a 100644 --- a/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html +++ b/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -6,13 +6,35 @@ >

    Add Asset Profile

    - - Name, symbol or ISIN - - +
    + + + + + + + +
    + +
    + + Name, symbol or ISIN + + +
    +
    + + Symbol + + +
    @@ -20,7 +42,7 @@ color="primary" mat-flat-button type="submit" - [disabled]="!createAssetProfileForm.valid" + [disabled]="createAssetProfileForm.hasError('atLeastOneValid')" > Save diff --git a/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.module.ts b/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.module.ts index e99d8f788..2d50200c4 100644 --- a/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.module.ts +++ b/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.module.ts @@ -4,6 +4,8 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; import { MatDialogModule } from '@angular/material/dialog'; import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; +import { MatRadioModule } from '@angular/material/radio'; import { GfSymbolAutocompleteModule } from '@ghostfolio/ui/symbol-autocomplete'; import { CreateAssetProfileDialog } from './create-asset-profile-dialog.component'; @@ -17,6 +19,8 @@ import { CreateAssetProfileDialog } from './create-asset-profile-dialog.componen MatDialogModule, MatButtonModule, MatFormFieldModule, + MatInputModule, + MatRadioModule, ReactiveFormsModule ], schemas: [CUSTOM_ELEMENTS_SCHEMA] From 0375b938a20d5d4b6e6f7cd5167fd36eec327b58 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 17 Oct 2023 20:14:46 +0200 Subject: [PATCH 047/194] Add confirmation dialog (#2501) --- .../admin-market-data.component.ts | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/apps/client/src/app/components/admin-market-data/admin-market-data.component.ts b/apps/client/src/app/components/admin-market-data/admin-market-data.component.ts index 0ffa77bf0..bcf7679d0 100644 --- a/apps/client/src/app/components/admin-market-data/admin-market-data.component.ts +++ b/apps/client/src/app/components/admin-market-data/admin-market-data.component.ts @@ -178,10 +178,20 @@ export class AdminMarketDataComponent } public onDeleteProfileData({ dataSource, symbol }: UniqueAsset) { - this.adminService - .deleteProfileData({ dataSource, symbol }) - .pipe(takeUntil(this.unsubscribeSubject)) - .subscribe(() => {}); + const confirmation = confirm( + $localize`Do you really want to delete this asset profile?` + ); + + if (confirmation) { + this.adminService + .deleteProfileData({ dataSource, symbol }) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(() => { + setTimeout(() => { + window.location.reload(); + }, 300); + }); + } } public onGather7Days() { From 74278073b32d325e41c5bdea383a3c760bb5588b Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 17 Oct 2023 20:36:01 +0200 Subject: [PATCH 048/194] Bugfix/fix query to get asset profiles matching data source and symbol (#2504) * Match dataSource and symbol * Update changelog --- CHANGELOG.md | 1 + .../symbol-profile/symbol-profile.service.ts | 20 ++++++------------- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c3f4dd80..33f52cbcc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Displayed the transfer cash balance button based on a permission - Fixed the biometric authentication +- Fixed the query to get asset profiles that match both the `dataSource` and `symbol` values ## 2.11.0 - 2023-10-14 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 99244c352..b861ccf8f 100644 --- a/apps/api/src/services/symbol-profile/symbol-profile.service.ts +++ b/apps/api/src/services/symbol-profile/symbol-profile.service.ts @@ -52,20 +52,12 @@ export class SymbolProfileService { SymbolProfileOverrides: true }, where: { - AND: [ - { - dataSource: { - in: aUniqueAssets.map(({ dataSource }) => { - return dataSource; - }) - }, - symbol: { - in: aUniqueAssets.map(({ symbol }) => { - return symbol; - }) - } - } - ] + OR: aUniqueAssets.map(({ dataSource, symbol }) => { + return { + dataSource, + symbol + }; + }) } }) .then((symbolProfiles) => this.getSymbols(symbolProfiles)); From 653c9c62a89fa7cca0166edc469befe73178746e Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 17 Oct 2023 20:42:32 +0200 Subject: [PATCH 049/194] Sort imports (#2490) --- .../user-account-access/user-account-access.module.ts | 2 +- .../create-or-update-account-dialog.module.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/client/src/app/components/user-account-access/user-account-access.module.ts b/apps/client/src/app/components/user-account-access/user-account-access.module.ts index 0388dd244..fb3346ae0 100644 --- a/apps/client/src/app/components/user-account-access/user-account-access.module.ts +++ b/apps/client/src/app/components/user-account-access/user-account-access.module.ts @@ -1,5 +1,6 @@ import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; import { MatDialogModule } from '@angular/material/dialog'; import { RouterModule } from '@angular/router'; import { GfPortfolioAccessTableModule } from '@ghostfolio/client/components/access-table/access-table.module'; @@ -7,7 +8,6 @@ import { GfPremiumIndicatorModule } from '@ghostfolio/ui/premium-indicator'; import { GfCreateOrUpdateAccessDialogModule } from './create-or-update-access-dialog/create-or-update-access-dialog.module'; import { UserAccountAccessComponent } from './user-account-access.component'; -import { MatButtonModule } from '@angular/material/button'; @NgModule({ declarations: [UserAccountAccessComponent], diff --git a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.module.ts b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.module.ts index 0f8b8ecb8..22ec5e1f8 100644 --- a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.module.ts +++ b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.module.ts @@ -1,13 +1,13 @@ import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { MatAutocompleteModule } from '@angular/material/autocomplete'; import { MatButtonModule } from '@angular/material/button'; import { MatCheckboxModule } from '@angular/material/checkbox'; import { MatDialogModule } from '@angular/material/dialog'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatInputModule } from '@angular/material/input'; import { MatSelectModule } from '@angular/material/select'; -import { MatAutocompleteModule } from '@angular/material/autocomplete'; import { GfSymbolIconModule } from '@ghostfolio/client/components/symbol-icon/symbol-icon.module'; import { CreateOrUpdateAccountDialog } from './create-or-update-account-dialog.component'; From 84db54babdc2bd2a42ab620aaa91f5bb3eeb307a Mon Sep 17 00:00:00 2001 From: RaviTejaVattem <43704759+RaviTejaVattem@users.noreply.github.com> Date: Tue, 17 Oct 2023 19:49:54 +0100 Subject: [PATCH 050/194] Change checkboxes to slide toggles on user settings page (#2497) * Change checkboxes to slide toggles on user settings page * Update changelog --- CHANGELOG.md | 1 + .../user-account-settings.component.ts | 10 +++++----- .../user-account-settings.html | 20 +++++++++++-------- .../user-account-settings.module.ts | 4 ++-- apps/client/src/styles.scss | 9 +++++++++ 5 files changed, 29 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 33f52cbcc..72f8eca9a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Changed the checkboxes to slide toggles in the user settings of the user account page - Extended the `copy-assets` `Nx` target to copy the locales to the server’s assets - Upgraded `@simplewebauthn/browser` and `@simplewebauthn/server` from version `5.2.1` to `8.3` diff --git a/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts b/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts index 6fb8d5c15..3fb3592e0 100644 --- a/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts +++ b/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -5,7 +5,7 @@ import { OnDestroy, OnInit } from '@angular/core'; -import { MatCheckboxChange } from '@angular/material/checkbox'; +import { MatSlideToggleChange } from '@angular/material/slide-toggle'; import { DataService } from '@ghostfolio/client/services/data.service'; import { STAY_SIGNED_IN, @@ -117,7 +117,7 @@ export class UserAccountSettingsComponent implements OnDestroy, OnInit { }); } - public onExperimentalFeaturesChange(aEvent: MatCheckboxChange) { + public onExperimentalFeaturesChange(aEvent: MatSlideToggleChange) { this.dataService .putUserSetting({ isExperimentalFeatures: aEvent.checked }) .pipe(takeUntil(this.unsubscribeSubject)) @@ -155,7 +155,7 @@ export class UserAccountSettingsComponent implements OnDestroy, OnInit { }); } - public onRestrictedViewChange(aEvent: MatCheckboxChange) { + public onRestrictedViewChange(aEvent: MatSlideToggleChange) { this.dataService .putUserSetting({ isRestrictedView: aEvent.checked }) .pipe(takeUntil(this.unsubscribeSubject)) @@ -173,7 +173,7 @@ export class UserAccountSettingsComponent implements OnDestroy, OnInit { }); } - public onSignInWithFingerprintChange(aEvent: MatCheckboxChange) { + public onSignInWithFingerprintChange(aEvent: MatSlideToggleChange) { if (aEvent.checked) { this.registerDevice(); } else { @@ -189,7 +189,7 @@ export class UserAccountSettingsComponent implements OnDestroy, OnInit { } } - public onViewModeChange(aEvent: MatCheckboxChange) { + public onViewModeChange(aEvent: MatSlideToggleChange) { this.dataService .putUserSetting({ viewMode: aEvent.checked === true ? 'ZEN' : 'DEFAULT' }) .pipe(takeUntil(this.unsubscribeSubject)) diff --git a/apps/client/src/app/components/user-account-settings/user-account-settings.html b/apps/client/src/app/components/user-account-settings/user-account-settings.html index 66829d55e..87762d449 100644 --- a/apps/client/src/app/components/user-account-settings/user-account-settings.html +++ b/apps/client/src/app/components/user-account-settings/user-account-settings.html @@ -11,12 +11,13 @@
    - + >
    @@ -139,12 +140,13 @@
    - + >
    @@ -153,12 +155,13 @@
    Sign in with fingerprint
    - + >
    - + >
    diff --git a/apps/client/src/app/components/user-account-settings/user-account-settings.module.ts b/apps/client/src/app/components/user-account-settings/user-account-settings.module.ts index 24e57ff20..7a40cf641 100644 --- a/apps/client/src/app/components/user-account-settings/user-account-settings.module.ts +++ b/apps/client/src/app/components/user-account-settings/user-account-settings.module.ts @@ -3,9 +3,9 @@ import { NgModule } from '@angular/core'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; import { MatCardModule } from '@angular/material/card'; -import { MatCheckboxModule } from '@angular/material/checkbox'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatSelectModule } from '@angular/material/select'; +import { MatSlideToggleModule } from '@angular/material/slide-toggle'; import { RouterModule } from '@angular/router'; import { GfValueModule } from '@ghostfolio/ui/value'; @@ -20,9 +20,9 @@ import { UserAccountSettingsComponent } from './user-account-settings.component' GfValueModule, MatButtonModule, MatCardModule, - MatCheckboxModule, MatFormFieldModule, MatSelectModule, + MatSlideToggleModule, ReactiveFormsModule, RouterModule ] diff --git a/apps/client/src/styles.scss b/apps/client/src/styles.scss index 36099a249..175194cac 100644 --- a/apps/client/src/styles.scss +++ b/apps/client/src/styles.scss @@ -462,6 +462,15 @@ ngx-skeleton-loader { } } +/** + * Fix for https://github.com/angular/components/issues/26818 + */ +.mat-mdc-slide-toggle { + .mdc-switch__track { + background-color: rgba(var(--palette-primary-500), 1); + } +} + .mat-stepper-vertical, .mat-stepper-horizontal { background: transparent !important; From ea65dc5034eeb88605824646e0045506fde45288 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 17 Oct 2023 20:52:02 +0200 Subject: [PATCH 051/194] Release 2.12.0 (#2505) --- CHANGELOG.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 72f8eca9a..e8b280ac2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ 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.12.0 - 2023-10-17 ### Added diff --git a/package.json b/package.json index 5bc51418d..3b5247252 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.11.0", + "version": "2.12.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From 016634a77ff6e7b45c026aa79ce6482c0c390dad Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 18 Oct 2023 17:35:07 +0200 Subject: [PATCH 052/194] Feature/setup i18n page (#2508) * Setup i18n page * Add meta description --- apps/client/src/app/app-routing.module.ts | 5 + .../pages/i18n/i18n-page-routing.module.ts | 19 ++ .../src/app/pages/i18n/i18n-page.component.ts | 21 ++ apps/client/src/app/pages/i18n/i18n-page.html | 10 + .../src/app/pages/i18n/i18n-page.module.ts | 12 + apps/client/src/app/pages/i18n/i18n-page.scss | 3 + apps/client/src/locales/messages.de.xlf | 258 ++++++++++------- apps/client/src/locales/messages.es.xlf | 260 +++++++++++------- apps/client/src/locales/messages.fr.xlf | 260 +++++++++++------- apps/client/src/locales/messages.it.xlf | 260 +++++++++++------- apps/client/src/locales/messages.nl.xlf | 260 +++++++++++------- apps/client/src/locales/messages.pt.xlf | 260 +++++++++++------- apps/client/src/locales/messages.tr.xlf | 260 +++++++++++------- apps/client/src/locales/messages.xlf | 249 ++++++++++------- 14 files changed, 1325 insertions(+), 812 deletions(-) create mode 100644 apps/client/src/app/pages/i18n/i18n-page-routing.module.ts create mode 100644 apps/client/src/app/pages/i18n/i18n-page.component.ts create mode 100644 apps/client/src/app/pages/i18n/i18n-page.html create mode 100644 apps/client/src/app/pages/i18n/i18n-page.module.ts create mode 100644 apps/client/src/app/pages/i18n/i18n-page.scss diff --git a/apps/client/src/app/app-routing.module.ts b/apps/client/src/app/app-routing.module.ts index f82bad864..26080e884 100644 --- a/apps/client/src/app/app-routing.module.ts +++ b/apps/client/src/app/app-routing.module.ts @@ -73,6 +73,11 @@ const routes: Routes = [ loadChildren: () => import('./pages/home/home-page.module').then((m) => m.HomePageModule) }, + { + path: 'i18n', + loadChildren: () => + import('./pages/i18n/i18n-page.module').then((m) => m.I18nPageModule) + }, { path: paths.markets, loadChildren: () => diff --git a/apps/client/src/app/pages/i18n/i18n-page-routing.module.ts b/apps/client/src/app/pages/i18n/i18n-page-routing.module.ts new file mode 100644 index 000000000..9965121ca --- /dev/null +++ b/apps/client/src/app/pages/i18n/i18n-page-routing.module.ts @@ -0,0 +1,19 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; + +import { I18nPageComponent } from './i18n-page.component'; + +const routes: Routes = [ + { + canActivate: [AuthGuard], + component: I18nPageComponent, + path: '' + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class I18nPageRoutingModule {} diff --git a/apps/client/src/app/pages/i18n/i18n-page.component.ts b/apps/client/src/app/pages/i18n/i18n-page.component.ts new file mode 100644 index 000000000..46837fa57 --- /dev/null +++ b/apps/client/src/app/pages/i18n/i18n-page.component.ts @@ -0,0 +1,21 @@ +import { Component, OnInit } from '@angular/core'; +import { Subject } from 'rxjs'; + +@Component({ + host: { class: 'page' }, + selector: 'gf-i18n-page', + styleUrls: ['./i18n-page.scss'], + templateUrl: './i18n-page.html' +}) +export class I18nPageComponent implements OnInit { + private unsubscribeSubject = new Subject(); + + public constructor() {} + + public ngOnInit() {} + + public ngOnDestroy() { + this.unsubscribeSubject.next(); + this.unsubscribeSubject.complete(); + } +} diff --git a/apps/client/src/app/pages/i18n/i18n-page.html b/apps/client/src/app/pages/i18n/i18n-page.html new file mode 100644 index 000000000..1ace8e297 --- /dev/null +++ b/apps/client/src/app/pages/i18n/i18n-page.html @@ -0,0 +1,10 @@ +
    +
    +
      +
    • + Ghostfolio is a personal finance dashboard to keep track of your assets + like stocks, ETFs or cryptocurrencies across multiple platforms. +
    • +
    +
    +
    diff --git a/apps/client/src/app/pages/i18n/i18n-page.module.ts b/apps/client/src/app/pages/i18n/i18n-page.module.ts new file mode 100644 index 000000000..5b5580ebf --- /dev/null +++ b/apps/client/src/app/pages/i18n/i18n-page.module.ts @@ -0,0 +1,12 @@ +import { CommonModule } from '@angular/common'; +import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; + +import { I18nPageRoutingModule } from './i18n-page-routing.module'; +import { I18nPageComponent } from './i18n-page.component'; + +@NgModule({ + declarations: [I18nPageComponent], + imports: [CommonModule, I18nPageRoutingModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA] +}) +export class I18nPageModule {} diff --git a/apps/client/src/app/pages/i18n/i18n-page.scss b/apps/client/src/app/pages/i18n/i18n-page.scss new file mode 100644 index 000000000..5d4e87f30 --- /dev/null +++ b/apps/client/src/app/pages/i18n/i18n-page.scss @@ -0,0 +1,3 @@ +:host { + display: block; +} diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index e4e1223ea..21c260c5d 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -30,7 +30,7 @@ Empfänger apps/client/src/app/components/access-table/access-table.component.html - 22 + 10 @@ -38,7 +38,7 @@ Typ apps/client/src/app/components/access-table/access-table.component.html - 29 + 17 apps/client/src/app/components/admin-jobs/admin-jobs.html @@ -62,7 +62,7 @@ Details apps/client/src/app/components/access-table/access-table.component.html - 39 + 27 @@ -70,7 +70,7 @@ Widerrufen apps/client/src/app/components/access-table/access-table.component.html - 66 + 54 @@ -78,7 +78,7 @@ Möchtest du diese Zugangsberechtigung wirklich widerrufen? apps/client/src/app/components/access-table/access-table.component.ts - 50 + 49 @@ -98,7 +98,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 81 + 111 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -282,7 +282,7 @@ Jobs löschen apps/client/src/app/components/admin-jobs/admin-jobs.html - 140 + 135 @@ -290,7 +290,7 @@ Symbol apps/client/src/app/components/admin-jobs/admin-jobs.html - 50 + 45 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -298,7 +298,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 57 + 87 + + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 34 @@ -306,7 +310,7 @@ Datenquelle apps/client/src/app/components/admin-jobs/admin-jobs.html - 59 + 54 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -322,7 +326,7 @@ Versuche apps/client/src/app/components/admin-jobs/admin-jobs.html - 68 + 63 @@ -330,7 +334,7 @@ Erstellt apps/client/src/app/components/admin-jobs/admin-jobs.html - 77 + 72 @@ -338,7 +342,7 @@ Abgeschlossen apps/client/src/app/components/admin-jobs/admin-jobs.html - 86 + 81 @@ -346,23 +350,23 @@ Status apps/client/src/app/components/admin-jobs/admin-jobs.html - 95 + 90 - - Asset Profile - Anlageprofil + + Asset Profiles + Anlageprofile - apps/client/src/app/components/admin-jobs/admin-jobs.html - 37 + libs/ui/src/lib/assistant/assistant.html + 67 - - Historical Market Data + + Historical Market Data Historische Marktdaten apps/client/src/app/components/admin-jobs/admin-jobs.html - 42 + 37,39 @@ -370,7 +374,7 @@ Daten anzeigen apps/client/src/app/components/admin-jobs/admin-jobs.html - 155 + 150 @@ -378,7 +382,7 @@ Stacktrace anzeigen apps/client/src/app/components/admin-jobs/admin-jobs.html - 162 + 157 @@ -386,7 +390,7 @@ Job löschen apps/client/src/app/components/admin-jobs/admin-jobs.html - 165 + 160 @@ -434,11 +438,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 195 + 225 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 18 + 40 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -454,7 +458,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 95 + 97 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -478,11 +482,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 202 + 232 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 25 + 47 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -498,7 +502,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 102 + 104 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -514,7 +518,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 72 + 102 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -536,6 +540,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 78 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 58 + Please add a currency: @@ -710,7 +718,7 @@ apps/client/src/app/components/header/header.component.html - 189 + 192 @@ -754,7 +762,7 @@ apps/client/src/app/components/header/header.component.html - 203 + 206 @@ -766,7 +774,7 @@ apps/client/src/app/components/header/header.component.html - 213 + 216 @@ -786,7 +794,7 @@ apps/client/src/app/components/header/header.component.html - 221 + 224 apps/client/src/app/pages/accounts/accounts-page.html @@ -802,7 +810,7 @@ apps/client/src/app/components/header/header.component.html - 237 + 240 @@ -818,7 +826,7 @@ apps/client/src/app/components/header/header.component.html - 248 + 251 apps/client/src/app/pages/resources/resources-page.html @@ -838,11 +846,11 @@ apps/client/src/app/components/header/header.component.html - 260 + 263 apps/client/src/app/components/header/header.component.html - 329 + 332 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -974,7 +982,7 @@ apps/client/src/app/components/header/header.component.html - 316 + 319 @@ -982,7 +990,7 @@ Ich apps/client/src/app/components/header/header.component.html - 170 + 173 @@ -990,7 +998,7 @@ Mein Ghostfolio apps/client/src/app/components/header/header.component.html - 228 + 231 @@ -998,7 +1006,7 @@ Über Ghostfolio apps/client/src/app/components/header/header.component.html - 268 + 271 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1014,7 +1022,7 @@ apps/client/src/app/components/header/header.component.html - 303 + 306 apps/client/src/app/pages/features/features-page.html @@ -1030,7 +1038,7 @@ apps/client/src/app/components/header/header.component.html - 345 + 348 apps/client/src/app/components/home-market/home-market.html @@ -1166,7 +1174,7 @@ Einloggen apps/client/src/app/components/header/header.component.html - 358 + 361 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1356,7 +1364,7 @@ Sektoren apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + 155 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1372,7 +1380,7 @@ Länder apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 135 + 165 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1700,7 +1708,7 @@ Möchtest du diese Anmeldemethode wirklich löschen? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 184 + 181 @@ -1772,7 +1780,7 @@ Basiswährung apps/client/src/app/components/user-account-settings/user-account-settings.html - 26 + 27 @@ -1780,7 +1788,7 @@ Lokalität apps/client/src/app/components/user-account-settings/user-account-settings.html - 90 + 91 @@ -1788,7 +1796,7 @@ Datums- und Zahlenformat apps/client/src/app/components/user-account-settings/user-account-settings.html - 92 + 93 @@ -1796,7 +1804,7 @@ Zen Modus apps/client/src/app/components/user-account-settings/user-account-settings.html - 136 + 137 apps/client/src/app/pages/features/features-page.html @@ -1808,7 +1816,7 @@ Einloggen mit Fingerabdruck apps/client/src/app/components/user-account-settings/user-account-settings.html - 153 + 155 @@ -1816,7 +1824,7 @@ Benutzer ID apps/client/src/app/components/user-account-settings/user-account-settings.html - 184 + 188 @@ -1884,7 +1892,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 62 + 92 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1928,7 +1936,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 44 + 46 @@ -1936,7 +1944,7 @@ Konto ID apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 89 + 91 @@ -2252,7 +2260,7 @@ Name, Symbol oder ISIN apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 10 + 25 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2312,11 +2320,11 @@ Kommentar apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 182 + 212 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 72 + 74 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2332,7 +2340,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 86 + 116 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2572,7 +2580,7 @@ Änderung vom Allzeithoch libs/ui/src/lib/benchmark/benchmark.component.html - 12 + 31 @@ -2580,7 +2588,7 @@ vom AZH libs/ui/src/lib/benchmark/benchmark.component.html - 14 + 33 @@ -2604,7 +2612,7 @@ Sprache apps/client/src/app/components/user-account-settings/user-account-settings.html - 47 + 48 @@ -2612,7 +2620,7 @@ Registrieren apps/client/src/app/components/header/header.component.html - 370 + 373 @@ -2700,7 +2708,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 95 + 125 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2716,7 +2724,7 @@ Sektor apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 110 + 140 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2728,7 +2736,7 @@ Land apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 119 + 149 apps/client/src/app/components/admin-users/admin-users.html @@ -2872,7 +2880,7 @@ Filtern nach... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 269 + 279 @@ -2904,7 +2912,7 @@ Alias apps/client/src/app/components/access-table/access-table.component.html - 15 + 3 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -2924,7 +2932,7 @@ Experimentelle Funktionen apps/client/src/app/components/user-account-settings/user-account-settings.html - 169 + 172 @@ -2964,7 +2972,7 @@ Automatisch apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 35 + 31 @@ -2972,7 +2980,7 @@ Aussehen apps/client/src/app/components/user-account-settings/user-account-settings.html - 113 + 114 @@ -2980,7 +2988,7 @@ Automatisch apps/client/src/app/components/user-account-settings/user-account-settings.html - 125 + 126 @@ -2988,7 +2996,7 @@ Hell apps/client/src/app/components/user-account-settings/user-account-settings.html - 126 + 127 @@ -2996,7 +3004,7 @@ Dunkel apps/client/src/app/components/user-account-settings/user-account-settings.html - 127 + 128 @@ -3260,27 +3268,27 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 61 + 62 apps/client/src/app/components/user-account-settings/user-account-settings.html - 65 + 66 apps/client/src/app/components/user-account-settings/user-account-settings.html - 69 + 70 apps/client/src/app/components/user-account-settings/user-account-settings.html - 73 + 74 apps/client/src/app/components/user-account-settings/user-account-settings.html - 77 + 78 apps/client/src/app/components/user-account-settings/user-account-settings.html - 81 + 82 apps/client/src/app/pages/features/features-page.html @@ -3308,7 +3316,7 @@ Symbol Zuordnung apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 160 + 190 @@ -3358,6 +3366,10 @@ Import Importieren + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 80 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 150 @@ -3516,7 +3528,7 @@ Unbeschwertes Erlebnis für turbulente Zeiten apps/client/src/app/components/user-account-settings/user-account-settings.html - 137,139 + 138,140 @@ -3524,7 +3536,7 @@ Vorschau auf kommende Funktionalität apps/client/src/app/components/user-account-settings/user-account-settings.html - 170,172 + 173,175 @@ -4372,7 +4384,7 @@ Scraper Konfiguration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 171 + 201 @@ -7672,7 +7684,7 @@ Biometrische Authentifizierung apps/client/src/app/components/user-account-settings/user-account-settings.html - 152 + 154 @@ -7756,7 +7768,7 @@ Daten exportieren apps/client/src/app/components/user-account-settings/user-account-settings.html - 191 + 195 @@ -10159,14 +10171,6 @@ 7 - - Add Access - Zugang hinzufügen - - apps/client/src/app/components/access-table/access-table.component.html - 8,10 - - Choose or drop a file here Wählen Sie eine Datei aus oder ziehen Sie sie hierhin @@ -10316,7 +10320,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 154 + 184 @@ -10396,7 +10400,7 @@ Finde Position... libs/ui/src/lib/assistant/assistant.component.ts - 87 + 89 @@ -10404,7 +10408,59 @@ Keine Einträge vorhanden... libs/ui/src/lib/assistant/assistant.html - 62 + 63 + + + libs/ui/src/lib/assistant/assistant.html + 84 + + + + Asset Profile + Anlageprofil + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31,33 + + + + Do you really want to delete this asset profile? + Möchtest du dieses Anlageprofil wirklich löschen? + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 182 + + + + Search + Suche + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + + Add Manually + Manuell hinzufügen + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + + Ghostfolio is a personal finance dashboard to keep track of your assets like stocks, ETFs or cryptocurrencies across multiple platforms. + Mit dem Finanz-Dashboard Ghostfolio können Sie Ihr Vermögen in Form von Aktien, ETFs oder Kryptowährungen verteilt über mehrere Finanzinstitute überwachen. + + apps/client/src/app/pages/i18n/i18n-page.html + 4,7 + + + + Last All Time High + Letztes Allzeithoch + + libs/ui/src/lib/benchmark/benchmark.component.html + 15 diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index f9c69808f..935b6605d 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -31,7 +31,7 @@ Beneficiario apps/client/src/app/components/access-table/access-table.component.html - 22 + 10 @@ -39,7 +39,7 @@ Tipo apps/client/src/app/components/access-table/access-table.component.html - 29 + 17 apps/client/src/app/components/admin-jobs/admin-jobs.html @@ -63,7 +63,7 @@ Detalles apps/client/src/app/components/access-table/access-table.component.html - 39 + 27 @@ -71,7 +71,7 @@ Revoca apps/client/src/app/components/access-table/access-table.component.html - 66 + 54 @@ -79,7 +79,7 @@ ¿Quieres revocar el acceso concedido? apps/client/src/app/components/access-table/access-table.component.ts - 50 + 49 @@ -99,7 +99,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 81 + 111 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -283,7 +283,7 @@ Elimina los trabajos apps/client/src/app/components/admin-jobs/admin-jobs.html - 140 + 135 @@ -291,7 +291,7 @@ Símbolo apps/client/src/app/components/admin-jobs/admin-jobs.html - 50 + 45 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -299,7 +299,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 57 + 87 + + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 34 @@ -307,7 +311,7 @@ Fuente de datos apps/client/src/app/components/admin-jobs/admin-jobs.html - 59 + 54 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -323,7 +327,7 @@ Intentos apps/client/src/app/components/admin-jobs/admin-jobs.html - 68 + 63 @@ -331,7 +335,7 @@ Creado apps/client/src/app/components/admin-jobs/admin-jobs.html - 77 + 72 @@ -339,7 +343,7 @@ Finalizado apps/client/src/app/components/admin-jobs/admin-jobs.html - 86 + 81 @@ -347,23 +351,23 @@ Estado apps/client/src/app/components/admin-jobs/admin-jobs.html - 95 + 90 - - Asset Profile - Perfil del activo + + Asset Profiles + Perfil del activo - apps/client/src/app/components/admin-jobs/admin-jobs.html - 37 + libs/ui/src/lib/assistant/assistant.html + 67 - - Historical Market Data - Datos históricos del mercado + + Historical Market Data + Datos históricos del mercado apps/client/src/app/components/admin-jobs/admin-jobs.html - 42 + 37,39 @@ -371,7 +375,7 @@ Visualiza los datos apps/client/src/app/components/admin-jobs/admin-jobs.html - 155 + 150 @@ -379,7 +383,7 @@ Visualiza Stacktrace apps/client/src/app/components/admin-jobs/admin-jobs.html - 162 + 157 @@ -387,7 +391,7 @@ Elimina el trabajo apps/client/src/app/components/admin-jobs/admin-jobs.html - 165 + 160 @@ -435,11 +439,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 195 + 225 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 18 + 40 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -455,7 +459,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 95 + 97 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -479,11 +483,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 202 + 232 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 25 + 47 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -499,7 +503,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 102 + 104 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -515,7 +519,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 72 + 102 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -537,6 +541,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 78 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 58 + Please add a currency: @@ -711,7 +719,7 @@ apps/client/src/app/components/header/header.component.html - 189 + 192 @@ -755,7 +763,7 @@ apps/client/src/app/components/header/header.component.html - 203 + 206 @@ -767,7 +775,7 @@ apps/client/src/app/components/header/header.component.html - 213 + 216 @@ -787,7 +795,7 @@ apps/client/src/app/components/header/header.component.html - 221 + 224 apps/client/src/app/pages/accounts/accounts-page.html @@ -803,7 +811,7 @@ apps/client/src/app/components/header/header.component.html - 237 + 240 @@ -819,7 +827,7 @@ apps/client/src/app/components/header/header.component.html - 248 + 251 apps/client/src/app/pages/resources/resources-page.html @@ -839,11 +847,11 @@ apps/client/src/app/components/header/header.component.html - 260 + 263 apps/client/src/app/components/header/header.component.html - 329 + 332 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -975,7 +983,7 @@ apps/client/src/app/components/header/header.component.html - 316 + 319 @@ -983,7 +991,7 @@ apps/client/src/app/components/header/header.component.html - 170 + 173 @@ -991,7 +999,7 @@ Mi Ghostfolio apps/client/src/app/components/header/header.component.html - 228 + 231 @@ -999,7 +1007,7 @@ Sobre Ghostfolio apps/client/src/app/components/header/header.component.html - 268 + 271 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1015,7 +1023,7 @@ apps/client/src/app/components/header/header.component.html - 303 + 306 apps/client/src/app/pages/features/features-page.html @@ -1031,7 +1039,7 @@ apps/client/src/app/components/header/header.component.html - 345 + 348 apps/client/src/app/components/home-market/home-market.html @@ -1167,7 +1175,7 @@ Iniciar sesión apps/client/src/app/components/header/header.component.html - 358 + 361 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1354,7 +1362,7 @@ Sectores apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + 155 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1370,7 +1378,7 @@ Países apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 135 + 165 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1698,7 +1706,7 @@ ¿Estás seguro de eliminar este método de acceso? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 184 + 181 @@ -1770,7 +1778,7 @@ Divisa base apps/client/src/app/components/user-account-settings/user-account-settings.html - 26 + 27 @@ -1778,7 +1786,7 @@ Ubicación apps/client/src/app/components/user-account-settings/user-account-settings.html - 90 + 91 @@ -1786,7 +1794,7 @@ Formato de fecha y número apps/client/src/app/components/user-account-settings/user-account-settings.html - 92 + 93 @@ -1794,7 +1802,7 @@ Modo Zen apps/client/src/app/components/user-account-settings/user-account-settings.html - 136 + 137 apps/client/src/app/pages/features/features-page.html @@ -1806,7 +1814,7 @@ Accede con huella digital apps/client/src/app/components/user-account-settings/user-account-settings.html - 153 + 155 @@ -1814,7 +1822,7 @@ ID usuario apps/client/src/app/components/user-account-settings/user-account-settings.html - 184 + 188 @@ -1882,7 +1890,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 62 + 92 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1926,7 +1934,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 44 + 46 @@ -1934,7 +1942,7 @@ ID cuenta apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 89 + 91 @@ -2250,7 +2258,7 @@ Nombre, símbolo o ISIN apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 10 + 25 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2310,11 +2318,11 @@ Nota apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 182 + 212 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 72 + 74 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2330,7 +2338,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 86 + 116 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2570,7 +2578,7 @@ Variación respecto al máximo histórico (ATH) libs/ui/src/lib/benchmark/benchmark.component.html - 12 + 31 @@ -2578,7 +2586,7 @@ desde el máximo histórico (ATH) libs/ui/src/lib/benchmark/benchmark.component.html - 14 + 33 @@ -2602,7 +2610,7 @@ Idioma apps/client/src/app/components/user-account-settings/user-account-settings.html - 47 + 48 @@ -2610,7 +2618,7 @@ Comenzar apps/client/src/app/components/header/header.component.html - 370 + 373 @@ -2678,7 +2686,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 95 + 125 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2734,7 +2742,7 @@ Sector apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 110 + 140 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2746,7 +2754,7 @@ País apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 119 + 149 apps/client/src/app/components/admin-users/admin-users.html @@ -2886,7 +2894,7 @@ Filtrar por... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 269 + 279 @@ -2910,7 +2918,7 @@ Alias apps/client/src/app/components/access-table/access-table.component.html - 15 + 3 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -2922,7 +2930,7 @@ Funcionalidades experimentales apps/client/src/app/components/user-account-settings/user-account-settings.html - 169 + 172 @@ -2962,7 +2970,7 @@ Automático apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 35 + 31 @@ -2970,7 +2978,7 @@ Apariencia apps/client/src/app/components/user-account-settings/user-account-settings.html - 113 + 114 @@ -2978,7 +2986,7 @@ Automático apps/client/src/app/components/user-account-settings/user-account-settings.html - 125 + 126 @@ -2986,7 +2994,7 @@ Claro apps/client/src/app/components/user-account-settings/user-account-settings.html - 126 + 127 @@ -2994,7 +3002,7 @@ Oscuro apps/client/src/app/components/user-account-settings/user-account-settings.html - 127 + 128 @@ -3258,27 +3266,27 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 61 + 62 apps/client/src/app/components/user-account-settings/user-account-settings.html - 65 + 66 apps/client/src/app/components/user-account-settings/user-account-settings.html - 69 + 70 apps/client/src/app/components/user-account-settings/user-account-settings.html - 73 + 74 apps/client/src/app/components/user-account-settings/user-account-settings.html - 77 + 78 apps/client/src/app/components/user-account-settings/user-account-settings.html - 81 + 82 apps/client/src/app/pages/features/features-page.html @@ -3306,7 +3314,7 @@ Mapeo de símbolos apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 160 + 190 @@ -3356,6 +3364,10 @@ Import Import + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 80 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 150 @@ -3514,7 +3526,7 @@ Distraction-free experience for turbulent times apps/client/src/app/components/user-account-settings/user-account-settings.html - 137,139 + 138,140 @@ -3522,7 +3534,7 @@ Sneak peek at upcoming functionality apps/client/src/app/components/user-account-settings/user-account-settings.html - 170,172 + 173,175 @@ -4370,7 +4382,7 @@ Scraper Configuration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 171 + 201 @@ -7670,7 +7682,7 @@ Biometric Authentication apps/client/src/app/components/user-account-settings/user-account-settings.html - 152 + 154 @@ -7754,7 +7766,7 @@ Export Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 191 + 195 @@ -10157,14 +10169,6 @@ 7 - - Add Access - Add Access - - apps/client/src/app/components/access-table/access-table.component.html - 8,10 - - Choose or drop a file here Choose or drop a file here @@ -10314,7 +10318,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 154 + 184 @@ -10394,7 +10398,7 @@ Find holding... libs/ui/src/lib/assistant/assistant.component.ts - 87 + 89 @@ -10402,7 +10406,59 @@ No entries... libs/ui/src/lib/assistant/assistant.html - 62 + 63 + + + libs/ui/src/lib/assistant/assistant.html + 84 + + + + Asset Profile + Asset Profile + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31,33 + + + + Do you really want to delete this asset profile? + Do you really want to delete this asset profile? + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 182 + + + + Search + Search + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + + Add Manually + Add Manually + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + + Ghostfolio is a personal finance dashboard to keep track of your assets like stocks, ETFs or cryptocurrencies across multiple platforms. + Ghostfolio es un dashboard de finanzas personales para hacer un seguimiento de tus activos como acciones, ETFs o criptodivisas a través de múltiples plataformas. + + apps/client/src/app/pages/i18n/i18n-page.html + 4,7 + + + + Last All Time High + Last All Time High + + libs/ui/src/lib/benchmark/benchmark.component.html + 15 diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 68994b48e..be8a8b10b 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -14,7 +14,7 @@ Alias apps/client/src/app/components/access-table/access-table.component.html - 15 + 3 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -26,7 +26,7 @@ Bénéficiaire apps/client/src/app/components/access-table/access-table.component.html - 22 + 10 @@ -34,7 +34,7 @@ Type apps/client/src/app/components/access-table/access-table.component.html - 29 + 17 apps/client/src/app/components/admin-jobs/admin-jobs.html @@ -58,7 +58,7 @@ Détails apps/client/src/app/components/access-table/access-table.component.html - 39 + 27 @@ -66,7 +66,7 @@ Révoquer apps/client/src/app/components/access-table/access-table.component.html - 66 + 54 @@ -74,7 +74,7 @@ Voulez-vous vraiment révoquer cet accès ? apps/client/src/app/components/access-table/access-table.component.ts - 50 + 49 @@ -90,7 +90,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 44 + 46 @@ -110,7 +110,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 81 + 111 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -190,7 +190,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 62 + 92 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -334,7 +334,7 @@ Symbole apps/client/src/app/components/admin-jobs/admin-jobs.html - 50 + 45 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -342,7 +342,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 57 + 87 + + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 34 @@ -350,7 +354,7 @@ Source Données apps/client/src/app/components/admin-jobs/admin-jobs.html - 59 + 54 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -366,7 +370,7 @@ Tentatives apps/client/src/app/components/admin-jobs/admin-jobs.html - 68 + 63 @@ -374,7 +378,7 @@ Créé apps/client/src/app/components/admin-jobs/admin-jobs.html - 77 + 72 @@ -382,7 +386,7 @@ Terminé apps/client/src/app/components/admin-jobs/admin-jobs.html - 86 + 81 @@ -390,7 +394,7 @@ Statut apps/client/src/app/components/admin-jobs/admin-jobs.html - 95 + 90 @@ -398,23 +402,23 @@ Supprimer Tâches apps/client/src/app/components/admin-jobs/admin-jobs.html - 140 + 135 - - Asset Profile - Profil d'Actifs + + Asset Profiles + Profil d'Actifs - apps/client/src/app/components/admin-jobs/admin-jobs.html - 37 + libs/ui/src/lib/assistant/assistant.html + 67 - - Historical Market Data - Données de Marché Historiques + + Historical Market Data + Données de Marché Historiques apps/client/src/app/components/admin-jobs/admin-jobs.html - 42 + 37,39 @@ -422,7 +426,7 @@ Voir Données apps/client/src/app/components/admin-jobs/admin-jobs.html - 155 + 150 @@ -430,7 +434,7 @@ Voir la Stacktrace apps/client/src/app/components/admin-jobs/admin-jobs.html - 162 + 157 @@ -438,7 +442,7 @@ Supprimer Tâche apps/client/src/app/components/admin-jobs/admin-jobs.html - 165 + 160 @@ -486,11 +490,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 195 + 225 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 18 + 40 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -506,7 +510,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 95 + 97 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -530,11 +534,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 202 + 232 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 25 + 47 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -550,7 +554,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 102 + 104 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -562,7 +566,7 @@ Filtrer par... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 269 + 279 @@ -574,7 +578,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 86 + 116 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -594,7 +598,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 95 + 125 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -614,7 +618,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 72 + 102 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -636,6 +640,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 78 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 58 + Sectors Count @@ -694,7 +702,7 @@ Secteur apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 110 + 140 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -706,7 +714,7 @@ Pays apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 119 + 149 apps/client/src/app/components/admin-users/admin-users.html @@ -722,7 +730,7 @@ Secteurs apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + 155 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -738,7 +746,7 @@ Pays apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 135 + 165 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -750,7 +758,7 @@ Équivalence de Symboles apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 160 + 190 @@ -758,11 +766,11 @@ Note apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 182 + 212 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 72 + 74 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -946,7 +954,7 @@ apps/client/src/app/components/header/header.component.html - 189 + 192 @@ -974,7 +982,7 @@ apps/client/src/app/components/header/header.component.html - 221 + 224 apps/client/src/app/pages/accounts/accounts-page.html @@ -1058,7 +1066,7 @@ apps/client/src/app/components/header/header.component.html - 203 + 206 @@ -1070,7 +1078,7 @@ apps/client/src/app/components/header/header.component.html - 213 + 216 @@ -1082,7 +1090,7 @@ apps/client/src/app/components/header/header.component.html - 237 + 240 @@ -1098,7 +1106,7 @@ apps/client/src/app/components/header/header.component.html - 248 + 251 apps/client/src/app/pages/resources/resources-page.html @@ -1118,11 +1126,11 @@ apps/client/src/app/components/header/header.component.html - 260 + 263 apps/client/src/app/components/header/header.component.html - 329 + 332 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -1254,7 +1262,7 @@ apps/client/src/app/components/header/header.component.html - 316 + 319 @@ -1262,7 +1270,7 @@ Moi apps/client/src/app/components/header/header.component.html - 170 + 173 @@ -1270,7 +1278,7 @@ Mon Ghostfolio apps/client/src/app/components/header/header.component.html - 228 + 231 @@ -1278,7 +1286,7 @@ À propos de Ghostfolio apps/client/src/app/components/header/header.component.html - 268 + 271 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1294,7 +1302,7 @@ apps/client/src/app/components/header/header.component.html - 303 + 306 apps/client/src/app/pages/features/features-page.html @@ -1310,7 +1318,7 @@ apps/client/src/app/components/header/header.component.html - 345 + 348 apps/client/src/app/components/home-market/home-market.html @@ -1326,7 +1334,7 @@ Se connecter apps/client/src/app/components/header/header.component.html - 358 + 361 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1338,7 +1346,7 @@ Démarrer apps/client/src/app/components/header/header.component.html - 370 + 373 @@ -1925,7 +1933,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 35 + 31 @@ -1965,7 +1973,7 @@ Voulez-vous vraiment supprimer cette méthode de connexion ? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 184 + 181 @@ -2037,7 +2045,7 @@ Devise de Base apps/client/src/app/components/user-account-settings/user-account-settings.html - 26 + 27 @@ -2045,7 +2053,7 @@ Langue apps/client/src/app/components/user-account-settings/user-account-settings.html - 47 + 48 @@ -2057,27 +2065,27 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 61 + 62 apps/client/src/app/components/user-account-settings/user-account-settings.html - 65 + 66 apps/client/src/app/components/user-account-settings/user-account-settings.html - 69 + 70 apps/client/src/app/components/user-account-settings/user-account-settings.html - 73 + 74 apps/client/src/app/components/user-account-settings/user-account-settings.html - 77 + 78 apps/client/src/app/components/user-account-settings/user-account-settings.html - 81 + 82 apps/client/src/app/pages/features/features-page.html @@ -2089,7 +2097,7 @@ Paramètres régionaux apps/client/src/app/components/user-account-settings/user-account-settings.html - 90 + 91 @@ -2097,7 +2105,7 @@ Format de date et d'heure apps/client/src/app/components/user-account-settings/user-account-settings.html - 92 + 93 @@ -2105,7 +2113,7 @@ Apparence apps/client/src/app/components/user-account-settings/user-account-settings.html - 113 + 114 @@ -2113,7 +2121,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.html - 125 + 126 @@ -2121,7 +2129,7 @@ Clair apps/client/src/app/components/user-account-settings/user-account-settings.html - 126 + 127 @@ -2129,7 +2137,7 @@ Sombre apps/client/src/app/components/user-account-settings/user-account-settings.html - 127 + 128 @@ -2137,7 +2145,7 @@ Mode Zen apps/client/src/app/components/user-account-settings/user-account-settings.html - 136 + 137 apps/client/src/app/pages/features/features-page.html @@ -2149,7 +2157,7 @@ Se connecter avec empreinte apps/client/src/app/components/user-account-settings/user-account-settings.html - 153 + 155 @@ -2157,7 +2165,7 @@ Fonctionnalités expérimentales apps/client/src/app/components/user-account-settings/user-account-settings.html - 169 + 172 @@ -2165,7 +2173,7 @@ ID d'utilisateur apps/client/src/app/components/user-account-settings/user-account-settings.html - 184 + 188 @@ -2229,7 +2237,7 @@ ID du compte apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 89 + 91 @@ -2485,7 +2493,7 @@ Nom, symbole, ou ISIN apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 10 + 25 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2571,6 +2579,10 @@ Import Importer + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 80 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 150 @@ -3125,7 +3137,7 @@ Différence avec le Record Historique libs/ui/src/lib/benchmark/benchmark.component.html - 12 + 31 @@ -3133,7 +3145,7 @@ par rapport au record historique libs/ui/src/lib/benchmark/benchmark.component.html - 14 + 33 @@ -3513,7 +3525,7 @@ Expérience sans distraction pour les périodes tumultueuses apps/client/src/app/components/user-account-settings/user-account-settings.html - 137,139 + 138,140 @@ -3521,7 +3533,7 @@ Avant-première de fonctionnalités futures apps/client/src/app/components/user-account-settings/user-account-settings.html - 170,172 + 173,175 @@ -4369,7 +4381,7 @@ Scraper Configuration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 171 + 201 @@ -7669,7 +7681,7 @@ Biometric Authentication apps/client/src/app/components/user-account-settings/user-account-settings.html - 152 + 154 @@ -7753,7 +7765,7 @@ Export Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 191 + 195 @@ -10156,14 +10168,6 @@ 7 - - Add Access - Add Access - - apps/client/src/app/components/access-table/access-table.component.html - 8,10 - - Choose or drop a file here Choose or drop a file here @@ -10313,7 +10317,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 154 + 184 @@ -10393,7 +10397,7 @@ Find holding... libs/ui/src/lib/assistant/assistant.component.ts - 87 + 89 @@ -10401,7 +10405,59 @@ No entries... libs/ui/src/lib/assistant/assistant.html - 62 + 63 + + + libs/ui/src/lib/assistant/assistant.html + 84 + + + + Asset Profile + Asset Profile + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31,33 + + + + Do you really want to delete this asset profile? + Do you really want to delete this asset profile? + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 182 + + + + Search + Search + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + + Add Manually + Add Manually + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + + Ghostfolio is a personal finance dashboard to keep track of your assets like stocks, ETFs or cryptocurrencies across multiple platforms. + Ghostfolio est un dashboard de finances personnelles qui permet de suivre vos actifs comme les actions, les ETF ou les crypto-monnaies sur plusieurs plateformes. + + apps/client/src/app/pages/i18n/i18n-page.html + 4,7 + + + + Last All Time High + Last All Time High + + libs/ui/src/lib/benchmark/benchmark.component.html + 15 diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 248d3f9ec..1712694d3 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -31,7 +31,7 @@ Beneficiario apps/client/src/app/components/access-table/access-table.component.html - 22 + 10 @@ -39,7 +39,7 @@ Tipo apps/client/src/app/components/access-table/access-table.component.html - 29 + 17 apps/client/src/app/components/admin-jobs/admin-jobs.html @@ -63,7 +63,7 @@ Dettagli apps/client/src/app/components/access-table/access-table.component.html - 39 + 27 @@ -71,7 +71,7 @@ Revoca apps/client/src/app/components/access-table/access-table.component.html - 66 + 54 @@ -79,7 +79,7 @@ Vuoi davvero revocare l'accesso concesso? apps/client/src/app/components/access-table/access-table.component.ts - 50 + 49 @@ -99,7 +99,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 81 + 111 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -283,7 +283,7 @@ Elimina i lavori apps/client/src/app/components/admin-jobs/admin-jobs.html - 140 + 135 @@ -291,7 +291,7 @@ Simbolo apps/client/src/app/components/admin-jobs/admin-jobs.html - 50 + 45 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -299,7 +299,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 57 + 87 + + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 34 @@ -307,7 +311,7 @@ Sorgente dei dati apps/client/src/app/components/admin-jobs/admin-jobs.html - 59 + 54 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -323,7 +327,7 @@ Tentativi apps/client/src/app/components/admin-jobs/admin-jobs.html - 68 + 63 @@ -331,7 +335,7 @@ Creato apps/client/src/app/components/admin-jobs/admin-jobs.html - 77 + 72 @@ -339,7 +343,7 @@ Finito apps/client/src/app/components/admin-jobs/admin-jobs.html - 86 + 81 @@ -347,23 +351,23 @@ Stato apps/client/src/app/components/admin-jobs/admin-jobs.html - 95 + 90 - - Asset Profile - Profilo dell'asset + + Asset Profiles + Profilo dell'asset - apps/client/src/app/components/admin-jobs/admin-jobs.html - 37 + libs/ui/src/lib/assistant/assistant.html + 67 - - Historical Market Data - Dati storici del mercato + + Historical Market Data + Dati storici del mercato apps/client/src/app/components/admin-jobs/admin-jobs.html - 42 + 37,39 @@ -371,7 +375,7 @@ Visualizza i dati apps/client/src/app/components/admin-jobs/admin-jobs.html - 155 + 150 @@ -379,7 +383,7 @@ Visualizza Stacktrace apps/client/src/app/components/admin-jobs/admin-jobs.html - 162 + 157 @@ -387,7 +391,7 @@ Elimina il lavoro apps/client/src/app/components/admin-jobs/admin-jobs.html - 165 + 160 @@ -435,11 +439,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 195 + 225 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 18 + 40 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -455,7 +459,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 95 + 97 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -479,11 +483,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 202 + 232 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 25 + 47 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -499,7 +503,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 102 + 104 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -515,7 +519,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 72 + 102 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -537,6 +541,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 78 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 58 + Please add a currency: @@ -711,7 +719,7 @@ apps/client/src/app/components/header/header.component.html - 189 + 192 @@ -755,7 +763,7 @@ apps/client/src/app/components/header/header.component.html - 203 + 206 @@ -767,7 +775,7 @@ apps/client/src/app/components/header/header.component.html - 213 + 216 @@ -787,7 +795,7 @@ apps/client/src/app/components/header/header.component.html - 221 + 224 apps/client/src/app/pages/accounts/accounts-page.html @@ -803,7 +811,7 @@ apps/client/src/app/components/header/header.component.html - 237 + 240 @@ -819,7 +827,7 @@ apps/client/src/app/components/header/header.component.html - 248 + 251 apps/client/src/app/pages/resources/resources-page.html @@ -839,11 +847,11 @@ apps/client/src/app/components/header/header.component.html - 260 + 263 apps/client/src/app/components/header/header.component.html - 329 + 332 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -975,7 +983,7 @@ apps/client/src/app/components/header/header.component.html - 316 + 319 @@ -983,7 +991,7 @@ Io apps/client/src/app/components/header/header.component.html - 170 + 173 @@ -991,7 +999,7 @@ Il mio Ghostfolio apps/client/src/app/components/header/header.component.html - 228 + 231 @@ -999,7 +1007,7 @@ Informazioni su Ghostfolio apps/client/src/app/components/header/header.component.html - 268 + 271 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1015,7 +1023,7 @@ apps/client/src/app/components/header/header.component.html - 303 + 306 apps/client/src/app/pages/features/features-page.html @@ -1031,7 +1039,7 @@ apps/client/src/app/components/header/header.component.html - 345 + 348 apps/client/src/app/components/home-market/home-market.html @@ -1167,7 +1175,7 @@ Accedi apps/client/src/app/components/header/header.component.html - 358 + 361 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1354,7 +1362,7 @@ Settori apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + 155 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1370,7 +1378,7 @@ Paesi apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 135 + 165 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1698,7 +1706,7 @@ Vuoi davvero rimuovere questo metodo di accesso? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 184 + 181 @@ -1770,7 +1778,7 @@ Valuta base apps/client/src/app/components/user-account-settings/user-account-settings.html - 26 + 27 @@ -1778,7 +1786,7 @@ Locale apps/client/src/app/components/user-account-settings/user-account-settings.html - 90 + 91 @@ -1786,7 +1794,7 @@ Formato data e numero apps/client/src/app/components/user-account-settings/user-account-settings.html - 92 + 93 @@ -1794,7 +1802,7 @@ Modalità Zen apps/client/src/app/components/user-account-settings/user-account-settings.html - 136 + 137 apps/client/src/app/pages/features/features-page.html @@ -1806,7 +1814,7 @@ Accesso con impronta digitale apps/client/src/app/components/user-account-settings/user-account-settings.html - 153 + 155 @@ -1814,7 +1822,7 @@ ID utente apps/client/src/app/components/user-account-settings/user-account-settings.html - 184 + 188 @@ -1882,7 +1890,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 62 + 92 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1926,7 +1934,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 44 + 46 @@ -1934,7 +1942,7 @@ ID account apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 89 + 91 @@ -2250,7 +2258,7 @@ Nome, simbolo o ISIN apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 10 + 25 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2310,11 +2318,11 @@ Nota apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 182 + 212 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 72 + 74 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2330,7 +2338,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 86 + 116 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2570,7 +2578,7 @@ Variazione rispetto al massimo storico (ATH) libs/ui/src/lib/benchmark/benchmark.component.html - 12 + 31 @@ -2578,7 +2586,7 @@ dal massimo storico (ATH) libs/ui/src/lib/benchmark/benchmark.component.html - 14 + 33 @@ -2602,7 +2610,7 @@ Lingua apps/client/src/app/components/user-account-settings/user-account-settings.html - 47 + 48 @@ -2610,7 +2618,7 @@ Inizia apps/client/src/app/components/header/header.component.html - 370 + 373 @@ -2678,7 +2686,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 95 + 125 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2734,7 +2742,7 @@ Settore apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 110 + 140 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2746,7 +2754,7 @@ Paese apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 119 + 149 apps/client/src/app/components/admin-users/admin-users.html @@ -2886,7 +2894,7 @@ Filtra per... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 269 + 279 @@ -2910,7 +2918,7 @@ Alias apps/client/src/app/components/access-table/access-table.component.html - 15 + 3 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -2922,7 +2930,7 @@ Funzionalità sperimentali apps/client/src/app/components/user-account-settings/user-account-settings.html - 169 + 172 @@ -2962,7 +2970,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 35 + 31 @@ -2970,7 +2978,7 @@ Aspetto apps/client/src/app/components/user-account-settings/user-account-settings.html - 113 + 114 @@ -2978,7 +2986,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.html - 125 + 126 @@ -2986,7 +2994,7 @@ Chiaro apps/client/src/app/components/user-account-settings/user-account-settings.html - 126 + 127 @@ -2994,7 +3002,7 @@ Scuro apps/client/src/app/components/user-account-settings/user-account-settings.html - 127 + 128 @@ -3258,27 +3266,27 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 61 + 62 apps/client/src/app/components/user-account-settings/user-account-settings.html - 65 + 66 apps/client/src/app/components/user-account-settings/user-account-settings.html - 69 + 70 apps/client/src/app/components/user-account-settings/user-account-settings.html - 73 + 74 apps/client/src/app/components/user-account-settings/user-account-settings.html - 77 + 78 apps/client/src/app/components/user-account-settings/user-account-settings.html - 81 + 82 apps/client/src/app/pages/features/features-page.html @@ -3306,7 +3314,7 @@ Mappatura dei simboli apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 160 + 190 @@ -3356,6 +3364,10 @@ Import Importa + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 80 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 150 @@ -3514,7 +3526,7 @@ Esperienza priva di distrazioni per i periodi più turbolenti apps/client/src/app/components/user-account-settings/user-account-settings.html - 137,139 + 138,140 @@ -3522,7 +3534,7 @@ Un'anteprima delle funzionalità in arrivo apps/client/src/app/components/user-account-settings/user-account-settings.html - 170,172 + 173,175 @@ -4370,7 +4382,7 @@ Configurazione dello scraper apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 171 + 201 @@ -7670,7 +7682,7 @@ Autenticazione biometrica apps/client/src/app/components/user-account-settings/user-account-settings.html - 152 + 154 @@ -7754,7 +7766,7 @@ Esporta dati apps/client/src/app/components/user-account-settings/user-account-settings.html - 191 + 195 @@ -10157,14 +10169,6 @@ 7 - - Add Access - Add Access - - apps/client/src/app/components/access-table/access-table.component.html - 8,10 - - Choose or drop a file here Choose or drop a file here @@ -10314,7 +10318,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 154 + 184 @@ -10394,7 +10398,7 @@ Find holding... libs/ui/src/lib/assistant/assistant.component.ts - 87 + 89 @@ -10402,7 +10406,59 @@ No entries... libs/ui/src/lib/assistant/assistant.html - 62 + 63 + + + libs/ui/src/lib/assistant/assistant.html + 84 + + + + Asset Profile + Asset Profile + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31,33 + + + + Do you really want to delete this asset profile? + Do you really want to delete this asset profile? + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 182 + + + + Search + Search + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + + Add Manually + Add Manually + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + + Ghostfolio is a personal finance dashboard to keep track of your assets like stocks, ETFs or cryptocurrencies across multiple platforms. + Ghostfolio è un dashboard di finanza personale per tenere traccia delle vostre attività come azioni, ETF o criptovalute su più piattaforme. + + apps/client/src/app/pages/i18n/i18n-page.html + 4,7 + + + + Last All Time High + Last All Time High + + libs/ui/src/lib/benchmark/benchmark.component.html + 15 diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 649f07f15..f424ee349 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -30,7 +30,7 @@ Ontvanger apps/client/src/app/components/access-table/access-table.component.html - 22 + 10 @@ -38,7 +38,7 @@ Type apps/client/src/app/components/access-table/access-table.component.html - 29 + 17 apps/client/src/app/components/admin-jobs/admin-jobs.html @@ -62,7 +62,7 @@ Details apps/client/src/app/components/access-table/access-table.component.html - 39 + 27 @@ -70,7 +70,7 @@ Intrekken apps/client/src/app/components/access-table/access-table.component.html - 66 + 54 @@ -78,7 +78,7 @@ Wil je deze verleende toegang echt intrekken? apps/client/src/app/components/access-table/access-table.component.ts - 50 + 49 @@ -98,7 +98,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 81 + 111 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -282,7 +282,7 @@ Taken verwijderen apps/client/src/app/components/admin-jobs/admin-jobs.html - 140 + 135 @@ -290,7 +290,7 @@ Symbool apps/client/src/app/components/admin-jobs/admin-jobs.html - 50 + 45 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -298,7 +298,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 57 + 87 + + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 34 @@ -306,7 +310,7 @@ Gegevensbron apps/client/src/app/components/admin-jobs/admin-jobs.html - 59 + 54 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -322,7 +326,7 @@ Pogingen apps/client/src/app/components/admin-jobs/admin-jobs.html - 68 + 63 @@ -330,7 +334,7 @@ Aangemaakt apps/client/src/app/components/admin-jobs/admin-jobs.html - 77 + 72 @@ -338,7 +342,7 @@ Voltooid apps/client/src/app/components/admin-jobs/admin-jobs.html - 86 + 81 @@ -346,23 +350,23 @@ Status apps/client/src/app/components/admin-jobs/admin-jobs.html - 95 + 90 - - Asset Profile - Asset Profiel + + Asset Profiles + Asset Profiel - apps/client/src/app/components/admin-jobs/admin-jobs.html - 37 + libs/ui/src/lib/assistant/assistant.html + 67 - - Historical Market Data - Historische marktgegevens + + Historical Market Data + Historische marktgegevens apps/client/src/app/components/admin-jobs/admin-jobs.html - 42 + 37,39 @@ -370,7 +374,7 @@ Bekijk gegevens apps/client/src/app/components/admin-jobs/admin-jobs.html - 155 + 150 @@ -378,7 +382,7 @@ Bekijk Stacktrace apps/client/src/app/components/admin-jobs/admin-jobs.html - 162 + 157 @@ -386,7 +390,7 @@ Taak verwijderen apps/client/src/app/components/admin-jobs/admin-jobs.html - 165 + 160 @@ -434,11 +438,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 195 + 225 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 18 + 40 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -454,7 +458,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 95 + 97 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -478,11 +482,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 202 + 232 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 25 + 47 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -498,7 +502,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 102 + 104 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -514,7 +518,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 72 + 102 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -536,6 +540,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 78 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 58 + Please add a currency: @@ -710,7 +718,7 @@ apps/client/src/app/components/header/header.component.html - 189 + 192 @@ -754,7 +762,7 @@ apps/client/src/app/components/header/header.component.html - 203 + 206 @@ -766,7 +774,7 @@ apps/client/src/app/components/header/header.component.html - 213 + 216 @@ -786,7 +794,7 @@ apps/client/src/app/components/header/header.component.html - 221 + 224 apps/client/src/app/pages/accounts/accounts-page.html @@ -802,7 +810,7 @@ apps/client/src/app/components/header/header.component.html - 237 + 240 @@ -818,7 +826,7 @@ apps/client/src/app/components/header/header.component.html - 248 + 251 apps/client/src/app/pages/resources/resources-page.html @@ -838,11 +846,11 @@ apps/client/src/app/components/header/header.component.html - 260 + 263 apps/client/src/app/components/header/header.component.html - 329 + 332 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -974,7 +982,7 @@ apps/client/src/app/components/header/header.component.html - 316 + 319 @@ -982,7 +990,7 @@ Ik apps/client/src/app/components/header/header.component.html - 170 + 173 @@ -990,7 +998,7 @@ Mijn Ghostfolio apps/client/src/app/components/header/header.component.html - 228 + 231 @@ -998,7 +1006,7 @@ Over Ghostfolio apps/client/src/app/components/header/header.component.html - 268 + 271 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1014,7 +1022,7 @@ apps/client/src/app/components/header/header.component.html - 303 + 306 apps/client/src/app/pages/features/features-page.html @@ -1030,7 +1038,7 @@ apps/client/src/app/components/header/header.component.html - 345 + 348 apps/client/src/app/components/home-market/home-market.html @@ -1166,7 +1174,7 @@ Aanmelden apps/client/src/app/components/header/header.component.html - 358 + 361 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1353,7 +1361,7 @@ Sectoren apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + 155 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1369,7 +1377,7 @@ Landen apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 135 + 165 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1697,7 +1705,7 @@ Wil je deze aanmeldingsmethode echt verwijderen? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 184 + 181 @@ -1769,7 +1777,7 @@ Basisvaluta apps/client/src/app/components/user-account-settings/user-account-settings.html - 26 + 27 @@ -1777,7 +1785,7 @@ Locatie apps/client/src/app/components/user-account-settings/user-account-settings.html - 90 + 91 @@ -1785,7 +1793,7 @@ Datum- en getalnotatie apps/client/src/app/components/user-account-settings/user-account-settings.html - 92 + 93 @@ -1793,7 +1801,7 @@ Zen-modus apps/client/src/app/components/user-account-settings/user-account-settings.html - 136 + 137 apps/client/src/app/pages/features/features-page.html @@ -1805,7 +1813,7 @@ Aanmelden met vingerafdruk apps/client/src/app/components/user-account-settings/user-account-settings.html - 153 + 155 @@ -1813,7 +1821,7 @@ Gebruikers-ID apps/client/src/app/components/user-account-settings/user-account-settings.html - 184 + 188 @@ -1881,7 +1889,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 62 + 92 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1925,7 +1933,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 44 + 46 @@ -1933,7 +1941,7 @@ Rekening-ID apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 89 + 91 @@ -2249,7 +2257,7 @@ Naam, symbool of ISIN apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 10 + 25 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2309,11 +2317,11 @@ Opmerking apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 182 + 212 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 72 + 74 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2329,7 +2337,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 86 + 116 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2569,7 +2577,7 @@ Verandering van All Time High libs/ui/src/lib/benchmark/benchmark.component.html - 12 + 31 @@ -2577,7 +2585,7 @@ van ATH libs/ui/src/lib/benchmark/benchmark.component.html - 14 + 33 @@ -2601,7 +2609,7 @@ Taal apps/client/src/app/components/user-account-settings/user-account-settings.html - 47 + 48 @@ -2609,7 +2617,7 @@ Aan de slag apps/client/src/app/components/header/header.component.html - 370 + 373 @@ -2677,7 +2685,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 95 + 125 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2733,7 +2741,7 @@ Sector apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 110 + 140 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2745,7 +2753,7 @@ Land apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 119 + 149 apps/client/src/app/components/admin-users/admin-users.html @@ -2885,7 +2893,7 @@ Filter op... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 269 + 279 @@ -2909,7 +2917,7 @@ Alias apps/client/src/app/components/access-table/access-table.component.html - 15 + 3 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -2921,7 +2929,7 @@ Experimentele functies apps/client/src/app/components/user-account-settings/user-account-settings.html - 169 + 172 @@ -2961,7 +2969,7 @@ Automatisch apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 35 + 31 @@ -2969,7 +2977,7 @@ Weergave apps/client/src/app/components/user-account-settings/user-account-settings.html - 113 + 114 @@ -2977,7 +2985,7 @@ Automatisch apps/client/src/app/components/user-account-settings/user-account-settings.html - 125 + 126 @@ -2985,7 +2993,7 @@ Licht apps/client/src/app/components/user-account-settings/user-account-settings.html - 126 + 127 @@ -2993,7 +3001,7 @@ Donker apps/client/src/app/components/user-account-settings/user-account-settings.html - 127 + 128 @@ -3257,27 +3265,27 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 61 + 62 apps/client/src/app/components/user-account-settings/user-account-settings.html - 65 + 66 apps/client/src/app/components/user-account-settings/user-account-settings.html - 69 + 70 apps/client/src/app/components/user-account-settings/user-account-settings.html - 73 + 74 apps/client/src/app/components/user-account-settings/user-account-settings.html - 77 + 78 apps/client/src/app/components/user-account-settings/user-account-settings.html - 81 + 82 apps/client/src/app/pages/features/features-page.html @@ -3305,7 +3313,7 @@ Symbool toewijzen apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 160 + 190 @@ -3355,6 +3363,10 @@ Import Importeren + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 80 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 150 @@ -3513,7 +3525,7 @@ Afleidingsvrije ervaring voor roerige tijden apps/client/src/app/components/user-account-settings/user-account-settings.html - 137,139 + 138,140 @@ -3521,7 +3533,7 @@ Voorproefje van nieuwe functionaliteit apps/client/src/app/components/user-account-settings/user-account-settings.html - 170,172 + 173,175 @@ -4369,7 +4381,7 @@ Scraper instellingen apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 171 + 201 @@ -7669,7 +7681,7 @@ Biometrische authenticatie apps/client/src/app/components/user-account-settings/user-account-settings.html - 152 + 154 @@ -7753,7 +7765,7 @@ Exporteer Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 191 + 195 @@ -10156,14 +10168,6 @@ 7 - - Add Access - Add Access - - apps/client/src/app/components/access-table/access-table.component.html - 8,10 - - Choose or drop a file here Choose or drop a file here @@ -10313,7 +10317,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 154 + 184 @@ -10393,7 +10397,7 @@ Find holding... libs/ui/src/lib/assistant/assistant.component.ts - 87 + 89 @@ -10401,7 +10405,59 @@ No entries... libs/ui/src/lib/assistant/assistant.html - 62 + 63 + + + libs/ui/src/lib/assistant/assistant.html + 84 + + + + Asset Profile + Asset Profile + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31,33 + + + + Do you really want to delete this asset profile? + Do you really want to delete this asset profile? + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 182 + + + + Search + Search + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + + Add Manually + Add Manually + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + + Ghostfolio is a personal finance dashboard to keep track of your assets like stocks, ETFs or cryptocurrencies across multiple platforms. + Ghostfolio is een persoonlijk financieel dashboard om uw activa zoals aandelen, ETF’s of cryptocurrencies over meerdere platforms bij te houden. + + apps/client/src/app/pages/i18n/i18n-page.html + 4,7 + + + + Last All Time High + Last All Time High + + libs/ui/src/lib/benchmark/benchmark.component.html + 15 diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index f5050eab8..15db8b5c7 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -14,7 +14,7 @@ Alias apps/client/src/app/components/access-table/access-table.component.html - 15 + 3 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -26,7 +26,7 @@ Beneficiário (a) apps/client/src/app/components/access-table/access-table.component.html - 22 + 10 @@ -34,7 +34,7 @@ Tipo apps/client/src/app/components/access-table/access-table.component.html - 29 + 17 apps/client/src/app/components/admin-jobs/admin-jobs.html @@ -58,7 +58,7 @@ Detalhes apps/client/src/app/components/access-table/access-table.component.html - 39 + 27 @@ -66,7 +66,7 @@ Revogar apps/client/src/app/components/access-table/access-table.component.html - 66 + 54 @@ -74,7 +74,7 @@ Pretende realmente revogar este acesso concedido? apps/client/src/app/components/access-table/access-table.component.ts - 50 + 49 @@ -90,7 +90,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 44 + 46 @@ -110,7 +110,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 81 + 111 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -190,7 +190,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 62 + 92 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -334,7 +334,7 @@ Símbolo apps/client/src/app/components/admin-jobs/admin-jobs.html - 50 + 45 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -342,7 +342,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 57 + 87 + + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 34 @@ -350,7 +354,7 @@ Fonte de dados apps/client/src/app/components/admin-jobs/admin-jobs.html - 59 + 54 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -366,7 +370,7 @@ Tentativas apps/client/src/app/components/admin-jobs/admin-jobs.html - 68 + 63 @@ -374,7 +378,7 @@ Criado apps/client/src/app/components/admin-jobs/admin-jobs.html - 77 + 72 @@ -382,7 +386,7 @@ Terminado apps/client/src/app/components/admin-jobs/admin-jobs.html - 86 + 81 @@ -390,7 +394,7 @@ Estado apps/client/src/app/components/admin-jobs/admin-jobs.html - 95 + 90 @@ -398,23 +402,23 @@ Eliminar Tarefas apps/client/src/app/components/admin-jobs/admin-jobs.html - 140 + 135 - - Asset Profile - Perfil de Ativos + + Asset Profiles + Perfil de Ativos - apps/client/src/app/components/admin-jobs/admin-jobs.html - 37 + libs/ui/src/lib/assistant/assistant.html + 67 - - Historical Market Data - Histórico de Dados de Mercado + + Historical Market Data + Histórico de Dados de Mercado apps/client/src/app/components/admin-jobs/admin-jobs.html - 42 + 37,39 @@ -422,7 +426,7 @@ Visualizar dados apps/client/src/app/components/admin-jobs/admin-jobs.html - 155 + 150 @@ -430,7 +434,7 @@ Ver Stacktrace apps/client/src/app/components/admin-jobs/admin-jobs.html - 162 + 157 @@ -438,7 +442,7 @@ Apagar Tarefa apps/client/src/app/components/admin-jobs/admin-jobs.html - 165 + 160 @@ -486,11 +490,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 195 + 225 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 18 + 40 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -506,7 +510,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 95 + 97 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -530,11 +534,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 202 + 232 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 25 + 47 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -550,7 +554,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 102 + 104 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -562,7 +566,7 @@ Filtrar por... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 269 + 279 @@ -574,7 +578,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 86 + 116 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -594,7 +598,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 95 + 125 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -614,7 +618,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 72 + 102 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -636,6 +640,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 78 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 58 + Countries Count @@ -826,7 +834,7 @@ apps/client/src/app/components/header/header.component.html - 189 + 192 @@ -854,7 +862,7 @@ apps/client/src/app/components/header/header.component.html - 221 + 224 apps/client/src/app/pages/accounts/accounts-page.html @@ -938,7 +946,7 @@ apps/client/src/app/components/header/header.component.html - 203 + 206 @@ -950,7 +958,7 @@ apps/client/src/app/components/header/header.component.html - 213 + 216 @@ -962,7 +970,7 @@ apps/client/src/app/components/header/header.component.html - 237 + 240 @@ -978,7 +986,7 @@ apps/client/src/app/components/header/header.component.html - 248 + 251 apps/client/src/app/pages/resources/resources-page.html @@ -998,11 +1006,11 @@ apps/client/src/app/components/header/header.component.html - 260 + 263 apps/client/src/app/components/header/header.component.html - 329 + 332 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -1134,7 +1142,7 @@ apps/client/src/app/components/header/header.component.html - 316 + 319 @@ -1142,7 +1150,7 @@ Eu apps/client/src/app/components/header/header.component.html - 170 + 173 @@ -1150,7 +1158,7 @@ O meu Ghostfolio apps/client/src/app/components/header/header.component.html - 228 + 231 @@ -1158,7 +1166,7 @@ Sobre o Ghostfolio apps/client/src/app/components/header/header.component.html - 268 + 271 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -1174,7 +1182,7 @@ apps/client/src/app/components/header/header.component.html - 303 + 306 apps/client/src/app/pages/features/features-page.html @@ -1190,7 +1198,7 @@ apps/client/src/app/components/header/header.component.html - 345 + 348 apps/client/src/app/components/home-market/home-market.html @@ -1206,7 +1214,7 @@ Iniciar sessão apps/client/src/app/components/header/header.component.html - 358 + 361 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -1218,7 +1226,7 @@ Começar apps/client/src/app/components/header/header.component.html - 370 + 373 @@ -1653,7 +1661,7 @@ Setor apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 110 + 140 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1665,7 +1673,7 @@ País apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 119 + 149 apps/client/src/app/components/admin-users/admin-users.html @@ -1681,7 +1689,7 @@ Setores apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + 155 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1697,7 +1705,7 @@ Países apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 135 + 165 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1909,7 +1917,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 35 + 31 @@ -1949,7 +1957,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 - 184 + 181 @@ -2021,7 +2029,7 @@ Moeda Base apps/client/src/app/components/user-account-settings/user-account-settings.html - 26 + 27 @@ -2029,7 +2037,7 @@ Língua apps/client/src/app/components/user-account-settings/user-account-settings.html - 47 + 48 @@ -2049,7 +2057,7 @@ Localidade apps/client/src/app/components/user-account-settings/user-account-settings.html - 90 + 91 @@ -2057,7 +2065,7 @@ Formato de números e datas apps/client/src/app/components/user-account-settings/user-account-settings.html - 92 + 93 @@ -2065,7 +2073,7 @@ Modo Zen apps/client/src/app/components/user-account-settings/user-account-settings.html - 136 + 137 apps/client/src/app/pages/features/features-page.html @@ -2077,7 +2085,7 @@ Aparência apps/client/src/app/components/user-account-settings/user-account-settings.html - 113 + 114 @@ -2085,7 +2093,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.html - 125 + 126 @@ -2093,7 +2101,7 @@ Claro apps/client/src/app/components/user-account-settings/user-account-settings.html - 126 + 127 @@ -2101,7 +2109,7 @@ Escuro apps/client/src/app/components/user-account-settings/user-account-settings.html - 127 + 128 @@ -2109,7 +2117,7 @@ Iniciar sessão com impressão digital apps/client/src/app/components/user-account-settings/user-account-settings.html - 153 + 155 @@ -2117,7 +2125,7 @@ Funcionalidades Experimentais apps/client/src/app/components/user-account-settings/user-account-settings.html - 169 + 172 @@ -2125,7 +2133,7 @@ ID do Utilizador apps/client/src/app/components/user-account-settings/user-account-settings.html - 184 + 188 @@ -2189,7 +2197,7 @@ ID da Conta apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 89 + 91 @@ -2405,7 +2413,7 @@ Nome, símbolo or ISIN apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 10 + 25 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2449,11 +2457,11 @@ Nota apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 182 + 212 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 72 + 74 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -3009,7 +3017,7 @@ Diferença desde o Máximo Histórico libs/ui/src/lib/benchmark/benchmark.component.html - 12 + 31 @@ -3017,7 +3025,7 @@ a partir do ATH (All Time High) libs/ui/src/lib/benchmark/benchmark.component.html - 14 + 33 @@ -3293,7 +3301,7 @@ Mapeamento de Símbolo apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 160 + 190 @@ -3313,27 +3321,27 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 61 + 62 apps/client/src/app/components/user-account-settings/user-account-settings.html - 65 + 66 apps/client/src/app/components/user-account-settings/user-account-settings.html - 69 + 70 apps/client/src/app/components/user-account-settings/user-account-settings.html - 73 + 74 apps/client/src/app/components/user-account-settings/user-account-settings.html - 77 + 78 apps/client/src/app/components/user-account-settings/user-account-settings.html - 81 + 82 apps/client/src/app/pages/features/features-page.html @@ -3375,6 +3383,10 @@ Import Importar + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 80 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 150 @@ -3513,7 +3525,7 @@ Experiência sem distrações para tempos turbulentos apps/client/src/app/components/user-account-settings/user-account-settings.html - 137,139 + 138,140 @@ -3521,7 +3533,7 @@ Acesso antecipado a funcionalidades futuras apps/client/src/app/components/user-account-settings/user-account-settings.html - 170,172 + 173,175 @@ -4369,7 +4381,7 @@ Scraper Configuration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 171 + 201 @@ -7669,7 +7681,7 @@ Biometric Authentication apps/client/src/app/components/user-account-settings/user-account-settings.html - 152 + 154 @@ -7753,7 +7765,7 @@ Export Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 191 + 195 @@ -10156,14 +10168,6 @@ 7 - - Add Access - Add Access - - apps/client/src/app/components/access-table/access-table.component.html - 8,10 - - Choose or drop a file here Choose or drop a file here @@ -10313,7 +10317,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 154 + 184 @@ -10393,7 +10397,7 @@ Find holding... libs/ui/src/lib/assistant/assistant.component.ts - 87 + 89 @@ -10401,7 +10405,59 @@ No entries... libs/ui/src/lib/assistant/assistant.html - 62 + 63 + + + libs/ui/src/lib/assistant/assistant.html + 84 + + + + Asset Profile + Asset Profile + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31,33 + + + + Do you really want to delete this asset profile? + Do you really want to delete this asset profile? + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 182 + + + + Search + Search + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + + Add Manually + Add Manually + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + + Ghostfolio is a personal finance dashboard to keep track of your assets like stocks, ETFs or cryptocurrencies across multiple platforms. + Ghostfolio é um dashboard de finanças pessoais para acompanhar os seus activos como acções, ETFs ou criptomoedas em múltiplas plataformas. + + apps/client/src/app/pages/i18n/i18n-page.html + 4,7 + + + + Last All Time High + Last All Time High + + libs/ui/src/lib/benchmark/benchmark.component.html + 15 diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 6c9b733c5..e0ca1f05f 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -722,7 +722,7 @@ apps/client/src/app/components/header/header.component.html - 345 + 348 apps/client/src/app/components/home-market/home-market.html @@ -746,7 +746,7 @@ apps/client/src/app/components/header/header.component.html - 248 + 251 apps/client/src/app/pages/resources/resources-page.html @@ -766,7 +766,7 @@ apps/client/src/app/components/header/header.component.html - 316 + 319 @@ -870,7 +870,7 @@ apps/client/src/app/components/header/header.component.html - 303 + 306 apps/client/src/app/pages/features/features-page.html @@ -910,11 +910,11 @@ apps/client/src/app/components/header/header.component.html - 260 + 263 apps/client/src/app/components/header/header.component.html - 329 + 332 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -1054,27 +1054,27 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 61 + 62 apps/client/src/app/components/user-account-settings/user-account-settings.html - 65 + 66 apps/client/src/app/components/user-account-settings/user-account-settings.html - 69 + 70 apps/client/src/app/components/user-account-settings/user-account-settings.html - 73 + 74 apps/client/src/app/components/user-account-settings/user-account-settings.html - 77 + 78 apps/client/src/app/components/user-account-settings/user-account-settings.html - 81 + 82 apps/client/src/app/pages/features/features-page.html @@ -1094,7 +1094,7 @@ Takma Ad apps/client/src/app/components/access-table/access-table.component.html - 15 + 3 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -1106,7 +1106,7 @@ Hibe Alan / Alıcı apps/client/src/app/components/access-table/access-table.component.html - 22 + 10 @@ -1114,7 +1114,7 @@ Tip apps/client/src/app/components/access-table/access-table.component.html - 29 + 17 apps/client/src/app/components/admin-jobs/admin-jobs.html @@ -1138,7 +1138,7 @@ Ayrıntılar apps/client/src/app/components/access-table/access-table.component.html - 39 + 27 @@ -1146,7 +1146,7 @@ Geri Al apps/client/src/app/components/access-table/access-table.component.html - 66 + 54 @@ -1154,7 +1154,7 @@ Bu erişim iznini geri almayı gerçekten istiyor musunuz? apps/client/src/app/components/access-table/access-table.component.ts - 50 + 49 @@ -1194,7 +1194,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 44 + 46 @@ -1214,7 +1214,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 81 + 111 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -1294,7 +1294,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 62 + 92 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1422,7 +1422,7 @@ Sembol apps/client/src/app/components/admin-jobs/admin-jobs.html - 50 + 45 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -1430,7 +1430,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 57 + 87 + + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 34 @@ -1438,7 +1442,7 @@ Veri Kaynağı apps/client/src/app/components/admin-jobs/admin-jobs.html - 59 + 54 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -1454,7 +1458,7 @@ Deneme apps/client/src/app/components/admin-jobs/admin-jobs.html - 68 + 63 @@ -1462,7 +1466,7 @@ Oluşturuldu apps/client/src/app/components/admin-jobs/admin-jobs.html - 77 + 72 @@ -1470,7 +1474,7 @@ Tamamlandı apps/client/src/app/components/admin-jobs/admin-jobs.html - 86 + 81 @@ -1478,7 +1482,7 @@ Durum apps/client/src/app/components/admin-jobs/admin-jobs.html - 95 + 90 @@ -1486,23 +1490,23 @@ İşleri Sil apps/client/src/app/components/admin-jobs/admin-jobs.html - 140 + 135 - - Asset Profile - Varlık Profili + + Asset Profiles + Varlık Profili - apps/client/src/app/components/admin-jobs/admin-jobs.html - 37 + libs/ui/src/lib/assistant/assistant.html + 67 - - Historical Market Data - Tarihsel Piyasa Verisi + + Historical Market Data + Tarihsel Piyasa Verisi apps/client/src/app/components/admin-jobs/admin-jobs.html - 42 + 37,39 @@ -1510,7 +1514,7 @@ Veri Gör apps/client/src/app/components/admin-jobs/admin-jobs.html - 155 + 150 @@ -1518,7 +1522,7 @@ Hata İzini Görüntüle apps/client/src/app/components/admin-jobs/admin-jobs.html - 162 + 157 @@ -1526,7 +1530,7 @@ İşleri Sil apps/client/src/app/components/admin-jobs/admin-jobs.html - 165 + 160 @@ -1574,11 +1578,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 195 + 225 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 18 + 40 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -1594,7 +1598,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 95 + 97 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -1618,11 +1622,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 202 + 232 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 25 + 47 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -1638,7 +1642,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 102 + 104 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1674,7 +1678,7 @@ Filtrele... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 269 + 279 @@ -1686,7 +1690,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 86 + 116 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1706,7 +1710,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 95 + 125 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1726,7 +1730,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 72 + 102 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -1748,6 +1752,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 78 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 58 + Sectors Count @@ -1814,7 +1822,7 @@ Sektör apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 110 + 140 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1826,7 +1834,7 @@ Ülke apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 119 + 149 apps/client/src/app/components/admin-users/admin-users.html @@ -1842,7 +1850,7 @@ Sektörler apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + 155 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1858,7 +1866,7 @@ Ülkeler apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 135 + 165 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1870,7 +1878,7 @@ Sembol Eşleştirme apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 160 + 190 @@ -1878,7 +1886,7 @@ Veri Toplayıcı Yapılandırması apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 171 + 201 @@ -1886,11 +1894,11 @@ Not apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 182 + 212 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 72 + 74 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1910,7 +1918,7 @@ Ad, sembol ya da ISIN apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 10 + 25 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2114,7 +2122,7 @@ apps/client/src/app/components/header/header.component.html - 221 + 224 apps/client/src/app/pages/accounts/accounts-page.html @@ -2170,7 +2178,7 @@ apps/client/src/app/components/header/header.component.html - 189 + 192 @@ -2282,7 +2290,7 @@ apps/client/src/app/components/header/header.component.html - 203 + 206 @@ -2294,7 +2302,7 @@ apps/client/src/app/components/header/header.component.html - 213 + 216 @@ -2306,7 +2314,7 @@ apps/client/src/app/components/header/header.component.html - 237 + 240 @@ -2314,7 +2322,7 @@ Ben apps/client/src/app/components/header/header.component.html - 170 + 173 @@ -2322,7 +2330,7 @@ Ghostfolio'm apps/client/src/app/components/header/header.component.html - 228 + 231 @@ -2330,7 +2338,7 @@ Ghostfolio Hakkında apps/client/src/app/components/header/header.component.html - 268 + 271 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -2342,7 +2350,7 @@ Giriş apps/client/src/app/components/header/header.component.html - 358 + 361 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -2354,7 +2362,7 @@ Haydi Başlayalım apps/client/src/app/components/header/header.component.html - 370 + 373 @@ -3237,7 +3245,7 @@ Account ID apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 89 + 91 @@ -3457,7 +3465,7 @@ Zen Mode apps/client/src/app/components/user-account-settings/user-account-settings.html - 136 + 137 apps/client/src/app/pages/features/features-page.html @@ -4167,6 +4175,10 @@ Import Import + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 80 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 150 @@ -9261,7 +9273,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 35 + 31 @@ -9301,7 +9313,7 @@ Do you really want to remove this sign in method? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 184 + 181 @@ -9385,7 +9397,7 @@ Base Currency apps/client/src/app/components/user-account-settings/user-account-settings.html - 26 + 27 @@ -9393,7 +9405,7 @@ Language apps/client/src/app/components/user-account-settings/user-account-settings.html - 47 + 48 @@ -9401,7 +9413,7 @@ Locale apps/client/src/app/components/user-account-settings/user-account-settings.html - 90 + 91 @@ -9409,7 +9421,7 @@ Date and number format apps/client/src/app/components/user-account-settings/user-account-settings.html - 92 + 93 @@ -9417,7 +9429,7 @@ Appearance apps/client/src/app/components/user-account-settings/user-account-settings.html - 113 + 114 @@ -9425,7 +9437,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.html - 125 + 126 @@ -9433,7 +9445,7 @@ Light apps/client/src/app/components/user-account-settings/user-account-settings.html - 126 + 127 @@ -9441,7 +9453,7 @@ Dark apps/client/src/app/components/user-account-settings/user-account-settings.html - 127 + 128 @@ -9449,7 +9461,7 @@ Distraction-free experience for turbulent times apps/client/src/app/components/user-account-settings/user-account-settings.html - 137,139 + 138,140 @@ -9457,7 +9469,7 @@ Biometric Authentication apps/client/src/app/components/user-account-settings/user-account-settings.html - 152 + 154 @@ -9465,7 +9477,7 @@ Sign in with fingerprint apps/client/src/app/components/user-account-settings/user-account-settings.html - 153 + 155 @@ -9473,7 +9485,7 @@ Experimental Features apps/client/src/app/components/user-account-settings/user-account-settings.html - 169 + 172 @@ -9481,7 +9493,7 @@ Sneak peek at upcoming functionality apps/client/src/app/components/user-account-settings/user-account-settings.html - 170,172 + 173,175 @@ -9489,7 +9501,7 @@ User ID apps/client/src/app/components/user-account-settings/user-account-settings.html - 184 + 188 @@ -9497,7 +9509,7 @@ Export Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 191 + 195 @@ -9641,7 +9653,7 @@ Change from All Time High libs/ui/src/lib/benchmark/benchmark.component.html - 12 + 31 @@ -9649,7 +9661,7 @@ from ATH libs/ui/src/lib/benchmark/benchmark.component.html - 14 + 33 @@ -10128,14 +10140,6 @@ 17 - - Add Access - Add Access - - apps/client/src/app/components/access-table/access-table.component.html - 8,10 - - Interest Interest @@ -10313,7 +10317,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 154 + 184 @@ -10393,7 +10397,7 @@ Find holding... libs/ui/src/lib/assistant/assistant.component.ts - 87 + 89 @@ -10401,7 +10405,59 @@ No entries... libs/ui/src/lib/assistant/assistant.html - 62 + 63 + + + libs/ui/src/lib/assistant/assistant.html + 84 + + + + Asset Profile + Asset Profile + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31,33 + + + + Do you really want to delete this asset profile? + Do you really want to delete this asset profile? + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 182 + + + + Search + Search + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + + Add Manually + Add Manually + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + + Ghostfolio is a personal finance dashboard to keep track of your assets like stocks, ETFs or cryptocurrencies across multiple platforms. + Ghostfolio, hisse senetleri, ETF’ler veya kripto para birimleri gibi varlıklarınızı birden fazla platformda takip etmenizi sağlayan bir kişisel finans panosudur. + + apps/client/src/app/pages/i18n/i18n-page.html + 4,7 + + + + Last All Time High + Last All Time High + + libs/ui/src/lib/benchmark/benchmark.component.html + 15 diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 512ad60e2..1edb3b26a 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -712,7 +712,7 @@ apps/client/src/app/components/header/header.component.html - 345 + 348 apps/client/src/app/components/home-market/home-market.html @@ -735,7 +735,7 @@ apps/client/src/app/components/header/header.component.html - 248 + 251 apps/client/src/app/pages/resources/resources-page.html @@ -754,7 +754,7 @@ apps/client/src/app/components/header/header.component.html - 316 + 319 @@ -855,7 +855,7 @@ apps/client/src/app/components/header/header.component.html - 303 + 306 apps/client/src/app/pages/features/features-page.html @@ -892,11 +892,11 @@ apps/client/src/app/components/header/header.component.html - 260 + 263 apps/client/src/app/components/header/header.component.html - 329 + 332 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -1034,27 +1034,27 @@ apps/client/src/app/components/user-account-settings/user-account-settings.html - 61 + 62 apps/client/src/app/components/user-account-settings/user-account-settings.html - 65 + 66 apps/client/src/app/components/user-account-settings/user-account-settings.html - 69 + 70 apps/client/src/app/components/user-account-settings/user-account-settings.html - 73 + 74 apps/client/src/app/components/user-account-settings/user-account-settings.html - 77 + 78 apps/client/src/app/components/user-account-settings/user-account-settings.html - 81 + 82 apps/client/src/app/pages/features/features-page.html @@ -1072,7 +1072,7 @@ Alias apps/client/src/app/components/access-table/access-table.component.html - 15 + 3 apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -1083,14 +1083,14 @@ Grantee apps/client/src/app/components/access-table/access-table.component.html - 22 + 10 Type apps/client/src/app/components/access-table/access-table.component.html - 29 + 17 apps/client/src/app/components/admin-jobs/admin-jobs.html @@ -1113,21 +1113,21 @@ Details apps/client/src/app/components/access-table/access-table.component.html - 39 + 27 Revoke apps/client/src/app/components/access-table/access-table.component.html - 66 + 54 Do you really want to revoke this granted access? apps/client/src/app/components/access-table/access-table.component.ts - 50 + 49 @@ -1164,7 +1164,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 44 + 46 @@ -1183,7 +1183,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 81 + 111 apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -1260,7 +1260,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 62 + 92 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1383,7 +1383,7 @@ Symbol apps/client/src/app/components/admin-jobs/admin-jobs.html - 50 + 45 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -1391,14 +1391,18 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 57 + 87 + + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 34 Data Source apps/client/src/app/components/admin-jobs/admin-jobs.html - 59 + 54 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -1413,70 +1417,70 @@ Attempts apps/client/src/app/components/admin-jobs/admin-jobs.html - 68 + 63 Created apps/client/src/app/components/admin-jobs/admin-jobs.html - 77 + 72 Finished apps/client/src/app/components/admin-jobs/admin-jobs.html - 86 + 81 Status apps/client/src/app/components/admin-jobs/admin-jobs.html - 95 + 90 Delete Jobs apps/client/src/app/components/admin-jobs/admin-jobs.html - 140 + 135 - - Asset Profile + + Asset Profiles - apps/client/src/app/components/admin-jobs/admin-jobs.html - 37 + libs/ui/src/lib/assistant/assistant.html + 67 - - Historical Market Data + + Historical Market Data apps/client/src/app/components/admin-jobs/admin-jobs.html - 42 + 37,39 View Data apps/client/src/app/components/admin-jobs/admin-jobs.html - 155 + 150 View Stacktrace apps/client/src/app/components/admin-jobs/admin-jobs.html - 162 + 157 Delete Job apps/client/src/app/components/admin-jobs/admin-jobs.html - 165 + 160 @@ -1520,11 +1524,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 195 + 225 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 18 + 40 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -1540,7 +1544,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 95 + 97 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -1563,11 +1567,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 202 + 232 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 25 + 47 apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html @@ -1583,7 +1587,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 102 + 104 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1615,7 +1619,7 @@ Filter by... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 269 + 279 @@ -1626,7 +1630,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 86 + 116 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1645,7 +1649,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 95 + 125 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1664,7 +1668,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 72 + 102 libs/ui/src/lib/holdings-table/holdings-table.component.html @@ -1684,6 +1688,10 @@ apps/client/src/app/components/admin-market-data/admin-market-data.html 78 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 58 + Sectors Count @@ -1742,7 +1750,7 @@ Sector apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 110 + 140 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1753,7 +1761,7 @@ Country apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 119 + 149 apps/client/src/app/components/admin-users/admin-users.html @@ -1768,7 +1776,7 @@ Sectors apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + 155 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1783,7 +1791,7 @@ Countries apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 135 + 165 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1794,25 +1802,25 @@ Symbol Mapping apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 160 + 190 Scraper Configuration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 171 + 201 Note apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 182 + 212 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 72 + 74 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1830,7 +1838,7 @@ Name, symbol or ISIN apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 10 + 25 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2012,7 +2020,7 @@ apps/client/src/app/components/header/header.component.html - 221 + 224 apps/client/src/app/pages/accounts/accounts-page.html @@ -2062,7 +2070,7 @@ apps/client/src/app/components/header/header.component.html - 189 + 192 @@ -2162,7 +2170,7 @@ apps/client/src/app/components/header/header.component.html - 203 + 206 @@ -2173,7 +2181,7 @@ apps/client/src/app/components/header/header.component.html - 213 + 216 @@ -2184,28 +2192,28 @@ apps/client/src/app/components/header/header.component.html - 237 + 240 Me apps/client/src/app/components/header/header.component.html - 170 + 173 My Ghostfolio apps/client/src/app/components/header/header.component.html - 228 + 231 About Ghostfolio apps/client/src/app/components/header/header.component.html - 268 + 271 apps/client/src/app/pages/about/overview/about-overview-page.html @@ -2216,7 +2224,7 @@ Sign in apps/client/src/app/components/header/header.component.html - 358 + 361 apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html @@ -2227,7 +2235,7 @@ Get started apps/client/src/app/components/header/header.component.html - 370 + 373 @@ -3022,7 +3030,7 @@ Account ID apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 89 + 91 @@ -3219,7 +3227,7 @@ Zen Mode apps/client/src/app/components/user-account-settings/user-account-settings.html - 136 + 137 apps/client/src/app/pages/features/features-page.html @@ -3883,6 +3891,10 @@ Import + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 80 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html 150 @@ -8872,7 +8884,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 35 + 31 @@ -8907,7 +8919,7 @@ Do you really want to remove this sign in method? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 184 + 181 @@ -8970,105 +8982,105 @@ Base Currency apps/client/src/app/components/user-account-settings/user-account-settings.html - 26 + 27 Language apps/client/src/app/components/user-account-settings/user-account-settings.html - 47 + 48 Locale apps/client/src/app/components/user-account-settings/user-account-settings.html - 90 + 91 Date and number format apps/client/src/app/components/user-account-settings/user-account-settings.html - 92 + 93 Appearance apps/client/src/app/components/user-account-settings/user-account-settings.html - 113 + 114 Auto apps/client/src/app/components/user-account-settings/user-account-settings.html - 125 + 126 Light apps/client/src/app/components/user-account-settings/user-account-settings.html - 126 + 127 Dark apps/client/src/app/components/user-account-settings/user-account-settings.html - 127 + 128 Distraction-free experience for turbulent times apps/client/src/app/components/user-account-settings/user-account-settings.html - 137,139 + 138,140 Biometric Authentication apps/client/src/app/components/user-account-settings/user-account-settings.html - 152 + 154 Sign in with fingerprint apps/client/src/app/components/user-account-settings/user-account-settings.html - 153 + 155 Experimental Features apps/client/src/app/components/user-account-settings/user-account-settings.html - 169 + 172 Sneak peek at upcoming functionality apps/client/src/app/components/user-account-settings/user-account-settings.html - 170,172 + 173,175 User ID apps/client/src/app/components/user-account-settings/user-account-settings.html - 184 + 188 Export Data apps/client/src/app/components/user-account-settings/user-account-settings.html - 191 + 195 @@ -9196,14 +9208,14 @@ Change from All Time High libs/ui/src/lib/benchmark/benchmark.component.html - 12 + 31 from ATH libs/ui/src/lib/benchmark/benchmark.component.html - 14 + 33 @@ -9624,13 +9636,6 @@ 85 - - Add Access - - apps/client/src/app/components/access-table/access-table.component.html - 8,10 - - You are using the Live Demo. @@ -9744,7 +9749,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 154 + 184 @@ -9769,7 +9774,7 @@ Find holding... libs/ui/src/lib/assistant/assistant.component.ts - 87 + 89 @@ -9826,7 +9831,11 @@ No entries... libs/ui/src/lib/assistant/assistant.html - 62 + 63 + + + libs/ui/src/lib/assistant/assistant.html + 84 @@ -9836,6 +9845,48 @@ 11 + + Asset Profile + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31,33 + + + + Last All Time High + + libs/ui/src/lib/benchmark/benchmark.component.html + 15 + + + + 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 + 182 + + + + 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 assets like stocks, ETFs or cryptocurrencies across multiple platforms. + + apps/client/src/app/pages/i18n/i18n-page.html + 4,7 + + From 73ac4b41975e12f91a860205d4d13cdec424549e Mon Sep 17 00:00:00 2001 From: Basim Mohammed <107759928+Basimohd@users.noreply.github.com> Date: Thu, 19 Oct 2023 19:21:31 +0530 Subject: [PATCH 053/194] Add chart to account detail dialog (#2502) * Add chart to account detail dialog * Update changelog --------- Co-authored-by: Thomas <4159106+dtslvr@users.noreply.github.com> --- CHANGELOG.md | 6 +++ .../account-detail-dialog.component.scss | 4 ++ .../account-detail-dialog.component.ts | 50 +++++++++++++++++-- .../account-detail-dialog.html | 11 ++++ .../account-detail-dialog.module.ts | 2 + 5 files changed, 69 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e8b280ac2..b1f881dc5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ 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 + +### Added + +- Added a chart to the account detail dialog + ## 2.12.0 - 2023-10-17 ### Added diff --git a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.scss b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.scss index b63df0134..8831fb01d 100644 --- a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.scss +++ b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.scss @@ -3,5 +3,9 @@ .mat-mdc-dialog-content { max-height: unset; + + .chart-container { + aspect-ratio: 16 / 9; + } } } diff --git a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts index 3a4746b6b..756df74cf 100644 --- a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts +++ b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts @@ -8,11 +8,11 @@ import { } from '@angular/core'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { DataService } from '@ghostfolio/client/services/data.service'; +import { ImpersonationStorageService } from '@ghostfolio/client/services/impersonation-storage.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; import { downloadAsFile } from '@ghostfolio/common/helper'; -import { User } from '@ghostfolio/common/interfaces'; +import { HistoricalDataItem, User } from '@ghostfolio/common/interfaces'; import { OrderWithAccount } from '@ghostfolio/common/types'; -import { translate } from '@ghostfolio/ui/i18n'; import Big from 'big.js'; import { format, parseISO } from 'date-fns'; import { isNumber } from 'lodash'; @@ -32,6 +32,9 @@ export class AccountDetailDialog implements OnDestroy, OnInit { public balance: number; public currency: string; public equity: number; + public hasImpersonationId: boolean; + public historicalDataItems: HistoricalDataItem[]; + public isLoadingChart: boolean; public name: string; public orders: OrderWithAccount[]; public platformName: string; @@ -46,6 +49,7 @@ export class AccountDetailDialog implements OnDestroy, OnInit { @Inject(MAT_DIALOG_DATA) public data: AccountDetailDialogParams, private dataService: DataService, public dialogRef: MatDialogRef, + private impersonationStorageService: ImpersonationStorageService, private userService: UserService ) { this.userService.stateChanged @@ -59,7 +63,9 @@ export class AccountDetailDialog implements OnDestroy, OnInit { }); } - public ngOnInit(): void { + public ngOnInit() { + this.isLoadingChart = true; + this.dataService .fetchAccount(this.data.accountId) .pipe(takeUntil(this.unsubscribeSubject)) @@ -101,9 +107,45 @@ export class AccountDetailDialog implements OnDestroy, OnInit { this.changeDetectorRef.markForCheck(); }); + + this.dataService + .fetchPortfolioPerformance({ + filters: [ + { + id: this.data.accountId, + type: 'ACCOUNT' + } + ], + range: 'max' + }) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(({ chart }) => { + this.historicalDataItems = chart.map( + ({ date, value, valueInPercentage }) => { + return { + date, + value: + this.hasImpersonationId || this.user.settings.isRestrictedView + ? valueInPercentage + : value + }; + } + ); + + this.isLoadingChart = false; + + this.changeDetectorRef.markForCheck(); + }); + + this.impersonationStorageService + .onChangeHasImpersonation() + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe((impersonationId) => { + this.hasImpersonationId = !!impersonationId; + }); } - public onClose(): void { + public onClose() { this.dialogRef.close(); } diff --git a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html index 46a5ee7b0..02d1c917e 100644 --- a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html +++ b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html @@ -20,6 +20,17 @@
    +
    + +
    +
    Date: Thu, 19 Oct 2023 20:28:01 +0530 Subject: [PATCH 054/194] Migrated users table in Admin Control to mat-table (#2469) * Migrated users table in Admin Control to mat-table * Update changelog --- CHANGELOG.md | 4 + .../admin-users/admin-users.component.ts | 30 +- .../components/admin-users/admin-users.html | 344 +++++++++++------- .../admin-users/admin-users.module.ts | 4 +- 4 files changed, 255 insertions(+), 127 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b1f881dc5..caf00d539 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added a chart to the account detail dialog +### Changed + +- Changed the users table in the admin control panel to an `@angular/material` data table + ## 2.12.0 - 2023-10-17 ### Added diff --git a/apps/client/src/app/components/admin-users/admin-users.component.ts b/apps/client/src/app/components/admin-users/admin-users.component.ts index 48783c91b..7cccfe2f7 100644 --- a/apps/client/src/app/components/admin-users/admin-users.component.ts +++ b/apps/client/src/app/components/admin-users/admin-users.component.ts @@ -1,4 +1,5 @@ import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; +import { MatTableDataSource } from '@angular/material/table'; import { AdminService } from '@ghostfolio/client/services/admin.service'; import { DataService } from '@ghostfolio/client/services/data.service'; import { ImpersonationStorageService } from '@ghostfolio/client/services/impersonation-storage.service'; @@ -20,13 +21,15 @@ import { takeUntil } from 'rxjs/operators'; templateUrl: './admin-users.html' }) export class AdminUsersComponent implements OnDestroy, OnInit { + public dataSource: MatTableDataSource = + new MatTableDataSource(); public defaultDateFormat: string; + public displayedColumns: string[] = []; public getEmojiFlag = getEmojiFlag; public hasPermissionForSubscription: boolean; public hasPermissionToImpersonateAllUsers: boolean; public info: InfoItem; public user: User; - public users: AdminData['users']; private unsubscribeSubject = new Subject(); @@ -44,6 +47,29 @@ export class AdminUsersComponent implements OnDestroy, OnInit { permissions.enableSubscription ); + if (this.hasPermissionForSubscription) { + this.displayedColumns = [ + 'index', + 'user', + 'country', + 'registration', + 'accounts', + 'activities', + 'engagementPerDay', + 'lastRequest', + 'actions' + ]; + } else { + this.displayedColumns = [ + 'index', + 'user', + 'registration', + 'accounts', + 'activities', + 'actions' + ]; + } + this.userService.stateChanged .pipe(takeUntil(this.unsubscribeSubject)) .subscribe((state) => { @@ -118,7 +144,7 @@ export class AdminUsersComponent implements OnDestroy, OnInit { .fetchAdminData() .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(({ users }) => { - this.users = users; + this.dataSource = new MatTableDataSource(users); this.changeDetectorRef.markForCheck(); }); diff --git a/apps/client/src/app/components/admin-users/admin-users.html b/apps/client/src/app/components/admin-users/admin-users.html index 71166a6e1..b6e296b95 100644 --- a/apps/client/src/app/components/admin-users/admin-users.html +++ b/apps/client/src/app/components/admin-users/admin-users.html @@ -2,136 +2,232 @@
    -
    Alias - - - - Asset Profile - - - Historical Market Data - - + + Asset Profile + + + Historical Market Data + + Last All Time High + +
    + +
    +
    + Change from All Time High from ATH + 0 }" - [value]=" - element?.performances?.allTimeHigh?.performancePercent ?? undefined - " + [value]="element?.performances?.allTimeHigh?.performancePercent" >
    - - - - - - - - - - - - - - - - - - + + + + + + - - - - + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + +
    #User - Country - - Registration - - Accounts - - Activities - - Engagement per Day - - Last Request -
    {{ i + 1 }} -
    - {{ userItem.id }} - {{ (userItem.id | slice:0:5) + '...' }} - -
    -
    - {{ getEmojiFlag(userItem.country) }} + + + # + + {{ i + 1 }} + + User + +
    + {{ element.id }} + {{ (element.id | slice:0:5) + '...' }} -
    - {{ formatDistanceToNow(userItem.createdAt) }} - - - - - + + + Country + + {{ getEmojiFlag(element.country) }} - - + + + + + Registration + + {{ formatDistanceToNow(element.createdAt) }} + + Accounts + + + + Activities + + + + Engagement per Day + + + + Last Request + + {{ formatDistanceToNow(element.lastActivity) }} + + + + + + - - - - -
    diff --git a/apps/client/src/app/components/admin-users/admin-users.module.ts b/apps/client/src/app/components/admin-users/admin-users.module.ts index 8c381b205..689b39787 100644 --- a/apps/client/src/app/components/admin-users/admin-users.module.ts +++ b/apps/client/src/app/components/admin-users/admin-users.module.ts @@ -2,6 +2,7 @@ import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatMenuModule } from '@angular/material/menu'; +import { MatTableModule } from '@angular/material/table'; import { GfPremiumIndicatorModule } from '@ghostfolio/ui/premium-indicator'; import { GfValueModule } from '@ghostfolio/ui/value'; @@ -15,7 +16,8 @@ import { AdminUsersComponent } from './admin-users.component'; GfPremiumIndicatorModule, GfValueModule, MatButtonModule, - MatMenuModule + MatMenuModule, + MatTableModule ], schemas: [CUSTOM_ELEMENTS_SCHEMA] }) From 29028a81f5dab592a6af571af14940744fb60a50 Mon Sep 17 00:00:00 2001 From: Aldrin <53973174+Dhoni77@users.noreply.github.com> Date: Thu, 19 Oct 2023 20:43:40 +0530 Subject: [PATCH 055/194] Add i18n service to query XML files (#2503) * Add i18n service to query XML files * Update changelog --------- Co-authored-by: Thomas <4159106+dtslvr@users.noreply.github.com> --- CHANGELOG.md | 1 + .../middlewares/html-template.middleware.ts | 19 ++---- apps/api/src/services/i18n/i18n.service.ts | 67 +++++++++++++++++++ 3 files changed, 75 insertions(+), 12 deletions(-) create mode 100644 apps/api/src/services/i18n/i18n.service.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index caf00d539..e3c00bdc2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Added a chart to the account detail dialog +- Added an `i18n` service to query `messages.*.xlf` files on the server ### Changed diff --git a/apps/api/src/middlewares/html-template.middleware.ts b/apps/api/src/middlewares/html-template.middleware.ts index 9d44bdbe0..f0358eca6 100644 --- a/apps/api/src/middlewares/html-template.middleware.ts +++ b/apps/api/src/middlewares/html-template.middleware.ts @@ -2,6 +2,7 @@ import * as fs from 'fs'; import { join } from 'path'; import { environment } from '@ghostfolio/api/environments/environment'; +import { I18nService } from '@ghostfolio/api/services/i18n/i18n.service'; import { DEFAULT_LANGUAGE_CODE, DEFAULT_ROOT_URL, @@ -11,20 +12,11 @@ import { DATE_FORMAT, interpolate } from '@ghostfolio/common/helper'; import { format } from 'date-fns'; import { NextFunction, Request, Response } from 'express'; -const descriptions = { - de: 'Mit dem Finanz-Dashboard Ghostfolio können Sie Ihr Vermögen in Form von Aktien, ETFs oder Kryptowährungen verteilt über mehrere Finanzinstitute überwachen.', - en: 'Ghostfolio is a personal finance dashboard to keep track of your assets like stocks, ETFs or cryptocurrencies across multiple platforms.', - es: 'Ghostfolio es un dashboard de finanzas personales para hacer un seguimiento de tus activos como acciones, ETFs o criptodivisas a través de múltiples plataformas.', - fr: 'Ghostfolio est un dashboard de finances personnelles qui permet de suivre vos actifs comme les actions, les ETF ou les crypto-monnaies sur plusieurs plateformes.', - it: 'Ghostfolio è un dashboard di finanza personale per tenere traccia delle vostre attività come azioni, ETF o criptovalute su più piattaforme.', - nl: 'Ghostfolio is een persoonlijk financieel dashboard om uw activa zoals aandelen, ETF’s of cryptocurrencies over meerdere platforms bij te houden.', - pt: 'Ghostfolio é um dashboard de finanças pessoais para acompanhar os seus activos como acções, ETFs ou criptomoedas em múltiplas plataformas.', - tr: 'Ghostfolio, hisse senetleri, ETF’ler veya kripto para birimleri gibi varlıklarınızı birden fazla platformda takip etmenizi sağlayan bir kişisel finans panosudur.' -}; - const title = 'Ghostfolio – Open Source Wealth Management Software'; const titleShort = 'Ghostfolio'; +const i18nService = new I18nService(); + let indexHtmlMap: { [languageCode: string]: string } = {}; try { @@ -130,7 +122,10 @@ export const HtmlTemplateMiddleware = async ( languageCode, path, rootUrl, - description: descriptions[languageCode], + description: i18nService.getTranslation({ + languageCode, + id: 'metaDescription' + }), featureGraphicPath: locales[path]?.featureGraphicPath ?? 'assets/cover.png', title: locales[path]?.title ?? title diff --git a/apps/api/src/services/i18n/i18n.service.ts b/apps/api/src/services/i18n/i18n.service.ts new file mode 100644 index 000000000..35c7b638d --- /dev/null +++ b/apps/api/src/services/i18n/i18n.service.ts @@ -0,0 +1,67 @@ +import { readFileSync, readdirSync } from 'fs'; +import { join } from 'path'; + +import { DEFAULT_LANGUAGE_CODE } from '@ghostfolio/common/config'; +import { Logger } from '@nestjs/common'; +import * as cheerio from 'cheerio'; + +export class I18nService { + private localesPath = join(__dirname, 'assets', 'locales'); + private translations: { [locale: string]: cheerio.CheerioAPI } = {}; + + public constructor() { + this.loadFiles(); + } + + public getTranslation({ + id, + languageCode + }: { + id: string; + languageCode: string; + }): string { + const $ = this.translations[languageCode]; + + if (!$) { + Logger.warn(`Translation not found for locale '${languageCode}'`); + } + + const translatedText = $( + `trans-unit[id="${id}"] > ${ + languageCode === DEFAULT_LANGUAGE_CODE ? 'source' : 'target' + }` + ).text(); + + if (!translatedText) { + Logger.warn( + `Translation not found for id '${id}' in locale '${languageCode}'` + ); + } + + return translatedText; + } + + private loadFiles() { + try { + const files = readdirSync(this.localesPath, 'utf-8'); + + for (const file of files) { + const xmlData = readFileSync(join(this.localesPath, file), 'utf8'); + this.translations[this.parseLanguageCode(file)] = + this.parseXml(xmlData); + } + } catch (error) { + Logger.error(error, 'I18nService'); + } + } + + private parseLanguageCode(aFileName: string) { + const match = aFileName.match(/\.([a-zA-Z]+)\.xlf$/); + + return match ? match[1] : DEFAULT_LANGUAGE_CODE; + } + + private parseXml(xmlData: string): cheerio.CheerioAPI { + return cheerio.load(xmlData, { xmlMode: true }); + } +} From f66edf8de04bcda892ab83b9b458e1d5256853d4 Mon Sep 17 00:00:00 2001 From: Basim Mohammed <107759928+Basimohd@users.noreply.github.com> Date: Fri, 20 Oct 2023 11:48:34 +0530 Subject: [PATCH 056/194] Add membership card component (#2507) * Add membership card component * Update changelog --------- Co-authored-by: Thomas <4159106+dtslvr@users.noreply.github.com> --- CHANGELOG.md | 1 + .../user-account-membership.html | 18 ++++--------- .../user-account-membership.module.ts | 2 ++ libs/ui/src/lib/logo/logo.component.html | 6 ++++- libs/ui/src/lib/logo/logo.component.ts | 1 + libs/ui/src/lib/membership-card/index.ts | 1 + .../membership-card.component.html | 25 +++++++++++++++++++ .../membership-card.component.scss | 24 ++++++++++++++++++ .../membership-card.component.ts | 14 +++++++++++ .../membership-card/membership-card.module.ts | 14 +++++++++++ 10 files changed, 92 insertions(+), 14 deletions(-) create mode 100644 libs/ui/src/lib/membership-card/index.ts create mode 100644 libs/ui/src/lib/membership-card/membership-card.component.html create mode 100644 libs/ui/src/lib/membership-card/membership-card.component.scss create mode 100644 libs/ui/src/lib/membership-card/membership-card.component.ts create mode 100644 libs/ui/src/lib/membership-card/membership-card.module.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index e3c00bdc2..2c7cf1b21 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,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 ## 2.12.0 - 2023-10-17 diff --git a/apps/client/src/app/components/user-account-membership/user-account-membership.html b/apps/client/src/app/components/user-account-membership/user-account-membership.html index 1681e3e16..191c63184 100644 --- a/apps/client/src/app/components/user-account-membership/user-account-membership.html +++ b/apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -2,21 +2,13 @@

    Membership

    +
    - -
    - Valid until {{ - user?.subscription?.expiresAt | date: defaultDateFormat }} -
    + > {{ label ?? 'Ghostfolio' }} diff --git a/libs/ui/src/lib/logo/logo.component.ts b/libs/ui/src/lib/logo/logo.component.ts index ecb3885dc..648e771dd 100644 --- a/libs/ui/src/lib/logo/logo.component.ts +++ b/libs/ui/src/lib/logo/logo.component.ts @@ -13,6 +13,7 @@ import { }) export class LogoComponent { @HostBinding('class') @Input() size: 'large' | 'medium' = 'medium'; + @Input() color: string; @Input() label: string; @Input() showLabel = true; diff --git a/libs/ui/src/lib/membership-card/index.ts b/libs/ui/src/lib/membership-card/index.ts new file mode 100644 index 000000000..eccd8c4fd --- /dev/null +++ b/libs/ui/src/lib/membership-card/index.ts @@ -0,0 +1 @@ +export * from './membership-card.module'; diff --git a/libs/ui/src/lib/membership-card/membership-card.component.html b/libs/ui/src/lib/membership-card/membership-card.component.html new file mode 100644 index 000000000..048a6b79a --- /dev/null +++ b/libs/ui/src/lib/membership-card/membership-card.component.html @@ -0,0 +1,25 @@ + +
    + +
    +
    +
    +
    Membership
    +
    {{ name }}
    +
    +
    +
    Valid until
    +
    + {{ expiresAt }} +
    +
    +
    +
    diff --git a/libs/ui/src/lib/membership-card/membership-card.component.scss b/libs/ui/src/lib/membership-card/membership-card.component.scss new file mode 100644 index 000000000..e9a83a67b --- /dev/null +++ b/libs/ui/src/lib/membership-card/membership-card.component.scss @@ -0,0 +1,24 @@ +:host { + display: block; + max-width: 25rem; + + .card-item { + aspect-ratio: 1.586; + background-color: #343a40 !important; + border-radius: 1rem; + box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3); + + &.premium { + background-color: #1d2124 !important; + } + + .card-item-heading { + font-size: 13px; + } + + .card-item-name { + color: rgba(var(--light-primary-text)); + font-size: 18px; + } + } +} diff --git a/libs/ui/src/lib/membership-card/membership-card.component.ts b/libs/ui/src/lib/membership-card/membership-card.component.ts new file mode 100644 index 000000000..0ae760aba --- /dev/null +++ b/libs/ui/src/lib/membership-card/membership-card.component.ts @@ -0,0 +1,14 @@ +import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; + +@Component({ + changeDetection: ChangeDetectionStrategy.OnPush, + selector: 'gf-membership-card', + styleUrls: ['./membership-card.component.scss'], + templateUrl: './membership-card.component.html' +}) +export class MembershipCardComponent { + @Input() public expiresAt: string; + @Input() public name: string; + + public routerLinkPricing = ['/' + $localize`pricing`]; +} diff --git a/libs/ui/src/lib/membership-card/membership-card.module.ts b/libs/ui/src/lib/membership-card/membership-card.module.ts new file mode 100644 index 000000000..4f51cc756 --- /dev/null +++ b/libs/ui/src/lib/membership-card/membership-card.module.ts @@ -0,0 +1,14 @@ +import { CommonModule } from '@angular/common'; +import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; +import { GfLogoModule } from '@ghostfolio/ui/logo'; + +import { MembershipCardComponent } from './membership-card.component'; + +@NgModule({ + declarations: [MembershipCardComponent], + exports: [MembershipCardComponent], + imports: [CommonModule, GfLogoModule, RouterModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA] +}) +export class GfMembershipCardModule {} From e7956943babea4ebbac47c356611accd3808f356 Mon Sep 17 00:00:00 2001 From: Arshad Jamal Date: Fri, 20 Oct 2023 11:51:23 +0530 Subject: [PATCH 057/194] Make holdings request only once (#2453) * Make holdings request only once * Update changelog --- CHANGELOG.md | 4 ++++ .../app/components/home-holdings/home-holdings.component.ts | 2 -- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2c7cf1b21..643df3522 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Changed the users table in the admin control panel to an `@angular/material` data table - Improved the styling of the membership status +### Fixed + +- Fixed an issue where holdings were requested twice from the server + ## 2.12.0 - 2023-10-17 ### Added diff --git a/apps/client/src/app/components/home-holdings/home-holdings.component.ts b/apps/client/src/app/components/home-holdings/home-holdings.component.ts index a83e71e88..bae022133 100644 --- a/apps/client/src/app/components/home-holdings/home-holdings.component.ts +++ b/apps/client/src/app/components/home-holdings/home-holdings.component.ts @@ -81,8 +81,6 @@ export class HomeHoldingsComponent implements OnDestroy, OnInit { .subscribe((impersonationId) => { this.hasImpersonationId = !!impersonationId; }); - - this.update(); } public onChangeDateRange(dateRange: DateRange) { From 60b2115e3b0dad5dc2f22465f3b6bda88dbb4996 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 20 Oct 2023 08:24:49 +0200 Subject: [PATCH 058/194] Release 2.13.0 (#2514) --- CHANGELOG.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 643df3522..169995508 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ 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.13.0 - 2023-10-20 ### Added diff --git a/package.json b/package.json index 3b5247252..f09c428d3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.12.0", + "version": "2.13.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From 750c6276138389334f26e083fe48158c9b7df3ab Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 20 Oct 2023 17:37:55 +0200 Subject: [PATCH 059/194] Feature/allow to edit market data of today (#2515) * Allow to edit today's market data * Update changelog --- CHANGELOG.md | 6 ++++++ .../admin-market-data-detail.component.html | 6 +++++- .../admin-market-data-detail.component.scss | 1 - .../admin-market-data-detail.component.ts | 10 +++------- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 169995508..69ea038f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ 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 + +### Changed + +- Allowed to edit today’s historical market data in the asset profile details dialog of the admin control panel + ## 2.13.0 - 2023-10-20 ### Added diff --git a/apps/client/src/app/components/admin-market-data-detail/admin-market-data-detail.component.html b/apps/client/src/app/components/admin-market-data-detail/admin-market-data-detail.component.html index d6f67faa3..c6e972f45 100644 --- a/apps/client/src/app/components/admin-market-data-detail/admin-market-data-detail.component.html +++ b/apps/client/src/app/components/admin-market-data-detail/admin-market-data-detail.component.html @@ -9,7 +9,11 @@ [showYAxis]="true" [symbol]="symbol" > -
    +
    {{ itemByMonth.key }}
    { + this.historicalDataItems = this.marketData.map(({ date, marketPrice }) => { return { - date: format(marketDataItem.date, DATE_FORMAT), - value: marketDataItem.marketPrice + date: format(date, DATE_FORMAT), + value: marketPrice }; }); @@ -157,10 +157,6 @@ export class AdminMarketDataDetailComponent implements OnChanges, OnInit { const date = parseISO(`${yearMonth}-${day}`); const marketPrice = this.marketDataByMonth[yearMonth]?.[day]?.marketPrice; - if (isSameDay(date, new Date())) { - return; - } - const dialogRef = this.dialog.open(MarketDataDetailDialog, { data: { date, From 6a19eab425a3e38a6faec427840658bfa0660cdc Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 20 Oct 2023 22:05:27 +0200 Subject: [PATCH 060/194] Feature/improve membership card (#2517) * Improve style * Add animated border --- .../user-account-membership.html | 68 ++++++++++--------- libs/ui/src/lib/logo/logo.component.html | 6 +- libs/ui/src/lib/logo/logo.component.scss | 8 +-- libs/ui/src/lib/logo/logo.component.ts | 1 - .../membership-card.component.html | 44 ++++++------ .../membership-card.component.scss | 66 ++++++++++++++---- 6 files changed, 115 insertions(+), 78 deletions(-) diff --git a/apps/client/src/app/components/user-account-membership/user-account-membership.html b/apps/client/src/app/components/user-account-membership/user-account-membership.html index 191c63184..4031ce9a0 100644 --- a/apps/client/src/app/components/user-account-membership/user-account-membership.html +++ b/apps/client/src/app/components/user-account-membership/user-account-membership.html @@ -2,40 +2,42 @@

    Membership

    - -
    -
    -
    - - -
    - {{ baseCurrency }} {{ price }} {{ baseCurrency }} {{ price - coupon - }} - {{ baseCurrency }} {{ price }} per year -
    -
    +
    + +
    + + +
    + {{ baseCurrency }} {{ price }} {{ baseCurrency }} {{ price - coupon + }} + {{ baseCurrency }} {{ price }} per year +
    +
    +
    Try Premium @@ -46,7 +48,7 @@ > + > {{ label ?? 'Ghostfolio' }} diff --git a/libs/ui/src/lib/logo/logo.component.scss b/libs/ui/src/lib/logo/logo.component.scss index 27fb1b311..c1ab3776a 100644 --- a/libs/ui/src/lib/logo/logo.component.scss +++ b/libs/ui/src/lib/logo/logo.component.scss @@ -4,18 +4,12 @@ } .logo { - background-color: rgba(var(--dark-primary-text)); + background-color: currentColor; margin-top: -2px; mask: url('/assets/ghost.svg') no-repeat center; } } -:host-context(.is-dark-theme) { - .logo { - background-color: rgba(var(--light-primary-text)); - } -} - :host-context(.large) { .label { font-size: 3rem; diff --git a/libs/ui/src/lib/logo/logo.component.ts b/libs/ui/src/lib/logo/logo.component.ts index 648e771dd..ecb3885dc 100644 --- a/libs/ui/src/lib/logo/logo.component.ts +++ b/libs/ui/src/lib/logo/logo.component.ts @@ -13,7 +13,6 @@ import { }) export class LogoComponent { @HostBinding('class') @Input() size: 'large' | 'medium' = 'medium'; - @Input() color: string; @Input() label: string; @Input() showLabel = true; diff --git a/libs/ui/src/lib/membership-card/membership-card.component.html b/libs/ui/src/lib/membership-card/membership-card.component.html index 048a6b79a..d069274ca 100644 --- a/libs/ui/src/lib/membership-card/membership-card.component.html +++ b/libs/ui/src/lib/membership-card/membership-card.component.html @@ -1,25 +1,29 @@ - -
    - -
    -
    -
    -
    Membership
    -
    {{ name }}
    +
    +
    +
    -
    diff --git a/libs/ui/src/lib/membership-card/membership-card.component.scss b/libs/ui/src/lib/membership-card/membership-card.component.scss index e9a83a67b..a7cbce91a 100644 --- a/libs/ui/src/lib/membership-card/membership-card.component.scss +++ b/libs/ui/src/lib/membership-card/membership-card.component.scss @@ -1,24 +1,66 @@ :host { + --borderRadius: 1rem; + --borderWidth: 2px; + display: block; max-width: 25rem; + padding-top: calc(1 * var(--borderWidth)); + width: 100%; - .card-item { - aspect-ratio: 1.586; - background-color: #343a40 !important; - border-radius: 1rem; - box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3); + .card-container { + border-radius: var(--borderRadius); + box-shadow: 0 5px 15px rgba(0, 0, 0, 0.15); - &.premium { - background-color: #1d2124 !important; - } + &:after { + animation: animatedborder 7s ease alternate infinite; + background: linear-gradient(60deg, #5073b8, #1098ad, #07b39b, #6fba82); + background-size: 300% 300%; + border-radius: var(--borderRadius); + content: ''; + height: calc(100% + var(--borderWidth) * 2); + left: calc(-1 * var(--borderWidth)); + top: calc(-1 * var(--borderWidth)); + position: absolute; + width: calc(100% + var(--borderWidth) * 2); + z-index: -1; - .card-item-heading { - font-size: 13px; + @keyframes animatedborder { + 0% { + background-position: 0% 50%; + } + 50% { + background-position: 100% 50%; + } + 100% { + background-position: 0% 50%; + } + } } - .card-item-name { + .card-item { + aspect-ratio: 1.586; + background-color: #1d2124; + border-radius: calc(var(--borderRadius) - var(--borderWidth)); color: rgba(var(--light-primary-text)); - font-size: 18px; + + .heading { + font-size: 13px; + } + + .value { + font-size: 18px; + } + } + + &:not(.premium) { + &:after { + opacity: 0; + } + + .card-item { + background-color: #ffffff; + color: rgba(var(--dark-primary-text)); + } } } } From ac0ad48a65ad50d5d427eea38fc767187d0175bb Mon Sep 17 00:00:00 2001 From: Don L Date: Fri, 20 Oct 2023 13:07:57 -0700 Subject: [PATCH 061/194] Display invalid activity in csv import (#2460) * Display invalid activity in csv import * Update changelog --- CHANGELOG.md | 1 + .../import-activities-dialog.component.ts | 4 +++- test/import/invalid-multi-line.csv | 5 +++++ 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 test/import/invalid-multi-line.csv diff --git a/CHANGELOG.md b/CHANGELOG.md index 69ea038f7..c909a68b4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Improved the error message in the activities import for `csv` files - Allowed to edit today’s historical market data in the asset profile details dialog of the admin control panel ## 2.13.0 - 2023-10-20 diff --git a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts index d11cafdb9..1427af92f 100644 --- a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts +++ b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -267,6 +267,8 @@ export class ImportActivitiesDialog implements OnDestroy { return; } else if (file.name.endsWith('.csv')) { + const content = fileContent.split('\n').slice(1); + try { const data = await this.importActivitiesService.importCsv({ fileContent, @@ -277,7 +279,7 @@ export class ImportActivitiesDialog implements OnDestroy { } catch (error) { console.error(error); this.handleImportError({ - activities: error?.activities ?? [], + activities: error?.activities ?? content, error: { error: { message: error?.error?.message ?? [error?.message] } } diff --git a/test/import/invalid-multi-line.csv b/test/import/invalid-multi-line.csv new file mode 100644 index 000000000..ed9da3378 --- /dev/null +++ b/test/import/invalid-multi-line.csv @@ -0,0 +1,5 @@ +Date,Code,Currency,Price,Quantity,Action,Fee,Note +16-09-2021,MSFT,USD,298.580,5,buy,19.00,My first order 🤓 +17/11/2021,MSFT,USD,0.62,5,dividend,0.00 +01.01.2022,Penthouse Apartment,USD,500000.0,1,,0.00 +20500606,MSFT,USD,0.00,0,buy,0.00 From 1666486940c12aaec4e7ef301c9fac3c7f72f89f Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 20 Oct 2023 22:36:03 +0200 Subject: [PATCH 062/194] Bugfix/trim text in i18n service (#2520) * Trim text * Update changelog --- CHANGELOG.md | 4 ++++ apps/api/src/services/i18n/i18n.service.ts | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c909a68b4..4c0c70bb6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the error message in the activities import for `csv` files - Allowed to edit today’s historical market data in the asset profile details dialog of the admin control panel +### Fixed + +- Trimmed text in `i18n` service to query `messages.*.xlf` files on the server + ## 2.13.0 - 2023-10-20 ### Added diff --git a/apps/api/src/services/i18n/i18n.service.ts b/apps/api/src/services/i18n/i18n.service.ts index 35c7b638d..39dab2d06 100644 --- a/apps/api/src/services/i18n/i18n.service.ts +++ b/apps/api/src/services/i18n/i18n.service.ts @@ -38,7 +38,7 @@ export class I18nService { ); } - return translatedText; + return translatedText.trim(); } private loadFiles() { From a59f9fa037f514505a6c77b5e65b29b66e66bbd1 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 21 Oct 2023 09:41:07 +0200 Subject: [PATCH 063/194] Feature/remove version from client (#2522) * Remove version * Update changelog --- CHANGELOG.md | 1 + apps/client/src/app/app.component.html | 1 - apps/client/src/app/app.component.ts | 2 -- .../app/components/admin-overview/admin-overview.component.ts | 1 - .../app/pages/about/overview/about-overview-page.component.ts | 2 -- .../src/app/pages/about/overview/about-overview-page.html | 3 --- apps/client/src/environments/environment.prod.ts | 3 +-- apps/client/src/environments/environment.ts | 3 +-- 8 files changed, 3 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c0c70bb6..27f5aaedc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Improved the error message in the activities import for `csv` files +- Removed the application version from the client - Allowed to edit today’s historical market data in the asset profile details dialog of the admin control panel ### Fixed diff --git a/apps/client/src/app/app.component.html b/apps/client/src/app/app.component.html index a52261969..e792598a7 100644 --- a/apps/client/src/app/app.component.html +++ b/apps/client/src/app/app.component.html @@ -165,7 +165,6 @@
    © 2021 - {{ currentYear }} Ghostfolio - {{ version }}
    diff --git a/apps/client/src/app/app.component.ts b/apps/client/src/app/app.component.ts index d1d9529ce..2317279b1 100644 --- a/apps/client/src/app/app.component.ts +++ b/apps/client/src/app/app.component.ts @@ -17,7 +17,6 @@ import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject } from 'rxjs'; import { filter, takeUntil } from 'rxjs/operators'; -import { environment } from '../environments/environment'; import { DataService } from './services/data.service'; import { TokenStorageService } from './services/token-storage.service'; import { UserService } from './services/user/user.service'; @@ -60,7 +59,6 @@ export class AppComponent implements OnDestroy, OnInit { public routerLinkResources = ['/' + $localize`resources`]; public showFooter = false; public user: User; - public version = environment.version; private unsubscribeSubject = new Subject(); diff --git a/apps/client/src/app/components/admin-overview/admin-overview.component.ts b/apps/client/src/app/components/admin-overview/admin-overview.component.ts index b1e91dfc9..97573cdbe 100644 --- a/apps/client/src/app/components/admin-overview/admin-overview.component.ts +++ b/apps/client/src/app/components/admin-overview/admin-overview.component.ts @@ -1,6 +1,5 @@ import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; import { MatCheckboxChange } from '@angular/material/checkbox'; -import { environment } from '@ghostfolio/client/../environments/environment'; import { AdminService } from '@ghostfolio/client/services/admin.service'; import { CacheService } from '@ghostfolio/client/services/cache.service'; import { DataService } from '@ghostfolio/client/services/data.service'; diff --git a/apps/client/src/app/pages/about/overview/about-overview-page.component.ts b/apps/client/src/app/pages/about/overview/about-overview-page.component.ts index 471874dc2..4c15f73b0 100644 --- a/apps/client/src/app/pages/about/overview/about-overview-page.component.ts +++ b/apps/client/src/app/pages/about/overview/about-overview-page.component.ts @@ -1,5 +1,4 @@ import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; -import { environment } from '@ghostfolio/client/../environments/environment'; import { DataService } from '@ghostfolio/client/services/data.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; import { User } from '@ghostfolio/common/interfaces'; @@ -20,7 +19,6 @@ export class AboutOverviewPageComponent implements OnDestroy, OnInit { public routerLinkFaq = ['/' + $localize`faq`]; public routerLinkFeatures = ['/' + $localize`features`]; public user: User; - public version = environment.version; private unsubscribeSubject = new Subject(); diff --git a/apps/client/src/app/pages/about/overview/about-overview-page.html b/apps/client/src/app/pages/about/overview/about-overview-page.html index a9bada763..4dc9fbf78 100644 --- a/apps/client/src/app/pages/about/overview/about-overview-page.html +++ b/apps/client/src/app/pages/about/overview/about-overview-page.html @@ -35,9 +35,6 @@ title="Contributors to Ghostfolio" >contributors. - - This instance is running Ghostfolio {{ version }}. - Check the system status at Date: Sat, 21 Oct 2023 10:25:05 +0200 Subject: [PATCH 064/194] Feature/change fees interest and search to general availability (#2525) * Change features to general availability * Fees on account level * Interest on account level * Search for a holding * Update changelog * Add documentation for experimental features --- CHANGELOG.md | 3 +++ DEVELOPMENT.md | 12 ++++++++++++ apps/api/src/app/user/user.service.ts | 8 ++++---- .../create-or-update-activity-dialog.html | 10 ++-------- 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 27f5aaedc..e32a20c45 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Moved the fees on account level feature from experimental to general availability +- Moved the interest on account level feature from experimental to general availability +- Moved the search for a holding from experimental to general availability - Improved the error message in the activities import for `csv` files - Removed the application version from the client - Allowed to edit today’s historical market data in the asset profile details dialog of the admin control panel diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index a950e5672..ea581c8cf 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -1,5 +1,17 @@ # Ghostfolio Development Guide +## Experimental Features + +New functionality can be enabled using a feature flag switch from the user settings. + +### Backend + +Remove permission in `UserService` using `without()` + +### Frontend + +Use `*ngIf="user?.settings?.isExperimentalFeatures"` in HTML template + ## Git ### Rebase diff --git a/apps/api/src/app/user/user.service.ts b/apps/api/src/app/user/user.service.ts index a176c43f3..91490528e 100644 --- a/apps/api/src/app/user/user.service.ts +++ b/apps/api/src/app/user/user.service.ts @@ -164,10 +164,10 @@ export class UserService { let currentPermissions = getPermissions(user.role); if (!(user.Settings.settings as UserSettings).isExperimentalFeatures) { - currentPermissions = without( - currentPermissions, - permissions.accessAssistant - ); + // currentPermissions = without( + // currentPermissions, + // permissions.xyz + // ); } if (this.configurationService.get('ENABLE_FEATURE_SUBSCRIPTION')) { diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html index 4e600b110..c28f87d93 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -21,10 +21,7 @@ >Stocks, ETFs, bonds, cryptocurrencies, commodities - + {{ typesTranslationMap['FEE'] }} One-time fee, annual account feesDistribution of corporate earnings - + {{ typesTranslationMap['INTEREST'] }} Revenue for lending out money Date: Sat, 21 Oct 2023 18:12:50 +0200 Subject: [PATCH 065/194] Feature/setup open figi (#2526) * Setup OpenFIGI * Update changelog --- CHANGELOG.md | 5 ++ apps/api/src/app/import/import.service.ts | 9 ++ .../configuration/configuration.service.ts | 1 + .../data-gathering/data-gathering.service.ts | 9 ++ .../data-enhancer/data-enhancer.module.ts | 10 ++- .../openfigi/openfigi.service.ts | 85 +++++++++++++++++++ .../interfaces/environment.interface.ts | 1 + libs/common/src/lib/helper.ts | 9 ++ .../migration.sql | 5 ++ prisma/schema.prisma | 3 + 10 files changed, 136 insertions(+), 1 deletion(-) create mode 100644 apps/api/src/services/data-provider/data-enhancer/openfigi/openfigi.service.ts create mode 100644 prisma/migrations/20231021094346_added_figi_figi_composite_and_figi_share_class_to_symbol_profile/migration.sql diff --git a/CHANGELOG.md b/CHANGELOG.md index e32a20c45..0fe6d0aa1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Added + +- Added the _OpenFIGI_ data enhancer for _Financial Instrument Global Identifier_ (FIGI) +- Added `figi`, `figiComposite` and `figiShareClass` to the asset profile model + ### Changed - Moved the fees on account level feature from experimental to general availability diff --git a/apps/api/src/app/import/import.service.ts b/apps/api/src/app/import/import.service.ts index 83d062b83..8fd35f8dd 100644 --- a/apps/api/src/app/import/import.service.ts +++ b/apps/api/src/app/import/import.service.ts @@ -280,6 +280,9 @@ export class ImportService { createdAt, currency, dataSource, + figi, + figiComposite, + figiShareClass, id, isin, name, @@ -350,6 +353,9 @@ export class ImportService { createdAt, currency, dataSource, + figi, + figiComposite, + figiShareClass, id, isin, name, @@ -509,6 +515,9 @@ export class ImportService { comment: null, countries: null, createdAt: undefined, + figi: null, + figiComposite: null, + figiShareClass: null, id: undefined, isin: null, name: null, diff --git a/apps/api/src/services/configuration/configuration.service.ts b/apps/api/src/services/configuration/configuration.service.ts index 40a04f5a0..b355d5a20 100644 --- a/apps/api/src/services/configuration/configuration.service.ts +++ b/apps/api/src/services/configuration/configuration.service.ts @@ -38,6 +38,7 @@ export class ConfigurationService { JWT_SECRET_KEY: str({}), MAX_ACTIVITIES_TO_IMPORT: num({ default: Number.MAX_SAFE_INTEGER }), MAX_ITEM_IN_CACHE: num({ default: 9999 }), + OPEN_FIGI_API_KEY: str({ default: '' }), PORT: port({ default: 3333 }), RAPID_API_API_KEY: str({ default: '' }), REDIS_HOST: str({ default: 'localhost' }), diff --git a/apps/api/src/services/data-gathering/data-gathering.service.ts b/apps/api/src/services/data-gathering/data-gathering.service.ts index 34645b9ea..78531b745 100644 --- a/apps/api/src/services/data-gathering/data-gathering.service.ts +++ b/apps/api/src/services/data-gathering/data-gathering.service.ts @@ -164,6 +164,9 @@ export class DataGatheringService { countries, currency, dataSource, + figi, + figiComposite, + figiShareClass, isin, name, sectors, @@ -178,6 +181,9 @@ export class DataGatheringService { countries, currency, dataSource, + figi, + figiComposite, + figiShareClass, isin, name, sectors, @@ -189,6 +195,9 @@ export class DataGatheringService { assetSubClass, countries, currency, + figi, + figiComposite, + figiShareClass, isin, name, sectors, diff --git a/apps/api/src/services/data-provider/data-enhancer/data-enhancer.module.ts b/apps/api/src/services/data-provider/data-enhancer/data-enhancer.module.ts index 069309508..23d64ac86 100644 --- a/apps/api/src/services/data-provider/data-enhancer/data-enhancer.module.ts +++ b/apps/api/src/services/data-provider/data-enhancer/data-enhancer.module.ts @@ -1,5 +1,6 @@ import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; import { CryptocurrencyModule } from '@ghostfolio/api/services/cryptocurrency/cryptocurrency.module'; +import { OpenFigiDataEnhancerService } from '@ghostfolio/api/services/data-provider/data-enhancer/openfigi/openfigi.service'; import { TrackinsightDataEnhancerService } from '@ghostfolio/api/services/data-provider/data-enhancer/trackinsight/trackinsight.service'; import { YahooFinanceDataEnhancerService } from '@ghostfolio/api/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service'; import { Module } from '@nestjs/common'; @@ -9,6 +10,7 @@ import { DataEnhancerService } from './data-enhancer.service'; @Module({ exports: [ DataEnhancerService, + OpenFigiDataEnhancerService, TrackinsightDataEnhancerService, YahooFinanceDataEnhancerService, 'DataEnhancers' @@ -16,15 +18,21 @@ import { DataEnhancerService } from './data-enhancer.service'; imports: [ConfigurationModule, CryptocurrencyModule], providers: [ DataEnhancerService, + OpenFigiDataEnhancerService, TrackinsightDataEnhancerService, YahooFinanceDataEnhancerService, { inject: [ + OpenFigiDataEnhancerService, TrackinsightDataEnhancerService, YahooFinanceDataEnhancerService ], provide: 'DataEnhancers', - useFactory: (trackinsight, yahooFinance) => [trackinsight, yahooFinance] + useFactory: (openfigi, trackinsight, yahooFinance) => [ + openfigi, + trackinsight, + yahooFinance + ] } ] }) 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 new file mode 100644 index 000000000..363cbb167 --- /dev/null +++ b/apps/api/src/services/data-provider/data-enhancer/openfigi/openfigi.service.ts @@ -0,0 +1,85 @@ +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'; +import got, { Headers } from 'got'; + +@Injectable() +export class OpenFigiDataEnhancerService implements DataEnhancerInterface { + private static baseUrl = 'https://api.openfigi.com'; + + public constructor( + private readonly configurationService: ConfigurationService + ) {} + + public async enhance({ + response, + symbol + }: { + response: Partial; + symbol: string; + }): Promise> { + if ( + !( + response.assetClass === 'EQUITY' && + (response.assetSubClass === 'ETF' || response.assetSubClass === 'STOCK') + ) + ) { + return response; + } + + const headers: Headers = {}; + const { exchange, ticker } = parseSymbol({ + symbol, + dataSource: response.dataSource + }); + + if (this.configurationService.get('OPEN_FIGI_API_KEY')) { + headers['X-OPENFIGI-APIKEY'] = + this.configurationService.get('OPEN_FIGI_API_KEY'); + } + + let abortController = new AbortController(); + + setTimeout(() => { + abortController.abort(); + }, DEFAULT_REQUEST_TIMEOUT); + + const mappings = await got + .post(`${OpenFigiDataEnhancerService.baseUrl}/v3/mapping`, { + headers, + json: [{ exchCode: exchange, idType: 'TICKER', idValue: ticker }], + // @ts-ignore + signal: abortController.signal + }) + .json(); + + if (mappings?.length === 1 && mappings[0].data?.length === 1) { + const { compositeFIGI, figi, shareClassFIGI } = mappings[0].data[0]; + + if (figi) { + response.figi = figi; + } + + if (compositeFIGI) { + response.figiComposite = compositeFIGI; + } + + if (shareClassFIGI) { + response.figiShareClass = shareClassFIGI; + } + } + + return response; + } + + public getName() { + return 'OPENFIGI'; + } + + public getTestSymbol() { + return undefined; + } +} diff --git a/apps/api/src/services/interfaces/environment.interface.ts b/apps/api/src/services/interfaces/environment.interface.ts index b437668ab..9b10a3205 100644 --- a/apps/api/src/services/interfaces/environment.interface.ts +++ b/apps/api/src/services/interfaces/environment.interface.ts @@ -26,6 +26,7 @@ export interface Environment extends CleanedEnvAccessors { JWT_SECRET_KEY: string; MAX_ACTIVITIES_TO_IMPORT: number; MAX_ITEM_IN_CACHE: number; + OPEN_FIGI_API_KEY: string; PORT: number; RAPID_API_API_KEY: string; REDIS_HOST: string; diff --git a/libs/common/src/lib/helper.ts b/libs/common/src/lib/helper.ts index 03fc250b8..3a3ee6e11 100644 --- a/libs/common/src/lib/helper.ts +++ b/libs/common/src/lib/helper.ts @@ -322,6 +322,15 @@ export function parseDate(date: string): Date | null { return parseISO(date); } +export function parseSymbol({ dataSource, symbol }: UniqueAsset) { + const [ticker, exchange] = symbol.split('.'); + + return { + ticker, + exchange: exchange ?? (dataSource === 'YAHOO' ? 'US' : undefined) + }; +} + export function prettifySymbol(aSymbol: string): string { return aSymbol?.replace(ghostfolioScraperApiSymbolPrefix, ''); } diff --git a/prisma/migrations/20231021094346_added_figi_figi_composite_and_figi_share_class_to_symbol_profile/migration.sql b/prisma/migrations/20231021094346_added_figi_figi_composite_and_figi_share_class_to_symbol_profile/migration.sql new file mode 100644 index 000000000..eb8abbe5a --- /dev/null +++ b/prisma/migrations/20231021094346_added_figi_figi_composite_and_figi_share_class_to_symbol_profile/migration.sql @@ -0,0 +1,5 @@ +-- AlterTable +ALTER TABLE "SymbolProfile" +ADD COLUMN "figi" TEXT, +ADD COLUMN "figiComposite" TEXT, +ADD COLUMN "figiShareClass" TEXT; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index a4d4e028e..015431e6c 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -132,6 +132,9 @@ model SymbolProfile { createdAt DateTime @default(now()) currency String dataSource DataSource + figi String? + figiComposite String? + figiShareClass String? id String @id @default(uuid()) isin String? name String? From cb166dcc78d492b45ba880044728eefdd4f045f1 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 21 Oct 2023 18:43:33 +0200 Subject: [PATCH 066/194] Redirect to membership page (#2527) --- apps/api/src/app/subscription/subscription.controller.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/src/app/subscription/subscription.controller.ts b/apps/api/src/app/subscription/subscription.controller.ts index e063a8636..299f32fe0 100644 --- a/apps/api/src/app/subscription/subscription.controller.ts +++ b/apps/api/src/app/subscription/subscription.controller.ts @@ -104,7 +104,7 @@ export class SubscriptionController { response.redirect( `${this.configurationService.get( 'ROOT_URL' - )}/${DEFAULT_LANGUAGE_CODE}/account` + )}/${DEFAULT_LANGUAGE_CODE}/account/membership` ); } From 5822e4d1865a4d94902f2fbbf792e8c090fe976a Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 21 Oct 2023 19:34:44 +0200 Subject: [PATCH 067/194] Bugfix/fix style of active page in header navigation (#2528) * Fix style of active page * Update changelog --- CHANGELOG.md | 1 + apps/client/src/styles.scss | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0fe6d0aa1..9de813d09 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed +- Fixed the style of the active page in the header navigation - Trimmed text in `i18n` service to query `messages.*.xlf` files on the server ## 2.13.0 - 2023-10-20 diff --git a/apps/client/src/styles.scss b/apps/client/src/styles.scss index 175194cac..7085effc5 100644 --- a/apps/client/src/styles.scss +++ b/apps/client/src/styles.scss @@ -446,6 +446,12 @@ ngx-skeleton-loader { .mat-mdc-menu-panel { .mat-mdc-menu-item { + &.font-weight-bold { + .mat-mdc-menu-item-text { + --mat-menu-item-label-text-weight: 700; + } + } + .mdc-list-item__primary-text { align-items: center; display: flex; From 281d33f82595aeb5a86de66a098c536ae7a0c9c2 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 21 Oct 2023 20:05:20 +0200 Subject: [PATCH 068/194] Feature/update oss friends 20231021 (#2529) * Update OSS friends * Improve style of sub title --- .../about/oss-friends/oss-friends-page.html | 2 +- apps/client/src/assets/oss-friends.json | 42 ++++++++++++++----- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/apps/client/src/app/pages/about/oss-friends/oss-friends-page.html b/apps/client/src/app/pages/about/oss-friends/oss-friends-page.html index 0248a8b46..fab653145 100644 --- a/apps/client/src/app/pages/about/oss-friends/oss-friends-page.html +++ b/apps/client/src/app/pages/about/oss-friends/oss-friends-page.html @@ -1,7 +1,7 @@
    -

    +

    Our OSS Friends diff --git a/apps/client/src/assets/oss-friends.json b/apps/client/src/assets/oss-friends.json index d7d8e1506..43d8141ac 100644 --- a/apps/client/src/assets/oss-friends.json +++ b/apps/client/src/assets/oss-friends.json @@ -1,5 +1,5 @@ { - "createdAt": "2023-10-05T00:00:00.000Z", + "createdAt": "2023-10-21T00:00:00.000Z", "data": [ { "name": "BoxyHQ", @@ -21,11 +21,21 @@ "description": "The Open-Source DocuSign Alternative. We aim to earn your trust by enabling you to self-host the platform and examine its inner workings.", "href": "https://documenso.com" }, + { + "name": "dyrector.io", + "description": "dyrector.io is an open-source continuous delivery & deployment platform with version management.", + "href": "https://dyrector.io" + }, { "name": "Erxes", "description": "The Open-Source HubSpot Alternative. A single XOS enables to create unique and life-changing experiences that work for all types of business.", "href": "https://erxes.io" }, + { + "name": "Firecamp", + "description": "vscode for apis, open-source postman/insomnia alternative", + "href": "https://firecamp.io" + }, { "name": "Formbricks", "description": "Survey granular user segments at any point in the user journey. Gather up to 6x more insights with targeted micro-surveys. All open-source.", @@ -46,6 +56,11 @@ "description": "Open-source authentication and user management for the passkey era. Integrated in minutes, for web and mobile apps.", "href": "https://www.hanko.io" }, + { + "name": "Hook0", + "description": "Open-Source Webhooks-as-a-service (WaaS) that makes it easy for developers to send webhooks.", + "href": "https://www.hook0.com/" + }, { "name": "HTMX", "description": "HTMX is a dependency-free JavaScript library that allows you to access AJAX, CSS Transitions, WebSockets, and Server Sent Events directly in HTML.", @@ -86,11 +101,21 @@ "description": "Open-source solution to deploy, scale, and operate your multiplayer game.", "href": "https://rivet.gg" }, + { + "name": "Shelf.nu", + "description": "Open Source Asset and Equipment tracking software that lets you create QR asset labels, manage and overview your assets across locations.", + "href": "https://www.shelf.nu/" + }, { "name": "Sniffnet", "description": "Sniffnet is a network monitoring tool to help you easily keep track of your Internet traffic.", "href": "https://www.sniffnet.net" }, + { + "name": "Spark.NET", + "description": "The .NET Web Framework for Makers. Build production ready, full-stack web applications fast without sweating the small stuff.", + "href": "https://spark-framework.net" + }, { "name": "Tolgee", "description": "Software localization from A to Z made really easy.", @@ -101,16 +126,16 @@ "description": "Create long-running Jobs directly in your codebase with features like API integrations, webhooks, scheduling and delays.", "href": "https://trigger.dev" }, - { - "name": "Typebot", - "description": "Typebot gives you powerful blocks to create unique chat experiences. Embed them anywhere on your apps and start collecting results like magic.", - "href": "https://typebot.io" - }, { "name": "Twenty", "description": "A modern CRM offering the flexibility of open-source, advanced features and sleek design.", "href": "https://twenty.com" }, + { + "name": "Typebot", + "description": "Typebot gives you powerful blocks to create unique chat experiences. Embed them anywhere on your apps and start collecting results like magic.", + "href": "https://typebot.io" + }, { "name": "Webiny", "description": "Open-source enterprise-grade serverless CMS. Own your data. Scale effortlessly. Customize everything.", @@ -120,11 +145,6 @@ "name": "Webstudio", "description": "Webstudio is an open source alternative to Webflow", "href": "https://webstudio.is" - }, - { - "name": "Spark.NET", - "description": "The .NET Web Framework for Makers. Build production ready, full-stack web applications fast without sweating the small stuff.", - "href": "https://spark-framework.net" } ], "source": "https://formbricks.com/api/oss-friends" From c4e8e378844fcf6a562c53f7d90623deb8bf4b5d Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 21 Oct 2023 20:07:40 +0200 Subject: [PATCH 069/194] Release 2.14.0 (#2530) --- CHANGELOG.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9de813d09..64f8439a4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ 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.14.0 - 2023-10-21 ### Added diff --git a/package.json b/package.json index f09c428d3..7a5eb4b55 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.13.0", + "version": "2.14.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From 96b5dcfaf8318dcec951f9282e967dcf97b71e5e Mon Sep 17 00:00:00 2001 From: Aldrin <53973174+Dhoni77@users.noreply.github.com> Date: Tue, 24 Oct 2023 00:00:05 +0530 Subject: [PATCH 070/194] Create reusable currency selector component using mat-autocomplete (#2487) * Create reusable currency selector component using mat-autocomplete * Update changelog --- CHANGELOG.md | 6 + ...eate-or-update-account-dialog.component.ts | 10 +- .../create-or-update-account-dialog.html | 11 +- .../create-or-update-account-dialog.module.ts | 4 +- .../src/lib/interfaces/currency.interface.ts | 4 + .../currency-selector.component.html | 21 +++ .../currency-selector.component.scss | 3 + .../currency-selector.component.ts | 167 ++++++++++++++++++ .../currency-selector.module.ts | 23 +++ .../abstract-mat-form-field.ts | 0 .../symbol-autocomplete.component.ts | 5 +- 11 files changed, 240 insertions(+), 14 deletions(-) create mode 100644 libs/common/src/lib/interfaces/currency.interface.ts create mode 100644 libs/ui/src/lib/currency-selector/currency-selector.component.html create mode 100644 libs/ui/src/lib/currency-selector/currency-selector.component.scss create mode 100644 libs/ui/src/lib/currency-selector/currency-selector.component.ts create mode 100644 libs/ui/src/lib/currency-selector/currency-selector.module.ts rename libs/ui/src/lib/{symbol-autocomplete => shared}/abstract-mat-form-field.ts (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 64f8439a4..a1166d132 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ 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 + +### Changed + +- Changed the currency selector in the create or update account dialog to `@angular/material/autocomplete` + ## 2.14.0 - 2023-10-21 ### Added 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 e2c63f191..9e153d173 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,6 +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 { Platform } from '@prisma/client'; import { Observable, Subject } from 'rxjs'; import { map, startWith } from 'rxjs/operators'; @@ -30,7 +31,7 @@ import { CreateOrUpdateAccountDialogParams } from './interfaces/interfaces'; }) export class CreateOrUpdateAccountDialog implements OnDestroy { public accountForm: FormGroup; - public currencies: string[] = []; + public currencies: Currency[] = []; public filteredPlatforms: Observable; public platforms: Platform[]; @@ -46,7 +47,10 @@ export class CreateOrUpdateAccountDialog implements OnDestroy { public ngOnInit() { const { currencies, platforms } = this.dataService.fetchInfo(); - this.currencies = currencies; + this.currencies = currencies.map((currency) => ({ + label: currency, + value: currency + })); this.platforms = platforms; this.accountForm = this.formBuilder.group({ @@ -101,7 +105,7 @@ export class CreateOrUpdateAccountDialog implements OnDestroy { const account: CreateAccountDto | UpdateAccountDto = { balance: this.accountForm.controls['balance'].value, comment: this.accountForm.controls['comment'].value, - currency: this.accountForm.controls['currency'].value, + currency: this.accountForm.controls['currency'].value?.value, id: this.accountForm.controls['accountId'].value, isExcluded: this.accountForm.controls['isExcluded'].value, name: this.accountForm.controls['name'].value, diff --git a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html index d44693436..35074ec97 100644 --- a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html +++ b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -20,11 +20,10 @@
    Currency - - {{ currency }} - +
    @@ -37,7 +36,7 @@ (keydown.enter)="$event.stopPropagation()" /> {{ accountForm.controls['currency'].value }}{{ accountForm.controls['currency']?.value?.value }}
    diff --git a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.module.ts b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.module.ts index 22ec5e1f8..2ccf56751 100644 --- a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.module.ts +++ b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.module.ts @@ -7,8 +7,8 @@ import { MatCheckboxModule } from '@angular/material/checkbox'; import { MatDialogModule } from '@angular/material/dialog'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatInputModule } from '@angular/material/input'; -import { MatSelectModule } from '@angular/material/select'; import { GfSymbolIconModule } from '@ghostfolio/client/components/symbol-icon/symbol-icon.module'; +import { GfCurrencySelectorModule } from '@ghostfolio/ui/currency-selector/currency-selector.module'; import { CreateOrUpdateAccountDialog } from './create-or-update-account-dialog.component'; @@ -17,6 +17,7 @@ import { CreateOrUpdateAccountDialog } from './create-or-update-account-dialog.c imports: [ CommonModule, FormsModule, + GfCurrencySelectorModule, GfSymbolIconModule, MatAutocompleteModule, MatButtonModule, @@ -24,7 +25,6 @@ import { CreateOrUpdateAccountDialog } from './create-or-update-account-dialog.c MatDialogModule, MatFormFieldModule, MatInputModule, - MatSelectModule, ReactiveFormsModule ] }) diff --git a/libs/common/src/lib/interfaces/currency.interface.ts b/libs/common/src/lib/interfaces/currency.interface.ts new file mode 100644 index 000000000..619144c0f --- /dev/null +++ b/libs/common/src/lib/interfaces/currency.interface.ts @@ -0,0 +1,4 @@ +export interface Currency { + label: string; + value: string; +} diff --git a/libs/ui/src/lib/currency-selector/currency-selector.component.html b/libs/ui/src/lib/currency-selector/currency-selector.component.html new file mode 100644 index 000000000..38fc6c43e --- /dev/null +++ b/libs/ui/src/lib/currency-selector/currency-selector.component.html @@ -0,0 +1,21 @@ + + + + + {{ currencyItem.label }} + + diff --git a/libs/ui/src/lib/currency-selector/currency-selector.component.scss b/libs/ui/src/lib/currency-selector/currency-selector.component.scss new file mode 100644 index 000000000..5d4e87f30 --- /dev/null +++ b/libs/ui/src/lib/currency-selector/currency-selector.component.scss @@ -0,0 +1,3 @@ +:host { + display: block; +} diff --git a/libs/ui/src/lib/currency-selector/currency-selector.component.ts b/libs/ui/src/lib/currency-selector/currency-selector.component.ts new file mode 100644 index 000000000..f75b684dd --- /dev/null +++ b/libs/ui/src/lib/currency-selector/currency-selector.component.ts @@ -0,0 +1,167 @@ +import { FocusMonitor } from '@angular/cdk/a11y'; +import { + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + ElementRef, + Input, + OnDestroy, + OnInit, + ViewChild +} from '@angular/core'; +import { FormControl, FormGroupDirective, NgControl } from '@angular/forms'; +import { + MatAutocomplete, + MatAutocompleteSelectedEvent +} 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 { AbstractMatFormField } from '@ghostfolio/ui/shared/abstract-mat-form-field'; +import { Subject } from 'rxjs'; +import { map, startWith, takeUntil } from 'rxjs/operators'; +@Component({ + changeDetection: ChangeDetectionStrategy.OnPush, + host: { + '[attr.aria-describedBy]': 'describedBy', + '[id]': 'id' + }, + providers: [ + { + provide: MatFormFieldControl, + useExisting: CurrencySelectorComponent + } + ], + selector: 'gf-currency-selector', + styleUrls: ['./currency-selector.component.scss'], + templateUrl: 'currency-selector.component.html' +}) +export class CurrencySelectorComponent + extends AbstractMatFormField + implements OnInit, OnDestroy +{ + @Input() private currencies: Currency[] = []; + @Input() private formControlName: string; + + @ViewChild(MatInput) private input: MatInput; + + @ViewChild('currencyAutocomplete') + public currencyAutocomplete: MatAutocomplete; + + public control = new FormControl(); + public filteredCurrencies: Currency[] = []; + + private unsubscribeSubject = new Subject(); + + public constructor( + public readonly _elementRef: ElementRef, + public readonly _focusMonitor: FocusMonitor, + public readonly changeDetectorRef: ChangeDetectorRef, + private readonly formGroupDirective: FormGroupDirective, + public readonly ngControl: NgControl + ) { + super(_elementRef, _focusMonitor, ngControl); + + this.controlType = 'currency-selector'; + } + + public ngOnInit() { + if (this.disabled) { + this.control.disable(); + } + + const formGroup = this.formGroupDirective.form; + + if (formGroup) { + const control = formGroup.get(this.formControlName); + + if (control) { + this.value = this.currencies.find(({ value }) => { + return value === control.value; + }); + } + } + + this.control.valueChanges + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(() => { + if (super.value?.value) { + super.value.value = null; + } + }); + + this.control.valueChanges + .pipe( + takeUntil(this.unsubscribeSubject), + startWith(''), + map((value) => { + return value ? this.filter(value) : this.currencies.slice(); + }) + ) + .subscribe((values) => { + this.filteredCurrencies = values; + }); + } + + public displayFn(currency: Currency) { + return currency?.label ?? ''; + } + + public get empty() { + return this.input?.empty; + } + + public focus() { + this.input.focus(); + } + + public ngDoCheck() { + if (this.ngControl) { + this.validateRequired(); + this.errorState = this.ngControl.invalid && this.ngControl.touched; + this.stateChanges.next(); + } + } + + public onUpdateCurrency(event: MatAutocompleteSelectedEvent) { + super.value = { + label: event.option.value.label, + value: event.option.value.value + } as Currency; + } + + public set value(value: Currency) { + const newValue = + typeof value === 'object' && value !== null ? { ...value } : value; + this.control.setValue(newValue); + super.value = newValue; + } + + public ngOnDestroy() { + super.ngOnDestroy(); + + this.unsubscribeSubject.next(); + this.unsubscribeSubject.complete(); + } + + private filter(value: Currency | string) { + const filterValue = + typeof value === 'string' + ? value?.toLowerCase() + : value?.value.toLowerCase(); + + return this.currencies.filter((currency) => { + return currency.value.toLowerCase().startsWith(filterValue); + }); + } + + private validateRequired() { + const requiredCheck = super.required + ? !super.value.label || !super.value.value + : false; + + if (requiredCheck) { + this.ngControl.control.setErrors({ invalidData: true }); + } + } +} diff --git a/libs/ui/src/lib/currency-selector/currency-selector.module.ts b/libs/ui/src/lib/currency-selector/currency-selector.module.ts new file mode 100644 index 000000000..ac4d12096 --- /dev/null +++ b/libs/ui/src/lib/currency-selector/currency-selector.module.ts @@ -0,0 +1,23 @@ +import { CommonModule } from '@angular/common'; +import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { MatAutocompleteModule } from '@angular/material/autocomplete'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; + +import { CurrencySelectorComponent } from './currency-selector.component'; + +@NgModule({ + declarations: [CurrencySelectorComponent], + exports: [CurrencySelectorComponent], + imports: [ + CommonModule, + FormsModule, + MatAutocompleteModule, + MatFormFieldModule, + MatInputModule, + ReactiveFormsModule + ], + schemas: [CUSTOM_ELEMENTS_SCHEMA] +}) +export class GfCurrencySelectorModule {} diff --git a/libs/ui/src/lib/symbol-autocomplete/abstract-mat-form-field.ts b/libs/ui/src/lib/shared/abstract-mat-form-field.ts similarity index 100% rename from libs/ui/src/lib/symbol-autocomplete/abstract-mat-form-field.ts rename to libs/ui/src/lib/shared/abstract-mat-form-field.ts diff --git a/libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.ts b/libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.ts index 654a634ff..17cdb853d 100644 --- a/libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.ts +++ b/libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.ts @@ -19,6 +19,7 @@ import { MatInput } from '@angular/material/input'; import { LookupItem } from '@ghostfolio/api/app/symbol/interfaces/lookup-item.interface'; import { DataService } from '@ghostfolio/client/services/data.service'; import { translate } from '@ghostfolio/ui/i18n'; +import { AbstractMatFormField } from '@ghostfolio/ui/shared/abstract-mat-form-field'; import { isString } from 'lodash'; import { Subject, tap } from 'rxjs'; import { @@ -29,8 +30,6 @@ import { takeUntil } from 'rxjs/operators'; -import { AbstractMatFormField } from './abstract-mat-form-field'; - @Component({ changeDetection: ChangeDetectionStrategy.OnPush, host: { @@ -54,7 +53,7 @@ export class SymbolAutocompleteComponent @Input() private includeIndices = false; @Input() public isLoading = false; - @ViewChild(MatInput, { static: false }) private input: MatInput; + @ViewChild(MatInput) private input: MatInput; @ViewChild('symbolAutocomplete') public symbolAutocomplete: MatAutocomplete; From 6077e7c2f9fb0abb83c4ef558f98cfbff050eeb3 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 23 Oct 2023 20:50:40 +0200 Subject: [PATCH 071/194] Feature/improve position detail dialog (#2532) * Improve style and wording * Update locales * Update changelog --- CHANGELOG.md | 1 + .../dialog-footer.component.html | 1 - .../dialog-footer.component.scss | 6 +- .../position-detail-dialog.html | 8 +- apps/client/src/locales/messages.de.xlf | 212 ++++++++--------- apps/client/src/locales/messages.es.xlf | 212 ++++++++--------- apps/client/src/locales/messages.fr.xlf | 214 +++++++++--------- apps/client/src/locales/messages.it.xlf | 214 +++++++++--------- apps/client/src/locales/messages.nl.xlf | 214 +++++++++--------- apps/client/src/locales/messages.pt.xlf | 214 +++++++++--------- apps/client/src/locales/messages.tr.xlf | 214 +++++++++--------- apps/client/src/locales/messages.xlf | 209 ++++++++--------- 12 files changed, 862 insertions(+), 857 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a1166d132..3c06cf7a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Improved the style and wording of the position detail dialog - Changed the currency selector in the create or update account dialog to `@angular/material/autocomplete` ## 2.14.0 - 2023-10-21 diff --git a/apps/client/src/app/components/dialog-footer/dialog-footer.component.html b/apps/client/src/app/components/dialog-footer/dialog-footer.component.html index 1c844c46d..c2153942a 100644 --- a/apps/client/src/app/components/dialog-footer/dialog-footer.component.html +++ b/apps/client/src/app/components/dialog-footer/dialog-footer.component.html @@ -1,6 +1,5 @@

    TransactionsActivityActivities
    diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 21c260c5d..ee154df54 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -22,7 +22,7 @@ Das Ausfallrisiko beim Börsenhandel kann erheblich sein. Es ist nicht ratsam, Geld zu investieren, welches du kurzfristig benötigst. apps/client/src/app/app.component.html - 175,176 + 174,175 @@ -86,11 +86,11 @@ Aktivitäten apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 48 + 59 apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 58 + 69 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -106,11 +106,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 23 + 120 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 249 + 251 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -146,7 +146,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 109 + 103 libs/ui/src/lib/activities-table/activities-table.component.html @@ -186,31 +186,31 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 163 + 157 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 164 + 158 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 166 + 160 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 219 + 213 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 220 + 214 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 221 + 215 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 222 + 216 libs/ui/src/lib/activities-table/activities-table.component.html @@ -318,7 +318,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 125 + 119 @@ -410,7 +410,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 131 + 125 libs/ui/src/lib/activities-table/activities-table.component.html @@ -466,7 +466,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 357 + 351 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -506,7 +506,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 364 + 358 @@ -520,6 +520,10 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 102 + + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html + 158 + libs/ui/src/lib/holdings-table/holdings-table.component.html 50 @@ -550,7 +554,7 @@ Bitte Währung hinzufügen: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 114 + 113 @@ -558,7 +562,7 @@ Möchtest du diesen Gutscheincode wirklich löschen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 128 + 127 @@ -566,7 +570,7 @@ Möchtest du diese Währung wirklich löschen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 141 + 140 @@ -574,7 +578,7 @@ Möchtest du den Cache wirklich leeren? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 158 + 157 @@ -582,7 +586,7 @@ Bitte gebe deine Systemmeldung ein: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 188 + 187 @@ -706,16 +710,12 @@ Möchtest du diesen Benutzer wirklich löschen? apps/client/src/app/components/admin-users/admin-users.component.ts - 86 + 112 User Benutzer - - apps/client/src/app/components/admin-users/admin-users.html - 9 - apps/client/src/app/components/header/header.component.html 192 @@ -726,7 +726,7 @@ Registrierung apps/client/src/app/components/admin-users/admin-users.html - 17 + 82 @@ -734,15 +734,15 @@ Engagement pro Tag apps/client/src/app/components/admin-users/admin-users.html - 29 + 144 - + Last Request Letzte Abfrage apps/client/src/app/components/admin-users/admin-users.html - 35,37 + 169,171 @@ -786,7 +786,7 @@ apps/client/src/app/components/admin-users/admin-users.html - 20 + 99 apps/client/src/app/components/header/header.component.html @@ -1344,11 +1344,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 155 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 217 + 211 @@ -1368,7 +1368,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 214 + 216 apps/client/src/app/pages/public/public-page.html @@ -1384,7 +1384,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 226 + 228 @@ -1396,11 +1396,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 268 + 270 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 315 + 309 @@ -1408,7 +1408,7 @@ Datenfehler melden apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 285 + 287 @@ -1716,7 +1716,7 @@ Konto apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 75 + 69 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1730,13 +1730,17 @@ apps/client/src/app/components/user-account-membership/user-account-membership.html 2 + + libs/ui/src/lib/membership-card/membership-card.component.html + 18 + Upgrade Upgrade apps/client/src/app/components/user-account-membership/user-account-membership.html - 26 + 19 @@ -1744,7 +1748,7 @@ pro Jahr apps/client/src/app/components/user-account-membership/user-account-membership.html - 41 + 34 apps/client/src/app/pages/pricing/pricing-page.html @@ -1756,7 +1760,7 @@ Premium ausprobieren apps/client/src/app/components/user-account-membership/user-account-membership.html - 49 + 43 @@ -1764,7 +1768,7 @@ Gutschein einlösen apps/client/src/app/components/user-account-membership/user-account-membership.html - 62 + 56 @@ -1900,7 +1904,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 115 + 109 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1912,7 +1916,7 @@ Cash-Bestand apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 32 + 43 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -1928,7 +1932,7 @@ Plattform apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 52 + 63 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -2264,7 +2268,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 97 + 91 @@ -2276,7 +2280,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 148 + 142 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2288,11 +2292,11 @@ Stückpreis apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 168 + 162 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 223 + 217 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2304,11 +2308,11 @@ Gebühr apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 237 + 231 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 256 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2328,7 +2332,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 271 + 265 @@ -2344,11 +2348,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 172 + 174 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 286 + 280 @@ -2691,14 +2695,6 @@ 105 - - First Buy Date - Datum des Erstkaufs - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 158 - - Asset Sub Class Anlageunterklasse @@ -2712,11 +2708,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 181 + 183 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 302 + 296 @@ -2728,7 +2724,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 196 + 198 @@ -2740,11 +2736,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 14 + 63 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 208 + 210 @@ -2783,14 +2779,6 @@ 111 - - Transactions - Transaktionen - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 167 - - Projected Total Amount Projizierter Gesamtbetrag @@ -3463,8 +3451,8 @@ Valid until Gültig bis - apps/client/src/app/components/user-account-membership/user-account-membership.html - 17 + libs/ui/src/lib/membership-card/membership-card.component.html + 22 @@ -3872,7 +3860,7 @@ Ups! Der historische Wechselkurs konnte nicht abgerufen werden vom apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 253 + 247 @@ -3916,7 +3904,7 @@ Erneuern apps/client/src/app/components/user-account-membership/user-account-membership.html - 29 + 22 @@ -3940,7 +3928,7 @@ Benutzer verwenden apps/client/src/app/components/admin-users/admin-users.html - 121 + 207 @@ -3948,7 +3936,7 @@ Benutzer löschen apps/client/src/app/components/admin-users/admin-users.html - 129 + 215 @@ -4024,7 +4012,7 @@ Cash-Bestand aktualisieren apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 89 + 83 @@ -4084,7 +4072,7 @@ Beteiligungskapital apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 43 + 54 @@ -7504,7 +7492,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 57 + 51 @@ -7512,7 +7500,7 @@ Hypotheken, Darlehen, Kreditkarten apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 51 + 45 @@ -7520,7 +7508,7 @@ Luxusartikel, Immobilien, private Unternehmen apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 63 + 57 @@ -8148,11 +8136,11 @@ apps/client/src/app/app.component.ts - 55 + 54 apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + 19 @@ -8164,7 +8152,7 @@ apps/client/src/app/app.component.ts - 56 + 55 apps/client/src/app/components/header/header.component.ts @@ -8176,7 +8164,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + 20 apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts @@ -8332,19 +8320,19 @@ apps/client/src/app/app.component.ts - 48 + 47 apps/client/src/app/app.component.ts - 49 + 48 apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/app.component.ts - 52 + 51 apps/client/src/app/components/header/header.component.ts @@ -8524,7 +8512,7 @@ apps/client/src/app/app.component.ts - 53 + 52 apps/client/src/app/pages/about/about-page.component.ts @@ -8540,7 +8528,7 @@ apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/pages/about/about-page.component.ts @@ -8556,7 +8544,7 @@ apps/client/src/app/app.component.ts - 57 + 56 apps/client/src/app/components/header/header.component.ts @@ -8588,7 +8576,7 @@ apps/client/src/app/app.component.ts - 58 + 57 apps/client/src/app/components/header/header.component.ts @@ -8642,6 +8630,10 @@ apps/client/src/app/pages/faq/faq-page.component.ts 15 + + libs/ui/src/lib/membership-card/membership-card.component.ts + 13 + register @@ -8652,7 +8644,7 @@ apps/client/src/app/app.component.ts - 59 + 58 apps/client/src/app/components/header/header.component.ts @@ -8688,7 +8680,7 @@ apps/client/src/app/app.component.ts - 60 + 59 apps/client/src/app/components/header/header.component.ts @@ -10192,7 +10184,7 @@ Einmalige Eröffnungsgebühr, jährliche Kontoführungsgebühren apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 30 + 27 @@ -10200,7 +10192,7 @@ Ausschüttung von Unternehmensgewinnen apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 36 + 33 @@ -10208,7 +10200,7 @@ Ups! Der historische Wechselkurs konnte nicht abgerufen werden vom apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 193,194 + 187,188 @@ -10232,7 +10224,7 @@ Ertrag für das Ausleihen von Geld apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 45 + 39 @@ -10463,6 +10455,14 @@ 15 + + User + Benutzer + + apps/client/src/app/components/admin-users/admin-users.html + 29,31 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 935b6605d..6c69f769d 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -23,7 +23,7 @@ El riesgo de pérdida en trading puede ser importante. No es aconsejable invertir dinero que puedas necesitar a corto plazo. apps/client/src/app/app.component.html - 175,176 + 174,175 @@ -87,11 +87,11 @@ Operaciones apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 48 + 59 apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 58 + 69 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -107,11 +107,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 23 + 120 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 249 + 251 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -147,7 +147,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 109 + 103 libs/ui/src/lib/activities-table/activities-table.component.html @@ -187,31 +187,31 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 163 + 157 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 164 + 158 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 166 + 160 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 219 + 213 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 220 + 214 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 221 + 215 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 222 + 216 libs/ui/src/lib/activities-table/activities-table.component.html @@ -319,7 +319,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 125 + 119 @@ -411,7 +411,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 131 + 125 libs/ui/src/lib/activities-table/activities-table.component.html @@ -467,7 +467,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 357 + 351 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -507,7 +507,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 364 + 358 @@ -521,6 +521,10 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 102 + + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html + 158 + libs/ui/src/lib/holdings-table/holdings-table.component.html 50 @@ -551,7 +555,7 @@ Por favor, añade una divisa: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 114 + 113 @@ -559,7 +563,7 @@ ¿Estás seguro de eliminar este cupón? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 128 + 127 @@ -567,7 +571,7 @@ ¿Estás seguro de eliminar esta divisa? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 141 + 140 @@ -575,7 +579,7 @@ ¿Estás seguro de limpiar la caché? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 158 + 157 @@ -583,7 +587,7 @@ Por favor, establece tu mensaje del sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 188 + 187 @@ -707,16 +711,12 @@ ¿Estás seguro de eliminar este usuario? apps/client/src/app/components/admin-users/admin-users.component.ts - 86 + 112 User Usuario - - apps/client/src/app/components/admin-users/admin-users.html - 9 - apps/client/src/app/components/header/header.component.html 192 @@ -727,7 +727,7 @@ Registro apps/client/src/app/components/admin-users/admin-users.html - 17 + 82 @@ -735,15 +735,15 @@ Contratación diaria apps/client/src/app/components/admin-users/admin-users.html - 29 + 144 - + Last Request Última petición apps/client/src/app/components/admin-users/admin-users.html - 35,37 + 169,171 @@ -787,7 +787,7 @@ apps/client/src/app/components/admin-users/admin-users.html - 20 + 99 apps/client/src/app/components/header/header.component.html @@ -1342,11 +1342,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 155 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 217 + 211 @@ -1366,7 +1366,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 214 + 216 apps/client/src/app/pages/public/public-page.html @@ -1382,7 +1382,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 226 + 228 @@ -1394,11 +1394,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 268 + 270 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 315 + 309 @@ -1406,7 +1406,7 @@ Reporta un anomalía de los datos apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 285 + 287 @@ -1714,7 +1714,7 @@ Cuenta apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 75 + 69 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1728,13 +1728,17 @@ apps/client/src/app/components/user-account-membership/user-account-membership.html 2 + + libs/ui/src/lib/membership-card/membership-card.component.html + 18 + Upgrade Mejorar apps/client/src/app/components/user-account-membership/user-account-membership.html - 26 + 19 @@ -1742,7 +1746,7 @@ por año apps/client/src/app/components/user-account-membership/user-account-membership.html - 41 + 34 apps/client/src/app/pages/pricing/pricing-page.html @@ -1754,7 +1758,7 @@ Prueba Premium apps/client/src/app/components/user-account-membership/user-account-membership.html - 49 + 43 @@ -1762,7 +1766,7 @@ Canjea el cupón apps/client/src/app/components/user-account-membership/user-account-membership.html - 62 + 56 @@ -1898,7 +1902,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 115 + 109 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1910,7 +1914,7 @@ Saldo en efectivo apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 32 + 43 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -1926,7 +1930,7 @@ Plataforma apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 52 + 63 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -2262,7 +2266,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 97 + 91 @@ -2274,7 +2278,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 148 + 142 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2286,11 +2290,11 @@ Precio unitario apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 168 + 162 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 223 + 217 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2302,11 +2306,11 @@ Comisión apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 237 + 231 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 256 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2326,7 +2330,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 271 + 265 @@ -2342,11 +2346,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 172 + 174 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 286 + 280 @@ -2690,11 +2694,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 181 + 183 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 302 + 296 @@ -2746,7 +2750,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 196 + 198 @@ -2758,11 +2762,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 14 + 63 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 208 + 210 @@ -2773,22 +2777,6 @@ 93 - - First Buy Date - Fecha de la primera compra - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 158 - - - - Transactions - Transacciones - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 167 - - Projected Total Amount Importe total previsto @@ -3461,8 +3449,8 @@ Valid until Valid until - apps/client/src/app/components/user-account-membership/user-account-membership.html - 17 + libs/ui/src/lib/membership-card/membership-card.component.html + 22 @@ -3870,7 +3858,7 @@ 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 - 253 + 247 @@ -3914,7 +3902,7 @@ Renew apps/client/src/app/components/user-account-membership/user-account-membership.html - 29 + 22 @@ -3938,7 +3926,7 @@ Impersonate User apps/client/src/app/components/admin-users/admin-users.html - 121 + 207 @@ -3946,7 +3934,7 @@ Delete User apps/client/src/app/components/admin-users/admin-users.html - 129 + 215 @@ -4022,7 +4010,7 @@ Update Cash Balance apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 89 + 83 @@ -4082,7 +4070,7 @@ Equity apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 43 + 54 @@ -7502,7 +7490,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 57 + 51 @@ -7510,7 +7498,7 @@ Mortgages, personal loans, credit cards apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 51 + 45 @@ -7518,7 +7506,7 @@ Luxury items, real estate, private companies apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 63 + 57 @@ -8146,11 +8134,11 @@ apps/client/src/app/app.component.ts - 55 + 54 apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + 19 @@ -8162,7 +8150,7 @@ apps/client/src/app/app.component.ts - 56 + 55 apps/client/src/app/components/header/header.component.ts @@ -8174,7 +8162,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + 20 apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts @@ -8330,19 +8318,19 @@ apps/client/src/app/app.component.ts - 48 + 47 apps/client/src/app/app.component.ts - 49 + 48 apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/app.component.ts - 52 + 51 apps/client/src/app/components/header/header.component.ts @@ -8522,7 +8510,7 @@ apps/client/src/app/app.component.ts - 53 + 52 apps/client/src/app/pages/about/about-page.component.ts @@ -8538,7 +8526,7 @@ apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/pages/about/about-page.component.ts @@ -8554,7 +8542,7 @@ apps/client/src/app/app.component.ts - 57 + 56 apps/client/src/app/components/header/header.component.ts @@ -8586,7 +8574,7 @@ apps/client/src/app/app.component.ts - 58 + 57 apps/client/src/app/components/header/header.component.ts @@ -8640,6 +8628,10 @@ apps/client/src/app/pages/faq/faq-page.component.ts 15 + + libs/ui/src/lib/membership-card/membership-card.component.ts + 13 + register @@ -8650,7 +8642,7 @@ apps/client/src/app/app.component.ts - 59 + 58 apps/client/src/app/components/header/header.component.ts @@ -8686,7 +8678,7 @@ apps/client/src/app/app.component.ts - 60 + 59 apps/client/src/app/components/header/header.component.ts @@ -10190,7 +10182,7 @@ One-time fee, annual account fees apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 30 + 27 @@ -10198,7 +10190,7 @@ Distribution of corporate earnings apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 36 + 33 @@ -10206,7 +10198,7 @@ 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 - 193,194 + 187,188 @@ -10230,7 +10222,7 @@ Revenue for lending out money apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 45 + 39 @@ -10461,6 +10453,14 @@ 15 + + User + User + + apps/client/src/app/components/admin-users/admin-users.html + 29,31 + + diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index be8a8b10b..d23ca7b67 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -6,7 +6,7 @@ Le risque de perte en investissant peut être important. Il est déconseillé d'investir de l'argent dont vous pourriez avoir besoin à court terme. apps/client/src/app/app.component.html - 175,176 + 174,175 @@ -82,7 +82,7 @@ Plateforme apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 52 + 63 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -98,11 +98,11 @@ Activités apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 48 + 59 apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 58 + 69 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -118,11 +118,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 23 + 120 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 249 + 251 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -158,7 +158,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 109 + 103 libs/ui/src/lib/activities-table/activities-table.component.html @@ -198,7 +198,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 115 + 109 libs/ui/src/lib/activities-table/activities-table.component.html @@ -210,7 +210,7 @@ Balance Cash apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 32 + 43 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -238,31 +238,31 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 163 + 157 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 164 + 158 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 166 + 160 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 219 + 213 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 220 + 214 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 221 + 215 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 222 + 216 libs/ui/src/lib/activities-table/activities-table.component.html @@ -362,7 +362,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 125 + 119 @@ -462,7 +462,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 131 + 125 libs/ui/src/lib/activities-table/activities-table.component.html @@ -518,7 +518,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 357 + 351 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -558,7 +558,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 364 + 358 @@ -582,11 +582,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 172 + 174 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 286 + 280 @@ -602,11 +602,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 181 + 183 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 302 + 296 @@ -620,6 +620,10 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 102 + + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html + 158 + libs/ui/src/lib/holdings-table/holdings-table.component.html 50 @@ -706,7 +710,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 196 + 198 @@ -718,11 +722,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 14 + 63 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 208 + 210 @@ -734,7 +738,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 214 + 216 apps/client/src/app/pages/public/public-page.html @@ -750,7 +754,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 226 + 228 @@ -774,7 +778,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 271 + 265 @@ -782,7 +786,7 @@ Veuillez ajouter une devise : apps/client/src/app/components/admin-overview/admin-overview.component.ts - 114 + 113 @@ -790,7 +794,7 @@ Voulez-vous vraiment supprimer ce code promotionnel ? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 128 + 127 @@ -798,7 +802,7 @@ Voulez-vous vraiment supprimer cette devise ? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 141 + 140 @@ -806,7 +810,7 @@ Voulez-vous vraiment vider le cache ? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 158 + 157 @@ -814,7 +818,7 @@ Veuillez définir votre message système : apps/client/src/app/components/admin-overview/admin-overview.component.ts - 188 + 187 @@ -866,11 +870,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 268 + 270 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 315 + 309 @@ -942,16 +946,12 @@ Voulez-vous vraiment supprimer cet·te utilisateur·rice ? apps/client/src/app/components/admin-users/admin-users.component.ts - 86 + 112 User Utilisateur - - apps/client/src/app/components/admin-users/admin-users.html - 9 - apps/client/src/app/components/header/header.component.html 192 @@ -962,7 +962,7 @@ Inscription apps/client/src/app/components/admin-users/admin-users.html - 17 + 82 @@ -974,7 +974,7 @@ apps/client/src/app/components/admin-users/admin-users.html - 20 + 99 apps/client/src/app/components/header/header.component.html @@ -994,15 +994,15 @@ Engagement par Jour apps/client/src/app/components/admin-users/admin-users.html - 29 + 144 - + Last Request - Dernière Requête + Dernière Requête apps/client/src/app/components/admin-users/admin-users.html - 35,37 + 169,171 @@ -1681,11 +1681,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 155 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 217 + 211 @@ -1737,35 +1737,19 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 148 + 142 libs/ui/src/lib/activities-table/activities-table.component.html 222 - - First Buy Date - Date du Premier Achat - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 158 - - - - Transactions - Transactions - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 167 - - Report Data Glitch Signaler une Erreur de Données apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 285 + 287 @@ -1981,7 +1965,7 @@ Compte apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 75 + 69 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1995,13 +1979,17 @@ apps/client/src/app/components/user-account-membership/user-account-membership.html 2 + + libs/ui/src/lib/membership-card/membership-card.component.html + 18 + Upgrade Mettre à niveau apps/client/src/app/components/user-account-membership/user-account-membership.html - 26 + 19 @@ -2009,7 +1997,7 @@ par an apps/client/src/app/components/user-account-membership/user-account-membership.html - 41 + 34 apps/client/src/app/pages/pricing/pricing-page.html @@ -2021,7 +2009,7 @@ Essayer Premium apps/client/src/app/components/user-account-membership/user-account-membership.html - 49 + 43 @@ -2029,7 +2017,7 @@ Utiliser un Code Promotionnel apps/client/src/app/components/user-account-membership/user-account-membership.html - 62 + 56 @@ -2497,7 +2485,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 97 + 91 @@ -2505,11 +2493,11 @@ Prix Unitaire apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 168 + 162 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 223 + 217 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2521,11 +2509,11 @@ Frais apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 237 + 231 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 256 libs/ui/src/lib/activities-table/activities-table.component.html @@ -3460,8 +3448,8 @@ Valid until Valide jusqu'au - apps/client/src/app/components/user-account-membership/user-account-membership.html - 17 + libs/ui/src/lib/membership-card/membership-card.component.html + 22 @@ -3869,7 +3857,7 @@ Oups ! Nous n'avons pas pu obtenir le taux de change historique à partir de apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 253 + 247 @@ -3913,7 +3901,7 @@ Renouveler apps/client/src/app/components/user-account-membership/user-account-membership.html - 29 + 22 @@ -3937,7 +3925,7 @@ Voir en tant que ... apps/client/src/app/components/admin-users/admin-users.html - 121 + 207 @@ -3945,7 +3933,7 @@ Supprimer l'Utilisateur apps/client/src/app/components/admin-users/admin-users.html - 129 + 215 @@ -4021,7 +4009,7 @@ Mettre à jour le Solde apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 89 + 83 @@ -4081,7 +4069,7 @@ Capital apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 43 + 54 @@ -7501,7 +7489,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 57 + 51 @@ -7509,7 +7497,7 @@ Mortgages, personal loans, credit cards apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 51 + 45 @@ -7517,7 +7505,7 @@ Luxury items, real estate, private companies apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 63 + 57 @@ -8145,11 +8133,11 @@ apps/client/src/app/app.component.ts - 55 + 54 apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + 19 @@ -8161,7 +8149,7 @@ apps/client/src/app/app.component.ts - 56 + 55 apps/client/src/app/components/header/header.component.ts @@ -8173,7 +8161,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + 20 apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts @@ -8329,19 +8317,19 @@ apps/client/src/app/app.component.ts - 48 + 47 apps/client/src/app/app.component.ts - 49 + 48 apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/app.component.ts - 52 + 51 apps/client/src/app/components/header/header.component.ts @@ -8521,7 +8509,7 @@ apps/client/src/app/app.component.ts - 53 + 52 apps/client/src/app/pages/about/about-page.component.ts @@ -8537,7 +8525,7 @@ apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/pages/about/about-page.component.ts @@ -8553,7 +8541,7 @@ apps/client/src/app/app.component.ts - 57 + 56 apps/client/src/app/components/header/header.component.ts @@ -8585,7 +8573,7 @@ apps/client/src/app/app.component.ts - 58 + 57 apps/client/src/app/components/header/header.component.ts @@ -8639,6 +8627,10 @@ apps/client/src/app/pages/faq/faq-page.component.ts 15 + + libs/ui/src/lib/membership-card/membership-card.component.ts + 13 + register @@ -8649,7 +8641,7 @@ apps/client/src/app/app.component.ts - 59 + 58 apps/client/src/app/components/header/header.component.ts @@ -8685,7 +8677,7 @@ apps/client/src/app/app.component.ts - 60 + 59 apps/client/src/app/components/header/header.component.ts @@ -10189,7 +10181,7 @@ One-time fee, annual account fees apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 30 + 27 @@ -10197,7 +10189,7 @@ Distribution of corporate earnings apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 36 + 33 @@ -10205,7 +10197,7 @@ 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 - 193,194 + 187,188 @@ -10229,7 +10221,7 @@ Revenue for lending out money apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 45 + 39 @@ -10460,6 +10452,14 @@ 15 + + User + User + + apps/client/src/app/components/admin-users/admin-users.html + 29,31 + + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 1712694d3..f0c00a7f7 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -23,7 +23,7 @@ Il rischio di perdita nel trading può essere notevole. Non è consigliabile investire denaro di cui potresti avere bisogno a breve termine. apps/client/src/app/app.component.html - 175,176 + 174,175 @@ -87,11 +87,11 @@ Attività apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 48 + 59 apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 58 + 69 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -107,11 +107,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 23 + 120 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 249 + 251 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -147,7 +147,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 109 + 103 libs/ui/src/lib/activities-table/activities-table.component.html @@ -187,31 +187,31 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 163 + 157 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 164 + 158 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 166 + 160 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 219 + 213 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 220 + 214 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 221 + 215 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 222 + 216 libs/ui/src/lib/activities-table/activities-table.component.html @@ -319,7 +319,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 125 + 119 @@ -411,7 +411,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 131 + 125 libs/ui/src/lib/activities-table/activities-table.component.html @@ -467,7 +467,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 357 + 351 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -507,7 +507,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 364 + 358 @@ -521,6 +521,10 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 102 + + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html + 158 + libs/ui/src/lib/holdings-table/holdings-table.component.html 50 @@ -551,7 +555,7 @@ Aggiungi una valuta: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 114 + 113 @@ -559,7 +563,7 @@ Vuoi davvero eliminare questo buono? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 128 + 127 @@ -567,7 +571,7 @@ Vuoi davvero eliminare questa valuta? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 141 + 140 @@ -575,7 +579,7 @@ Vuoi davvero svuotare la cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 158 + 157 @@ -583,7 +587,7 @@ Imposta il messaggio di sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 188 + 187 @@ -707,16 +711,12 @@ Vuoi davvero eliminare questo utente? apps/client/src/app/components/admin-users/admin-users.component.ts - 86 + 112 User Utente - - apps/client/src/app/components/admin-users/admin-users.html - 9 - apps/client/src/app/components/header/header.component.html 192 @@ -727,7 +727,7 @@ Iscrizione apps/client/src/app/components/admin-users/admin-users.html - 17 + 82 @@ -735,15 +735,15 @@ Partecipazione giornaliera apps/client/src/app/components/admin-users/admin-users.html - 29 + 144 - + Last Request - Ultima richiesta + Ultima richiesta apps/client/src/app/components/admin-users/admin-users.html - 35,37 + 169,171 @@ -787,7 +787,7 @@ apps/client/src/app/components/admin-users/admin-users.html - 20 + 99 apps/client/src/app/components/header/header.component.html @@ -1342,11 +1342,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 155 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 217 + 211 @@ -1366,7 +1366,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 214 + 216 apps/client/src/app/pages/public/public-page.html @@ -1382,7 +1382,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 226 + 228 @@ -1394,11 +1394,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 268 + 270 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 315 + 309 @@ -1406,7 +1406,7 @@ Segnala un'anomalia dei dati apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 285 + 287 @@ -1714,7 +1714,7 @@ Account apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 75 + 69 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1728,13 +1728,17 @@ apps/client/src/app/components/user-account-membership/user-account-membership.html 2 + + libs/ui/src/lib/membership-card/membership-card.component.html + 18 + Upgrade Aggiornamento apps/client/src/app/components/user-account-membership/user-account-membership.html - 26 + 19 @@ -1742,7 +1746,7 @@ per anno apps/client/src/app/components/user-account-membership/user-account-membership.html - 41 + 34 apps/client/src/app/pages/pricing/pricing-page.html @@ -1754,7 +1758,7 @@ Prova Premium apps/client/src/app/components/user-account-membership/user-account-membership.html - 49 + 43 @@ -1762,7 +1766,7 @@ Riscatta il buono apps/client/src/app/components/user-account-membership/user-account-membership.html - 62 + 56 @@ -1898,7 +1902,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 115 + 109 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1910,7 +1914,7 @@ Saldo di cassa apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 32 + 43 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -1926,7 +1930,7 @@ Piattaforma apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 52 + 63 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -2262,7 +2266,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 97 + 91 @@ -2274,7 +2278,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 148 + 142 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2286,11 +2290,11 @@ Prezzo unitario apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 168 + 162 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 223 + 217 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2302,11 +2306,11 @@ Commissione apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 237 + 231 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 256 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2326,7 +2330,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 271 + 265 @@ -2342,11 +2346,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 172 + 174 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 286 + 280 @@ -2690,11 +2694,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 181 + 183 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 302 + 296 @@ -2746,7 +2750,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 196 + 198 @@ -2758,11 +2762,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 14 + 63 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 208 + 210 @@ -2773,22 +2777,6 @@ 93 - - First Buy Date - Data del primo acquisto - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 158 - - - - Transactions - Transazioni - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 167 - - Projected Total Amount Importo totale previsto @@ -3461,8 +3449,8 @@ Valid until Valido fino a - apps/client/src/app/components/user-account-membership/user-account-membership.html - 17 + libs/ui/src/lib/membership-card/membership-card.component.html + 22 @@ -3870,7 +3858,7 @@ Ops! Impossibile ottenere il tasso di cambio storico da apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 253 + 247 @@ -3914,7 +3902,7 @@ Rinnova apps/client/src/app/components/user-account-membership/user-account-membership.html - 29 + 22 @@ -3938,7 +3926,7 @@ Imita l'utente apps/client/src/app/components/admin-users/admin-users.html - 121 + 207 @@ -3946,7 +3934,7 @@ Elimina l'utente apps/client/src/app/components/admin-users/admin-users.html - 129 + 215 @@ -4022,7 +4010,7 @@ Aggiornamento del saldo di cassa apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 89 + 83 @@ -4082,7 +4070,7 @@ Azione ordinaria apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 43 + 54 @@ -7502,7 +7490,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 57 + 51 @@ -7510,7 +7498,7 @@ Mutui, prestiti personali, carte di credito apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 51 + 45 @@ -7518,7 +7506,7 @@ Articoli di lusso, immobili, aziende private apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 63 + 57 @@ -8146,11 +8134,11 @@ apps/client/src/app/app.component.ts - 55 + 54 apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + 19 @@ -8162,7 +8150,7 @@ apps/client/src/app/app.component.ts - 56 + 55 apps/client/src/app/components/header/header.component.ts @@ -8174,7 +8162,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + 20 apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts @@ -8330,19 +8318,19 @@ apps/client/src/app/app.component.ts - 48 + 47 apps/client/src/app/app.component.ts - 49 + 48 apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/app.component.ts - 52 + 51 apps/client/src/app/components/header/header.component.ts @@ -8522,7 +8510,7 @@ apps/client/src/app/app.component.ts - 53 + 52 apps/client/src/app/pages/about/about-page.component.ts @@ -8538,7 +8526,7 @@ apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/pages/about/about-page.component.ts @@ -8554,7 +8542,7 @@ apps/client/src/app/app.component.ts - 57 + 56 apps/client/src/app/components/header/header.component.ts @@ -8586,7 +8574,7 @@ apps/client/src/app/app.component.ts - 58 + 57 apps/client/src/app/components/header/header.component.ts @@ -8640,6 +8628,10 @@ apps/client/src/app/pages/faq/faq-page.component.ts 15 + + libs/ui/src/lib/membership-card/membership-card.component.ts + 13 + register @@ -8650,7 +8642,7 @@ apps/client/src/app/app.component.ts - 59 + 58 apps/client/src/app/components/header/header.component.ts @@ -8686,7 +8678,7 @@ apps/client/src/app/app.component.ts - 60 + 59 apps/client/src/app/components/header/header.component.ts @@ -10190,7 +10182,7 @@ One-time fee, annual account fees apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 30 + 27 @@ -10198,7 +10190,7 @@ Distribution of corporate earnings apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 36 + 33 @@ -10206,7 +10198,7 @@ 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 - 193,194 + 187,188 @@ -10230,7 +10222,7 @@ Revenue for lending out money apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 45 + 39 @@ -10461,6 +10453,14 @@ 15 + + User + User + + apps/client/src/app/components/admin-users/admin-users.html + 29,31 + + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index f424ee349..b75791ec2 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -22,7 +22,7 @@ Het risico op verlies bij handelen kan aanzienlijk zijn. Het is niet aan te raden om geld te investeren dat je misschien op korte termijn nodig heeft. apps/client/src/app/app.component.html - 175,176 + 174,175 @@ -86,11 +86,11 @@ Activiteiten apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 48 + 59 apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 58 + 69 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -106,11 +106,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 23 + 120 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 249 + 251 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -146,7 +146,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 109 + 103 libs/ui/src/lib/activities-table/activities-table.component.html @@ -186,31 +186,31 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 163 + 157 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 164 + 158 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 166 + 160 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 219 + 213 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 220 + 214 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 221 + 215 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 222 + 216 libs/ui/src/lib/activities-table/activities-table.component.html @@ -318,7 +318,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 125 + 119 @@ -410,7 +410,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 131 + 125 libs/ui/src/lib/activities-table/activities-table.component.html @@ -466,7 +466,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 357 + 351 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -506,7 +506,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 364 + 358 @@ -520,6 +520,10 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 102 + + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html + 158 + libs/ui/src/lib/holdings-table/holdings-table.component.html 50 @@ -550,7 +554,7 @@ Voeg een valuta toe: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 114 + 113 @@ -558,7 +562,7 @@ Wil je deze coupon echt verwijderen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 128 + 127 @@ -566,7 +570,7 @@ Wil je deze valuta echt verwijderen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 141 + 140 @@ -574,7 +578,7 @@ Wil je echt de cache legen? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 158 + 157 @@ -582,7 +586,7 @@ Stel je systeemboodschap in: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 188 + 187 @@ -706,16 +710,12 @@ Wilt je deze gebruiker echt verwijderen? apps/client/src/app/components/admin-users/admin-users.component.ts - 86 + 112 User Gebruiker - - apps/client/src/app/components/admin-users/admin-users.html - 9 - apps/client/src/app/components/header/header.component.html 192 @@ -726,7 +726,7 @@ Registratie apps/client/src/app/components/admin-users/admin-users.html - 17 + 82 @@ -734,15 +734,15 @@ Betrokkenheid per dag apps/client/src/app/components/admin-users/admin-users.html - 29 + 144 - + Last Request - Laatste verzoek + Laatste verzoek apps/client/src/app/components/admin-users/admin-users.html - 35,37 + 169,171 @@ -786,7 +786,7 @@ apps/client/src/app/components/admin-users/admin-users.html - 20 + 99 apps/client/src/app/components/header/header.component.html @@ -1341,11 +1341,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 155 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 217 + 211 @@ -1365,7 +1365,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 214 + 216 apps/client/src/app/pages/public/public-page.html @@ -1381,7 +1381,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 226 + 228 @@ -1393,11 +1393,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 268 + 270 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 315 + 309 @@ -1405,7 +1405,7 @@ Gegevensstoring melden apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 285 + 287 @@ -1713,7 +1713,7 @@ Rekening apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 75 + 69 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1727,13 +1727,17 @@ apps/client/src/app/components/user-account-membership/user-account-membership.html 2 + + libs/ui/src/lib/membership-card/membership-card.component.html + 18 + Upgrade Uitbreiden apps/client/src/app/components/user-account-membership/user-account-membership.html - 26 + 19 @@ -1741,7 +1745,7 @@ per jaar apps/client/src/app/components/user-account-membership/user-account-membership.html - 41 + 34 apps/client/src/app/pages/pricing/pricing-page.html @@ -1753,7 +1757,7 @@ Probeer Premium apps/client/src/app/components/user-account-membership/user-account-membership.html - 49 + 43 @@ -1761,7 +1765,7 @@ Coupon inwisselen apps/client/src/app/components/user-account-membership/user-account-membership.html - 62 + 56 @@ -1897,7 +1901,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 115 + 109 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1909,7 +1913,7 @@ Saldo apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 32 + 43 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -1925,7 +1929,7 @@ Platform apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 52 + 63 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -2261,7 +2265,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 97 + 91 @@ -2273,7 +2277,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 148 + 142 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2285,11 +2289,11 @@ Prijs per eenheid apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 168 + 162 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 223 + 217 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2301,11 +2305,11 @@ Transactiekosten apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 237 + 231 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 256 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2325,7 +2329,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 271 + 265 @@ -2341,11 +2345,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 172 + 174 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 286 + 280 @@ -2689,11 +2693,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 181 + 183 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 302 + 296 @@ -2745,7 +2749,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 196 + 198 @@ -2757,11 +2761,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 14 + 63 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 208 + 210 @@ -2772,22 +2776,6 @@ 93 - - First Buy Date - Eerste aankoopdatum - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 158 - - - - Transactions - Transacties - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 167 - - Projected Total Amount Verwacht totaalbedrag @@ -3460,8 +3448,8 @@ Valid until Geldig tot - apps/client/src/app/components/user-account-membership/user-account-membership.html - 17 + libs/ui/src/lib/membership-card/membership-card.component.html + 22 @@ -3869,7 +3857,7 @@ Oeps! Kon de historische wisselkoers niet krijgen van apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 253 + 247 @@ -3913,7 +3901,7 @@ Vernieuw apps/client/src/app/components/user-account-membership/user-account-membership.html - 29 + 22 @@ -3937,7 +3925,7 @@ Gebruiker nadoen apps/client/src/app/components/admin-users/admin-users.html - 121 + 207 @@ -3945,7 +3933,7 @@ Gebruiker verwijderen apps/client/src/app/components/admin-users/admin-users.html - 129 + 215 @@ -4021,7 +4009,7 @@ Saldo bijwerken apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 89 + 83 @@ -4081,7 +4069,7 @@ Equity apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 43 + 54 @@ -7501,7 +7489,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 57 + 51 @@ -7509,7 +7497,7 @@ Hypotheken, persoonlijke leningen, creditcards apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 51 + 45 @@ -7517,7 +7505,7 @@ Luxe artikelen, onroerend goed, particuliere bedrijven apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 63 + 57 @@ -8145,11 +8133,11 @@ apps/client/src/app/app.component.ts - 55 + 54 apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + 19 @@ -8161,7 +8149,7 @@ apps/client/src/app/app.component.ts - 56 + 55 apps/client/src/app/components/header/header.component.ts @@ -8173,7 +8161,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + 20 apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts @@ -8329,19 +8317,19 @@ apps/client/src/app/app.component.ts - 48 + 47 apps/client/src/app/app.component.ts - 49 + 48 apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/app.component.ts - 52 + 51 apps/client/src/app/components/header/header.component.ts @@ -8521,7 +8509,7 @@ apps/client/src/app/app.component.ts - 53 + 52 apps/client/src/app/pages/about/about-page.component.ts @@ -8537,7 +8525,7 @@ apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/pages/about/about-page.component.ts @@ -8553,7 +8541,7 @@ apps/client/src/app/app.component.ts - 57 + 56 apps/client/src/app/components/header/header.component.ts @@ -8585,7 +8573,7 @@ apps/client/src/app/app.component.ts - 58 + 57 apps/client/src/app/components/header/header.component.ts @@ -8639,6 +8627,10 @@ apps/client/src/app/pages/faq/faq-page.component.ts 15 + + libs/ui/src/lib/membership-card/membership-card.component.ts + 13 + register @@ -8649,7 +8641,7 @@ apps/client/src/app/app.component.ts - 59 + 58 apps/client/src/app/components/header/header.component.ts @@ -8685,7 +8677,7 @@ apps/client/src/app/app.component.ts - 60 + 59 apps/client/src/app/components/header/header.component.ts @@ -10189,7 +10181,7 @@ One-time fee, annual account fees apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 30 + 27 @@ -10197,7 +10189,7 @@ Distribution of corporate earnings apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 36 + 33 @@ -10205,7 +10197,7 @@ 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 - 193,194 + 187,188 @@ -10229,7 +10221,7 @@ Revenue for lending out money apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 45 + 39 @@ -10460,6 +10452,14 @@ 15 + + User + User + + apps/client/src/app/components/admin-users/admin-users.html + 29,31 + + diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 15db8b5c7..9c2e54ca4 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -6,7 +6,7 @@ O risco de perda em investimentos pode ser substancial. Não é aconselhável investir dinheiro que possa vir a precisar a curto prazo. apps/client/src/app/app.component.html - 175,176 + 174,175 @@ -82,7 +82,7 @@ Plataforma apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 52 + 63 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -98,11 +98,11 @@ Atividades apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 48 + 59 apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 58 + 69 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -118,11 +118,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 23 + 120 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 249 + 251 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -158,7 +158,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 109 + 103 libs/ui/src/lib/activities-table/activities-table.component.html @@ -198,7 +198,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 115 + 109 libs/ui/src/lib/activities-table/activities-table.component.html @@ -210,7 +210,7 @@ Saldo disponível em dinheiro apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 32 + 43 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -238,31 +238,31 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 163 + 157 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 164 + 158 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 166 + 160 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 219 + 213 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 220 + 214 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 221 + 215 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 222 + 216 libs/ui/src/lib/activities-table/activities-table.component.html @@ -362,7 +362,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 125 + 119 @@ -462,7 +462,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 131 + 125 libs/ui/src/lib/activities-table/activities-table.component.html @@ -518,7 +518,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 357 + 351 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -558,7 +558,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 364 + 358 @@ -582,11 +582,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 172 + 174 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 286 + 280 @@ -602,11 +602,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 181 + 183 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 302 + 296 @@ -620,6 +620,10 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 102 + + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html + 158 + libs/ui/src/lib/holdings-table/holdings-table.component.html 50 @@ -694,7 +698,7 @@ Por favor, adicione uma moeda: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 114 + 113 @@ -702,7 +706,7 @@ Deseja realmente eliminar este cupão? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 128 + 127 @@ -710,7 +714,7 @@ Deseja realmente excluir esta moeda? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 141 + 140 @@ -718,7 +722,7 @@ Deseja realmente limpar a cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 158 + 157 @@ -726,7 +730,7 @@ Por favor, defina a sua mensagem do sistema: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 188 + 187 @@ -822,16 +826,12 @@ Deseja realmente excluir este utilizador? apps/client/src/app/components/admin-users/admin-users.component.ts - 86 + 112 User Utilizador - - apps/client/src/app/components/admin-users/admin-users.html - 9 - apps/client/src/app/components/header/header.component.html 192 @@ -842,7 +842,7 @@ Registo apps/client/src/app/components/admin-users/admin-users.html - 17 + 82 @@ -854,7 +854,7 @@ apps/client/src/app/components/admin-users/admin-users.html - 20 + 99 apps/client/src/app/components/header/header.component.html @@ -874,15 +874,15 @@ Envolvimento por Dia apps/client/src/app/components/admin-users/admin-users.html - 29 + 144 - + Last Request - Último Pedido + Último Pedido apps/client/src/app/components/admin-users/admin-users.html - 35,37 + 169,171 @@ -1577,11 +1577,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 155 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 217 + 211 @@ -1633,29 +1633,13 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 148 + 142 libs/ui/src/lib/activities-table/activities-table.component.html 222 - - First Buy Date - Data da Primeira Compra - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 158 - - - - Transactions - Transações - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 167 - - Sector Setor @@ -1665,7 +1649,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 196 + 198 @@ -1677,11 +1661,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 14 + 63 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 208 + 210 @@ -1693,7 +1677,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 214 + 216 apps/client/src/app/pages/public/public-page.html @@ -1709,7 +1693,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 226 + 228 @@ -1721,11 +1705,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 268 + 270 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 315 + 309 @@ -1733,7 +1717,7 @@ Dados do Relatório com Problema apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 285 + 287 @@ -1965,7 +1949,7 @@ Conta apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 75 + 69 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1979,13 +1963,17 @@ apps/client/src/app/components/user-account-membership/user-account-membership.html 2 + + libs/ui/src/lib/membership-card/membership-card.component.html + 18 + Upgrade Atualizar apps/client/src/app/components/user-account-membership/user-account-membership.html - 26 + 19 @@ -1993,7 +1981,7 @@ por ano apps/client/src/app/components/user-account-membership/user-account-membership.html - 41 + 34 apps/client/src/app/pages/pricing/pricing-page.html @@ -2005,7 +1993,7 @@ Experimentar Premium apps/client/src/app/components/user-account-membership/user-account-membership.html - 49 + 43 @@ -2013,7 +2001,7 @@ Resgatar Cupão apps/client/src/app/components/user-account-membership/user-account-membership.html - 62 + 56 @@ -2417,7 +2405,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 97 + 91 @@ -2425,11 +2413,11 @@ Preço por Unidade apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 168 + 162 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 223 + 217 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2441,11 +2429,11 @@ Comissão apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 237 + 231 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 256 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2465,7 +2453,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 271 + 265 @@ -3460,8 +3448,8 @@ Valid until Válido até - apps/client/src/app/components/user-account-membership/user-account-membership.html - 17 + libs/ui/src/lib/membership-card/membership-card.component.html + 22 @@ -3869,7 +3857,7 @@ Oops! Não foi possível obter a taxa de câmbio histórica de apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 253 + 247 @@ -3913,7 +3901,7 @@ Renovar apps/client/src/app/components/user-account-membership/user-account-membership.html - 29 + 22 @@ -3937,7 +3925,7 @@ Personificar Utilizador apps/client/src/app/components/admin-users/admin-users.html - 121 + 207 @@ -3945,7 +3933,7 @@ Apagar Utilizador apps/client/src/app/components/admin-users/admin-users.html - 129 + 215 @@ -4021,7 +4009,7 @@ Atualizar saldo em Dinheiro apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 89 + 83 @@ -4081,7 +4069,7 @@ Ações apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 43 + 54 @@ -7501,7 +7489,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 57 + 51 @@ -7509,7 +7497,7 @@ Mortgages, personal loans, credit cards apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 51 + 45 @@ -7517,7 +7505,7 @@ Luxury items, real estate, private companies apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 63 + 57 @@ -8145,11 +8133,11 @@ apps/client/src/app/app.component.ts - 55 + 54 apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + 19 @@ -8161,7 +8149,7 @@ apps/client/src/app/app.component.ts - 56 + 55 apps/client/src/app/components/header/header.component.ts @@ -8173,7 +8161,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + 20 apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts @@ -8329,19 +8317,19 @@ apps/client/src/app/app.component.ts - 48 + 47 apps/client/src/app/app.component.ts - 49 + 48 apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/app.component.ts - 52 + 51 apps/client/src/app/components/header/header.component.ts @@ -8521,7 +8509,7 @@ apps/client/src/app/app.component.ts - 53 + 52 apps/client/src/app/pages/about/about-page.component.ts @@ -8537,7 +8525,7 @@ apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/pages/about/about-page.component.ts @@ -8553,7 +8541,7 @@ apps/client/src/app/app.component.ts - 57 + 56 apps/client/src/app/components/header/header.component.ts @@ -8585,7 +8573,7 @@ apps/client/src/app/app.component.ts - 58 + 57 apps/client/src/app/components/header/header.component.ts @@ -8639,6 +8627,10 @@ apps/client/src/app/pages/faq/faq-page.component.ts 15 + + libs/ui/src/lib/membership-card/membership-card.component.ts + 13 + register @@ -8649,7 +8641,7 @@ apps/client/src/app/app.component.ts - 59 + 58 apps/client/src/app/components/header/header.component.ts @@ -8685,7 +8677,7 @@ apps/client/src/app/app.component.ts - 60 + 59 apps/client/src/app/components/header/header.component.ts @@ -10189,7 +10181,7 @@ One-time fee, annual account fees apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 30 + 27 @@ -10197,7 +10189,7 @@ Distribution of corporate earnings apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 36 + 33 @@ -10205,7 +10197,7 @@ 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 - 193,194 + 187,188 @@ -10229,7 +10221,7 @@ Revenue for lending out money apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 45 + 39 @@ -10460,6 +10452,14 @@ 15 + + User + User + + apps/client/src/app/components/admin-users/admin-users.html + 29,31 + + diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index e0ca1f05f..e34df640b 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -10,19 +10,19 @@ apps/client/src/app/app.component.ts - 48 + 47 apps/client/src/app/app.component.ts - 49 + 48 apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/app.component.ts - 52 + 51 apps/client/src/app/components/header/header.component.ts @@ -202,11 +202,11 @@ apps/client/src/app/app.component.ts - 55 + 54 apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + 19 @@ -218,7 +218,7 @@ apps/client/src/app/app.component.ts - 56 + 55 apps/client/src/app/components/header/header.component.ts @@ -230,7 +230,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + 20 apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts @@ -386,7 +386,7 @@ apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/pages/about/about-page.component.ts @@ -402,7 +402,7 @@ apps/client/src/app/app.component.ts - 57 + 56 apps/client/src/app/components/header/header.component.ts @@ -434,7 +434,7 @@ apps/client/src/app/app.component.ts - 58 + 57 apps/client/src/app/components/header/header.component.ts @@ -488,6 +488,10 @@ apps/client/src/app/pages/faq/faq-page.component.ts 15 + + libs/ui/src/lib/membership-card/membership-card.component.ts + 13 + privacy-policy @@ -498,7 +502,7 @@ apps/client/src/app/app.component.ts - 53 + 52 apps/client/src/app/pages/about/about-page.component.ts @@ -514,7 +518,7 @@ apps/client/src/app/app.component.ts - 59 + 58 apps/client/src/app/components/header/header.component.ts @@ -550,7 +554,7 @@ apps/client/src/app/app.component.ts - 60 + 59 apps/client/src/app/components/header/header.component.ts @@ -1086,7 +1090,7 @@ Alım satımda kayıp riski büyük boyutta olabilir. Kısa vadede ihtiyaç duyabileceğiniz parayla yatırım yapmak tavsiye edilmez. apps/client/src/app/app.component.html - 175,176 + 174,175 @@ -1162,7 +1166,7 @@ Nakit Bakiye apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 32 + 43 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -1178,7 +1182,7 @@ Menkul Kıymet apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 43 + 54 @@ -1186,7 +1190,7 @@ Platform apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 52 + 63 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -1202,11 +1206,11 @@ İşlemler apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 48 + 59 apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 58 + 69 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -1222,11 +1226,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 23 + 120 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 249 + 251 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -1262,7 +1266,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 109 + 103 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1302,7 +1306,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 115 + 109 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1326,31 +1330,31 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 163 + 157 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 164 + 158 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 166 + 160 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 219 + 213 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 220 + 214 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 221 + 215 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 222 + 216 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1450,7 +1454,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 125 + 119 @@ -1550,7 +1554,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 131 + 125 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1606,7 +1610,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 357 + 351 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1646,7 +1650,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 364 + 358 @@ -1694,11 +1698,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 172 + 174 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 286 + 280 @@ -1714,11 +1718,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 181 + 183 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 302 + 296 @@ -1732,6 +1736,10 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 102 + + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html + 158 + libs/ui/src/lib/holdings-table/holdings-table.component.html 50 @@ -1826,7 +1834,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 196 + 198 @@ -1838,11 +1846,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 14 + 63 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 208 + 210 @@ -1854,7 +1862,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 214 + 216 apps/client/src/app/pages/public/public-page.html @@ -1870,7 +1878,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 226 + 228 @@ -1902,7 +1910,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 271 + 265 @@ -1922,7 +1930,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 97 + 91 @@ -1930,7 +1938,7 @@ Lütfen bir para birimi giriniz: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 114 + 113 @@ -1938,7 +1946,7 @@ Önbelleği temizlemeyi gerçekten istiyor musunuz? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 128 + 127 @@ -1946,7 +1954,7 @@ Bu para birimini silmeyi gerçekten istiyor musunuz? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 141 + 140 @@ -1954,7 +1962,7 @@ Önbelleği temizlemeyi gerçekten istiyor musunuz apps/client/src/app/components/admin-overview/admin-overview.component.ts - 158 + 157 @@ -1962,7 +1970,7 @@ Lütfen sistem mesajınızı belirleyin: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 188 + 187 @@ -2014,11 +2022,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 268 + 270 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 315 + 309 @@ -2114,7 +2122,7 @@ apps/client/src/app/components/admin-users/admin-users.html - 20 + 99 apps/client/src/app/components/header/header.component.html @@ -2166,16 +2174,12 @@ Bu kullanıcıyı silmeyi gerçekten istiyor musunu? apps/client/src/app/components/admin-users/admin-users.component.ts - 86 + 112 User Kullanıcı - - apps/client/src/app/components/admin-users/admin-users.html - 9 - apps/client/src/app/components/header/header.component.html 192 @@ -2186,7 +2190,7 @@ Kayıt apps/client/src/app/components/admin-users/admin-users.html - 17 + 82 @@ -2194,15 +2198,15 @@ Günlük etkileşim apps/client/src/app/components/admin-users/admin-users.html - 29 + 144 - + Last Request - Son Talep + Son Talep apps/client/src/app/components/admin-users/admin-users.html - 35,37 + 169,171 @@ -2210,7 +2214,7 @@ Kullanıcıyı Taklit Et apps/client/src/app/components/admin-users/admin-users.html - 121 + 207 @@ -2218,7 +2222,7 @@ Kullanıcıyı Sil apps/client/src/app/components/admin-users/admin-users.html - 129 + 215 @@ -2809,11 +2813,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 155 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 217 + 211 @@ -2865,7 +2869,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 148 + 142 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2888,28 +2892,12 @@ 150 - - First Buy Date - First Buy Date - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 158 - - - - Transactions - Transactions - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 167 - - Report Data Glitch Report Data Glitch apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 285 + 287 @@ -3985,7 +3973,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 57 + 51 @@ -3993,7 +3981,7 @@ Mortgages, personal loans, credit cards apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 51 + 45 @@ -4001,7 +3989,7 @@ Luxury items, real estate, private companies apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 63 + 57 @@ -4009,7 +3997,7 @@ Account apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 75 + 69 libs/ui/src/lib/activities-table/activities-table.component.html @@ -4021,7 +4009,7 @@ Update Cash Balance apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 89 + 83 @@ -4029,11 +4017,11 @@ Unit Price apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 168 + 162 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 223 + 217 libs/ui/src/lib/activities-table/activities-table.component.html @@ -4045,7 +4033,7 @@ 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 - 253 + 247 @@ -4053,11 +4041,11 @@ Fee apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 237 + 231 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 256 libs/ui/src/lib/activities-table/activities-table.component.html @@ -9323,13 +9311,17 @@ apps/client/src/app/components/user-account-membership/user-account-membership.html 2 + + libs/ui/src/lib/membership-card/membership-card.component.html + 18 + Valid until Valid until - apps/client/src/app/components/user-account-membership/user-account-membership.html - 17 + libs/ui/src/lib/membership-card/membership-card.component.html + 22 @@ -9337,7 +9329,7 @@ Upgrade apps/client/src/app/components/user-account-membership/user-account-membership.html - 26 + 19 @@ -9345,7 +9337,7 @@ Renew apps/client/src/app/components/user-account-membership/user-account-membership.html - 29 + 22 @@ -9353,7 +9345,7 @@ per year apps/client/src/app/components/user-account-membership/user-account-membership.html - 41 + 34 apps/client/src/app/pages/pricing/pricing-page.html @@ -9365,7 +9357,7 @@ Try Premium apps/client/src/app/components/user-account-membership/user-account-membership.html - 49 + 43 @@ -9373,7 +9365,7 @@ Redeem Coupon apps/client/src/app/components/user-account-membership/user-account-membership.html - 62 + 56 @@ -10189,7 +10181,7 @@ One-time fee, annual account fees apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 30 + 27 @@ -10197,7 +10189,7 @@ Distribution of corporate earnings apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 36 + 33 @@ -10205,7 +10197,7 @@ Revenue for lending out money apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 45 + 39 @@ -10213,7 +10205,7 @@ 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 - 193,194 + 187,188 @@ -10460,6 +10452,14 @@ 15 + + User + User + + apps/client/src/app/components/admin-users/admin-users.html + 29,31 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 1edb3b26a..faad8e131 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -10,19 +10,19 @@ apps/client/src/app/app.component.ts - 48 + 47 apps/client/src/app/app.component.ts - 49 + 48 apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/app.component.ts - 52 + 51 apps/client/src/app/components/header/header.component.ts @@ -201,11 +201,11 @@ apps/client/src/app/app.component.ts - 55 + 54 apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 20 + 19 @@ -216,7 +216,7 @@ apps/client/src/app/app.component.ts - 56 + 55 apps/client/src/app/components/header/header.component.ts @@ -228,7 +228,7 @@ apps/client/src/app/pages/about/overview/about-overview-page.component.ts - 21 + 20 apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.component.ts @@ -383,7 +383,7 @@ apps/client/src/app/app.component.ts - 50 + 49 apps/client/src/app/pages/about/about-page.component.ts @@ -398,7 +398,7 @@ apps/client/src/app/app.component.ts - 57 + 56 apps/client/src/app/components/header/header.component.ts @@ -429,7 +429,7 @@ apps/client/src/app/app.component.ts - 58 + 57 apps/client/src/app/components/header/header.component.ts @@ -483,6 +483,10 @@ apps/client/src/app/pages/faq/faq-page.component.ts 15 + + libs/ui/src/lib/membership-card/membership-card.component.ts + 13 + privacy-policy @@ -492,7 +496,7 @@ apps/client/src/app/app.component.ts - 53 + 52 apps/client/src/app/pages/about/about-page.component.ts @@ -507,7 +511,7 @@ apps/client/src/app/app.component.ts - 59 + 58 apps/client/src/app/components/header/header.component.ts @@ -542,7 +546,7 @@ apps/client/src/app/app.component.ts - 60 + 59 apps/client/src/app/components/header/header.component.ts @@ -1065,7 +1069,7 @@ The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. apps/client/src/app/app.component.html - 175,176 + 174,175 @@ -1134,7 +1138,7 @@ Cash Balance apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 32 + 43 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -1149,14 +1153,14 @@ Equity apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 43 + 54 Platform apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 52 + 63 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -1171,11 +1175,11 @@ Activities apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 48 + 59 apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 58 + 69 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -1191,11 +1195,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 23 + 120 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 249 + 251 apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -1230,7 +1234,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 109 + 103 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1268,7 +1272,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 115 + 109 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1291,31 +1295,31 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 163 + 157 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 164 + 158 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 166 + 160 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 219 + 213 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 220 + 214 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 221 + 215 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 222 + 216 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1410,7 +1414,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 125 + 119 @@ -1498,7 +1502,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 131 + 125 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1552,7 +1556,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 357 + 351 apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -1591,7 +1595,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 364 + 358 @@ -1634,11 +1638,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 172 + 174 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 286 + 280 @@ -1653,11 +1657,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 181 + 183 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 302 + 296 @@ -1670,6 +1674,10 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 102 + + apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html + 158 + libs/ui/src/lib/holdings-table/holdings-table.component.html 50 @@ -1754,7 +1762,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 196 + 198 @@ -1765,11 +1773,11 @@ apps/client/src/app/components/admin-users/admin-users.html - 14 + 63 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 208 + 210 @@ -1780,7 +1788,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 214 + 216 apps/client/src/app/pages/public/public-page.html @@ -1795,7 +1803,7 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 226 + 228 @@ -1824,7 +1832,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 271 + 265 @@ -1842,42 +1850,42 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 97 + 91 Please add a currency: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 114 + 113 Do you really want to delete this coupon? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 128 + 127 Do you really want to delete this currency? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 141 + 140 Do you really want to flush the cache? apps/client/src/app/components/admin-overview/admin-overview.component.ts - 158 + 157 Please set your system message: apps/client/src/app/components/admin-overview/admin-overview.component.ts - 188 + 187 @@ -1923,11 +1931,11 @@ apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 268 + 270 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 315 + 309 @@ -2012,7 +2020,7 @@ apps/client/src/app/components/admin-users/admin-users.html - 20 + 99 apps/client/src/app/components/header/header.component.html @@ -2059,15 +2067,11 @@ Do you really want to delete this user? apps/client/src/app/components/admin-users/admin-users.component.ts - 86 + 112 User - - apps/client/src/app/components/admin-users/admin-users.html - 9 - apps/client/src/app/components/header/header.component.html 192 @@ -2077,35 +2081,35 @@ Registration apps/client/src/app/components/admin-users/admin-users.html - 17 + 82 Engagement per Day apps/client/src/app/components/admin-users/admin-users.html - 29 + 144 - + Last Request apps/client/src/app/components/admin-users/admin-users.html - 35,37 + 169,171 Impersonate User apps/client/src/app/components/admin-users/admin-users.html - 121 + 207 Delete User apps/client/src/app/components/admin-users/admin-users.html - 129 + 215 @@ -2635,11 +2639,11 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 155 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 217 + 211 @@ -2685,7 +2689,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 148 + 142 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2707,25 +2711,11 @@ 150 - - First Buy Date - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 158 - - - - Transactions - - apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 167 - - Report Data Glitch apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html - 285 + 287 @@ -3722,28 +3712,28 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 57 + 51 Mortgages, personal loans, credit cards apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 51 + 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 - 63 + 57 Account apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 75 + 69 libs/ui/src/lib/activities-table/activities-table.component.html @@ -3754,18 +3744,18 @@ Update Cash Balance apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 89 + 83 Unit Price apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 168 + 162 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 223 + 217 libs/ui/src/lib/activities-table/activities-table.component.html @@ -3776,18 +3766,18 @@ 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 - 253 + 247 Fee apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 237 + 231 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 256 libs/ui/src/lib/activities-table/activities-table.component.html @@ -4382,7 +4372,7 @@ per year apps/client/src/app/components/user-account-membership/user-account-membership.html - 41 + 34 apps/client/src/app/pages/pricing/pricing-page.html @@ -8928,40 +8918,44 @@ apps/client/src/app/components/user-account-membership/user-account-membership.html 2 + + libs/ui/src/lib/membership-card/membership-card.component.html + 18 + Valid until - apps/client/src/app/components/user-account-membership/user-account-membership.html - 17 + libs/ui/src/lib/membership-card/membership-card.component.html + 22 Upgrade apps/client/src/app/components/user-account-membership/user-account-membership.html - 26 + 19 Renew apps/client/src/app/components/user-account-membership/user-account-membership.html - 29 + 22 Try Premium apps/client/src/app/components/user-account-membership/user-account-membership.html - 49 + 43 Redeem Coupon apps/client/src/app/components/user-account-membership/user-account-membership.html - 62 + 56 @@ -9654,28 +9648,28 @@ Distribution of corporate earnings apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 36 + 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 - 193,194 + 187,188 One-time fee, annual account fees apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 30 + 27 Revenue for lending out money apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 45 + 39 @@ -9887,6 +9881,13 @@ 4,7 + + User + + apps/client/src/app/components/admin-users/admin-users.html + 29,31 + + From 3212efef17fefb0f2cc5337d469c71bf1b577b51 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 24 Oct 2023 19:40:53 +0200 Subject: [PATCH 072/194] Feature/upgrade yahoo finance2 to version 2.8.1 (#2536) * Upgrade yahoo-finance2 to version 2.8.1 * Update changelog --- CHANGELOG.md | 1 + package.json | 2 +- yarn.lock | 8 ++++---- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c06cf7a0..4622db477 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the style and wording of the position detail dialog - Changed the currency selector in the create or update account dialog to `@angular/material/autocomplete` +- Upgraded `yahoo-finance2` from version `2.8.0` to `2.8.1` ## 2.14.0 - 2023-10-21 diff --git a/package.json b/package.json index 7a5eb4b55..523bd6668 100644 --- a/package.json +++ b/package.json @@ -129,7 +129,7 @@ "svgmap": "2.6.0", "twitter-api-v2": "1.14.2", "uuid": "9.0.0", - "yahoo-finance2": "2.8.0", + "yahoo-finance2": "2.8.1", "zone.js": "0.13.1" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index 3c798bb15..010fdcb37 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19043,10 +19043,10 @@ y18n@^5.0.5: resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== -yahoo-finance2@2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/yahoo-finance2/-/yahoo-finance2-2.8.0.tgz#c1c1d139d6d16ff3e105af6269e6c869724ac16d" - integrity sha512-8KupoZQEBb+nynDXcOinYdrQ0anPjrX1wQQ8ehVOGZUGMW73fR2YznxumRlVyqSw9J9clS7eS8UhjcOUecmKUA== +yahoo-finance2@2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/yahoo-finance2/-/yahoo-finance2-2.8.1.tgz#6fd59a84ef16be46cfbcf8a4ac0d32b81ffe074a" + integrity sha512-1125oJYLQ5Bz9ne5jU1eACdE15cBFWMzYm04fY201eiqiWMK+s6YCJVuUyJVgWgXVt61wwr88/QageNCl0w04A== dependencies: "@types/tough-cookie" "^4.0.2" ajv "8.10.0" From 0567083fc1389e6c6819d8fa9911dace3bfda032 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 24 Oct 2023 20:12:00 +0200 Subject: [PATCH 073/194] Feature/upgrade UUID to version 9.0.1 (#2537) * Upgrade uuid to version 9.0.1 * Update changelog --- CHANGELOG.md | 1 + package.json | 2 +- yarn.lock | 5 +++++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4622db477..d35e30c60 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the style and wording of the position detail dialog - Changed the currency selector in the create or update account dialog to `@angular/material/autocomplete` +- Upgraded `uuid` from version `9.0.0` to `9.0.1` - Upgraded `yahoo-finance2` from version `2.8.0` to `2.8.1` ## 2.14.0 - 2023-10-21 diff --git a/package.json b/package.json index 523bd6668..0a768d56f 100644 --- a/package.json +++ b/package.json @@ -128,7 +128,7 @@ "stripe": "11.12.0", "svgmap": "2.6.0", "twitter-api-v2": "1.14.2", - "uuid": "9.0.0", + "uuid": "9.0.1", "yahoo-finance2": "2.8.1", "zone.js": "0.13.1" }, diff --git a/yarn.lock b/yarn.lock index 010fdcb37..b1d6f69c3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18457,6 +18457,11 @@ uuid@9.0.0, uuid@^9.0.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== +uuid@9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" + integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== + uuid@^8.3.0, uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" From fa627f686fdad2f64ec9c9a9444a171d5c28d299 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 24 Oct 2023 20:13:57 +0200 Subject: [PATCH 074/194] Bugfix/fix chart for account excluded from analysis (#2534) * Fix chart for account excluded from analysis * Update changelog --- CHANGELOG.md | 4 ++++ .../src/app/portfolio/portfolio.controller.ts | 4 +++- .../src/app/portfolio/portfolio.service.ts | 21 ++++++++++++------- .../account-detail-dialog.component.ts | 3 ++- apps/client/src/app/services/data.service.ts | 8 ++++++- 5 files changed, 30 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d35e30c60..6d8584c53 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Upgraded `uuid` from version `9.0.0` to `9.0.1` - Upgraded `yahoo-finance2` from version `2.8.0` to `2.8.1` +### Fixed + +- Fixed the chart in the account detail dialog for accounts excluded from analysis + ## 2.14.0 - 2023-10-21 ### Added diff --git a/apps/api/src/app/portfolio/portfolio.controller.ts b/apps/api/src/app/portfolio/portfolio.controller.ts index 6e42b1304..1c022ba17 100644 --- a/apps/api/src/app/portfolio/portfolio.controller.ts +++ b/apps/api/src/app/portfolio/portfolio.controller.ts @@ -323,7 +323,8 @@ export class PortfolioController { @Query('accounts') filterByAccounts?: string, @Query('assetClasses') filterByAssetClasses?: string, @Query('range') dateRange: DateRange = 'max', - @Query('tags') filterByTags?: string + @Query('tags') filterByTags?: string, + @Query('withExcludedAccounts') withExcludedAccounts = false ): Promise { const filters = this.apiService.buildFiltersFromQueryParams({ filterByAccounts, @@ -335,6 +336,7 @@ export class PortfolioController { dateRange, filters, impersonationId, + withExcludedAccounts, userId: this.request.user.id }); diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index fcd2cb13c..b2538fb6a 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -372,20 +372,23 @@ export class PortfolioService { filters, impersonationId, userCurrency, - userId + userId, + withExcludedAccounts = false }: { dateRange?: DateRange; filters?: Filter[]; impersonationId: string; userCurrency: string; userId: string; + withExcludedAccounts?: boolean; }): Promise { userId = await this.getUserId(impersonationId, userId); const { portfolioOrders, transactionPoints } = await this.getTransactionPoints({ filters, - userId + userId, + withExcludedAccounts }); const portfolioCalculator = new PortfolioCalculator({ @@ -1110,12 +1113,14 @@ export class PortfolioService { dateRange = 'max', filters, impersonationId, - userId + userId, + withExcludedAccounts = false }: { dateRange?: DateRange; filters?: Filter[]; impersonationId: string; userId: string; + withExcludedAccounts?: boolean; }): Promise { userId = await this.getUserId(impersonationId, userId); const user = await this.userService.user({ id: userId }); @@ -1124,7 +1129,8 @@ export class PortfolioService { const { portfolioOrders, transactionPoints } = await this.getTransactionPoints({ filters, - userId + userId, + withExcludedAccounts }); const portfolioCalculator = new PortfolioCalculator({ @@ -1174,7 +1180,8 @@ export class PortfolioService { filters, impersonationId, userCurrency, - userId + userId, + withExcludedAccounts }); const itemOfToday = historicalDataContainer.items.find((item) => { @@ -1763,7 +1770,7 @@ export class PortfolioService { filters, includeDrafts = false, userId, - withExcludedAccounts + withExcludedAccounts = false }: { filters?: Filter[]; includeDrafts?: boolean; @@ -1851,7 +1858,7 @@ export class PortfolioService { portfolioItemsNow, userCurrency, userId, - withExcludedAccounts + withExcludedAccounts = false }: { filters?: Filter[]; orders: OrderWithAccount[]; diff --git a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts index 756df74cf..d232cb3df 100644 --- a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts +++ b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts @@ -116,7 +116,8 @@ export class AccountDetailDialog implements OnDestroy, OnInit { type: 'ACCOUNT' } ], - range: 'max' + range: 'max', + withExcludedAccounts: true }) .pipe(takeUntil(this.unsubscribeSubject)) .subscribe(({ chart }) => { diff --git a/apps/client/src/app/services/data.service.ts b/apps/client/src/app/services/data.service.ts index f5cafb57a..a83c423fe 100644 --- a/apps/client/src/app/services/data.service.ts +++ b/apps/client/src/app/services/data.service.ts @@ -386,14 +386,20 @@ export class DataService { public fetchPortfolioPerformance({ filters, - range + range, + withExcludedAccounts = false }: { filters?: Filter[]; range: DateRange; + withExcludedAccounts?: boolean; }): Observable { let params = this.buildFiltersAsQueryParams({ filters }); params = params.append('range', range); + if (withExcludedAccounts) { + params = params.append('withExcludedAccounts', withExcludedAccounts); + } + return this.http .get(`/api/v2/portfolio/performance`, { params From 2dcc7e161c31ddf4951950b229a15a7f6f3ca6a7 Mon Sep 17 00:00:00 2001 From: Rafael Date: Tue, 24 Oct 2023 15:51:48 -0300 Subject: [PATCH 075/194] Improve validation of activities import (#2496) * Improve validation of activities import: expects positive values for fee, quantity and unitPrice * Update changelog --------- Co-authored-by: Rafael Claudio Co-authored-by: Thomas <4159106+dtslvr@users.noreply.github.com> --- CHANGELOG.md | 1 + apps/api/src/app/order/create-order.dto.ts | 7 ++++++- apps/api/src/app/order/update-order.dto.ts | 7 ++++++- apps/client/src/app/services/import-activities.service.ts | 4 ++-- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6d8584c53..05081fc6c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Improved the style and wording of the position detail dialog +- Improved the validation in the activities import (expects positive values for `fee`, `quantity` and `unitPrice`) - Changed the currency selector in the create or update account dialog to `@angular/material/autocomplete` - Upgraded `uuid` from version `9.0.0` to `9.0.1` - Upgraded `yahoo-finance2` from version `2.8.0` to `2.8.1` diff --git a/apps/api/src/app/order/create-order.dto.ts b/apps/api/src/app/order/create-order.dto.ts index 49b193ca5..3eafa704f 100644 --- a/apps/api/src/app/order/create-order.dto.ts +++ b/apps/api/src/app/order/create-order.dto.ts @@ -13,7 +13,9 @@ import { IsISO8601, IsNumber, IsOptional, - IsString + IsPositive, + IsString, + Min } from 'class-validator'; import { isString } from 'lodash'; @@ -48,9 +50,11 @@ export class CreateOrderDto { date: string; @IsNumber() + @Min(0) fee: number; @IsNumber() + @IsPositive() quantity: number; @IsString() @@ -64,6 +68,7 @@ export class CreateOrderDto { type: Type; @IsNumber() + @IsPositive() unitPrice: number; @IsBoolean() diff --git a/apps/api/src/app/order/update-order.dto.ts b/apps/api/src/app/order/update-order.dto.ts index a8c33c40e..9d968aa86 100644 --- a/apps/api/src/app/order/update-order.dto.ts +++ b/apps/api/src/app/order/update-order.dto.ts @@ -13,7 +13,9 @@ import { IsISO8601, IsNumber, IsOptional, - IsString + IsPositive, + IsString, + Min } from 'class-validator'; import { isString } from 'lodash'; @@ -47,12 +49,14 @@ export class UpdateOrderDto { date: string; @IsNumber() + @Min(0) fee: number; @IsString() id: string; @IsNumber() + @IsPositive() quantity: number; @IsString() @@ -66,5 +70,6 @@ export class UpdateOrderDto { type: Type; @IsNumber() + @IsPositive() unitPrice: number; } diff --git a/apps/client/src/app/services/import-activities.service.ts b/apps/client/src/app/services/import-activities.service.ts index 760871922..af7e8e6c9 100644 --- a/apps/client/src/app/services/import-activities.service.ts +++ b/apps/client/src/app/services/import-activities.service.ts @@ -286,7 +286,7 @@ export class ImportActivitiesService { for (const key of ImportActivitiesService.QUANTITY_KEYS) { if (isFinite(item[key])) { - return item[key]; + return Math.abs(item[key]); } } @@ -372,7 +372,7 @@ export class ImportActivitiesService { for (const key of ImportActivitiesService.UNIT_PRICE_KEYS) { if (isFinite(item[key])) { - return item[key]; + return Math.abs(item[key]); } } From 2992a0da4c7ebe41f9334d783ddbd2683b9c2355 Mon Sep 17 00:00:00 2001 From: Basim Mohammed <107759928+Basimohd@users.noreply.github.com> Date: Wed, 25 Oct 2023 23:57:41 +0530 Subject: [PATCH 076/194] Verify current benchmark before loading it (#2541) * Verify current benchmark before loading it * Update changelog --------- Co-authored-by: Thomas <4159106+dtslvr@users.noreply.github.com> --- CHANGELOG.md | 1 + .../analysis/analysis-page.component.ts | 43 ++++++++++--------- .../portfolio/analysis/analysis-page.html | 6 +-- 3 files changed, 26 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 05081fc6c..cd02ca318 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Fixed the chart in the account detail dialog for accounts excluded from analysis +- Verified the current benchmark before loading it on the analysis page ## 2.14.0 - 2023-10-21 diff --git a/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts b/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts index ddac55046..51dcee24c 100644 --- a/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts +++ b/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -309,7 +309,6 @@ export class AnalysisPageComponent implements OnDestroy, OnInit { } private update() { - this.isLoadingBenchmarkComparator = true; this.isLoadingInvestmentChart = true; this.dataService @@ -385,35 +384,37 @@ export class AnalysisPageComponent implements OnDestroy, OnInit { } private updateBenchmarkDataItems() { + this.benchmarkDataItems = []; + if (this.user.settings.benchmark) { const { dataSource, symbol } = this.benchmarks.find(({ id }) => { return id === this.user.settings.benchmark; }) ?? {}; - this.dataService - .fetchBenchmarkBySymbol({ - dataSource, - symbol, - startDate: this.firstOrderDate - }) - .pipe(takeUntil(this.unsubscribeSubject)) - .subscribe(({ marketData }) => { - this.benchmarkDataItems = marketData.map(({ date, value }) => { - return { - date, - value - }; - }); + if (dataSource && symbol) { + this.isLoadingBenchmarkComparator = true; - this.isLoadingBenchmarkComparator = false; + this.dataService + .fetchBenchmarkBySymbol({ + dataSource, + symbol, + startDate: this.firstOrderDate + }) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(({ marketData }) => { + this.benchmarkDataItems = marketData.map(({ date, value }) => { + return { + date, + value + }; + }); - this.changeDetectorRef.markForCheck(); - }); - } else { - this.benchmarkDataItems = []; + this.isLoadingBenchmarkComparator = false; - this.isLoadingBenchmarkComparator = false; + this.changeDetectorRef.markForCheck(); + }); + } } } } 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 3ae58595e..f7af5d476 100644 --- a/apps/client/src/app/pages/portfolio/analysis/analysis-page.html +++ b/apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -3,7 +3,7 @@
    @@ -23,7 +23,7 @@ [benchmarks]="benchmarks" [colorScheme]="user?.settings?.colorScheme" [daysInMarket]="daysInMarket" - [isLoading]="isLoadingBenchmarkComparator" + [isLoading]="isLoadingBenchmarkComparator || isLoadingInvestmentChart" [locale]="user?.settings?.locale" [performanceDataItems]="performanceDataItemsInPercentage" [user]="user" @@ -149,7 +149,7 @@ [daysInMarket]="daysInMarket" [historicalDataItems]="performanceDataItems" [isInPercent]="hasImpersonationId || user.settings.isRestrictedView" - [isLoading]="isLoadingBenchmarkComparator" + [isLoading]="isLoadingInvestmentChart" [locale]="user?.settings?.locale" [range]="user?.settings?.dateRange" > From 0af37ca1d769b8f6d55f7443424b6bf1d5a2cb63 Mon Sep 17 00:00:00 2001 From: Aldrin <53973174+Dhoni77@users.noreply.github.com> Date: Wed, 25 Oct 2023 23:58:51 +0530 Subject: [PATCH 077/194] Extend asset profile dialog form (#2535) * Extend asset profile dialog form * Update changelog --- CHANGELOG.md | 4 ++ apps/api/src/app/admin/admin.service.ts | 6 +++ .../src/app/admin/update-asset-profile.dto.ts | 16 ++++++- .../symbol-profile/symbol-profile.service.ts | 12 +++++- .../asset-profile-dialog.component.ts | 36 ++++++++++++---- .../asset-profile-dialog.html | 42 +++++++++++++++++-- .../asset-profile-dialog.module.ts | 2 + apps/client/src/app/services/admin.service.ts | 12 +++++- 8 files changed, 115 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cd02ca318..9a6074cfd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Added + +- Added support to edit the name, asset class and asset sub class of asset profiles with `MANUAL` data source in the asset profile details dialog of the admin control panel + ### Changed - Improved the style and wording of the position detail dialog diff --git a/apps/api/src/app/admin/admin.service.ts b/apps/api/src/app/admin/admin.service.ts index 84ae5934c..a42723ba3 100644 --- a/apps/api/src/app/admin/admin.service.ts +++ b/apps/api/src/app/admin/admin.service.ts @@ -303,15 +303,21 @@ export class AdminService { } public async patchAssetProfileData({ + assetClass, + assetSubClass, comment, dataSource, + name, scraperConfiguration, symbol, symbolMapping }: Prisma.SymbolProfileUpdateInput & UniqueAsset) { await this.symbolProfileService.updateSymbolProfile({ + assetClass, + assetSubClass, comment, dataSource, + name, scraperConfiguration, symbol, symbolMapping 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 54f2d8f25..a39f8db81 100644 --- a/apps/api/src/app/admin/update-asset-profile.dto.ts +++ b/apps/api/src/app/admin/update-asset-profile.dto.ts @@ -1,11 +1,23 @@ -import { Prisma } from '@prisma/client'; -import { IsObject, IsOptional, IsString } from 'class-validator'; +import { AssetClass, AssetSubClass, Prisma } from '@prisma/client'; +import { IsEnum, IsObject, IsOptional, IsString } from 'class-validator'; export class UpdateAssetProfileDto { + @IsEnum(AssetClass, { each: true }) + @IsOptional() + assetClass?: AssetClass; + + @IsEnum(AssetSubClass, { each: true }) + @IsOptional() + assetSubClass?: AssetSubClass; + @IsString() @IsOptional() comment?: string; + @IsString() + @IsOptional() + name?: string; + @IsObject() @IsOptional() scraperConfiguration?: Prisma.InputJsonObject; 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 b861ccf8f..46a6991cb 100644 --- a/apps/api/src/services/symbol-profile/symbol-profile.service.ts +++ b/apps/api/src/services/symbol-profile/symbol-profile.service.ts @@ -86,14 +86,24 @@ export class SymbolProfileService { } public updateSymbolProfile({ + assetClass, + assetSubClass, comment, dataSource, + name, scraperConfiguration, symbol, symbolMapping }: Prisma.SymbolProfileUpdateInput & UniqueAsset) { return this.prismaService.symbolProfile.update({ - data: { comment, scraperConfiguration, symbolMapping }, + data: { + assetClass, + assetSubClass, + comment, + name, + scraperConfiguration, + symbolMapping + }, where: { dataSource_symbol: { dataSource, symbol } } }); } 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 ccb6f3ccd..c5c2db17a 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 @@ -6,7 +6,7 @@ import { OnDestroy, OnInit } from '@angular/core'; -import { FormBuilder } from '@angular/forms'; +import { FormBuilder, FormControl, Validators } from '@angular/forms'; import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { UpdateAssetProfileDto } from '@ghostfolio/api/app/admin/update-asset-profile.dto'; import { AdminService } from '@ghostfolio/client/services/admin.service'; @@ -17,7 +17,12 @@ import { UniqueAsset } from '@ghostfolio/common/interfaces'; import { translate } from '@ghostfolio/ui/i18n'; -import { MarketData, SymbolProfile } from '@prisma/client'; +import { + AssetClass, + AssetSubClass, + MarketData, + SymbolProfile +} from '@prisma/client'; import { format, parseISO } from 'date-fns'; import { parse as csvToJson } from 'papaparse'; import { Subject } from 'rxjs'; @@ -33,14 +38,23 @@ import { AssetProfileDialogParams } from './interfaces/interfaces'; styleUrls: ['./asset-profile-dialog.component.scss'] }) export class AssetProfileDialog implements OnDestroy, OnInit { - public assetClass: string; + public assetProfileClass: string; + public assetClasses = Object.keys(AssetClass).map((assetClass) => { + return { id: assetClass, label: translate(assetClass) }; + }); + public assetSubClasses = Object.keys(AssetSubClass).map((assetSubClass) => { + return { id: assetSubClass, label: translate(assetSubClass) }; + }); public assetProfile: AdminMarketDataDetails['assetProfile']; public assetProfileForm = this.formBuilder.group({ + assetClass: new FormControl(undefined), + assetSubClass: new FormControl(undefined), comment: '', + name: ['', Validators.required], scraperConfiguration: '', symbolMapping: '' }); - public assetSubClass: string; + public assetProfileSubClass: string; public benchmarks: Partial[]; public countries: { [code: string]: { name: string; value: number }; @@ -86,8 +100,8 @@ export class AssetProfileDialog implements OnDestroy, OnInit { .subscribe(({ assetProfile, marketData }) => { this.assetProfile = assetProfile; - this.assetClass = translate(this.assetProfile?.assetClass); - this.assetSubClass = translate(this.assetProfile?.assetSubClass); + this.assetProfileClass = translate(this.assetProfile?.assetClass); + this.assetProfileSubClass = translate(this.assetProfile?.assetSubClass); this.countries = {}; this.isBenchmark = this.benchmarks.some(({ id }) => { return id === this.assetProfile.id; @@ -114,6 +128,9 @@ export class AssetProfileDialog implements OnDestroy, OnInit { } this.assetProfileForm.setValue({ + name: this.assetProfile.name, + assetClass: this.assetProfile.assetClass, + assetSubClass: this.assetProfile.assetSubClass, comment: this.assetProfile?.comment ?? '', scraperConfiguration: JSON.stringify( this.assetProfile?.scraperConfiguration ?? {} @@ -204,9 +221,12 @@ export class AssetProfileDialog implements OnDestroy, OnInit { } catch {} const assetProfileData: UpdateAssetProfileDto = { + assetClass: this.assetProfileForm.controls['assetClass'].value, + assetSubClass: this.assetProfileForm.controls['assetSubClass'].value, + comment: this.assetProfileForm.controls['comment'].value ?? null, + name: this.assetProfileForm.controls['name'].value, scraperConfiguration, - symbolMapping, - comment: this.assetProfileForm.controls['comment'].value ?? null + symbolMapping }; this.adminService 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 66d00e720..755768209 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 @@ -112,7 +112,11 @@ >
    - Asset Class
    @@ -120,8 +124,8 @@ Asset Sub Class
    @@ -174,6 +178,38 @@
    +
    + + Name + + +
    +
    + + Asset Class + + + {{ assetClass.label }} + + +
    +
    + + Asset Sub Class + + + {{ assetSubClass.label }} + + +
    ( `/api/v1/admin/profile-data/${dataSource}/${symbol}`, - { comment, scraperConfiguration, symbolMapping } + { + assetClass, + assetSubClass, + comment, + name, + scraperConfiguration, + symbolMapping + } ); } From f5ad1d2d245b44452cbdecb962191f605684e4d6 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 26 Oct 2023 19:19:43 +0200 Subject: [PATCH 078/194] Feature/set validation rule to positive number in cash balance transfer (#2544) * Add validation rule (positive number) * Update changelog --- CHANGELOG.md | 1 + apps/api/src/app/account/transfer-balance.dto.ts | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a6074cfd..583176358 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the style and wording of the position detail dialog - Improved the validation in the activities import (expects positive values for `fee`, `quantity` and `unitPrice`) +- Improved the validation in the cash balance transfer from one to another account (expects a positive value) - Changed the currency selector in the create or update account dialog to `@angular/material/autocomplete` - Upgraded `uuid` from version `9.0.0` to `9.0.1` - Upgraded `yahoo-finance2` from version `2.8.0` to `2.8.1` diff --git a/apps/api/src/app/account/transfer-balance.dto.ts b/apps/api/src/app/account/transfer-balance.dto.ts index fb602033e..93a25d7cc 100644 --- a/apps/api/src/app/account/transfer-balance.dto.ts +++ b/apps/api/src/app/account/transfer-balance.dto.ts @@ -1,4 +1,4 @@ -import { IsNumber, IsString } from 'class-validator'; +import { IsNumber, IsPositive, IsString } from 'class-validator'; export class TransferBalanceDto { @IsString() @@ -8,5 +8,6 @@ export class TransferBalanceDto { accountIdTo: string; @IsNumber() + @IsPositive() balance: number; } From f3c2fb853dc6ac886b6d5fa919ee326af5054c26 Mon Sep 17 00:00:00 2001 From: Rahul RK <47377566+rahulrk-dev@users.noreply.github.com> Date: Thu, 26 Oct 2023 23:05:56 +0530 Subject: [PATCH 079/194] Upgrade to Nx 17 (#2545) * Upgrade to Nx 17 * Update changelog --- .gitignore | 1 + .prettierignore | 1 + CHANGELOG.md | 1 + nx.json | 36 +- package.json | 29 +- yarn.lock | 5214 ++++++++++++++++++++++++----------------------- 6 files changed, 2725 insertions(+), 2557 deletions(-) diff --git a/.gitignore b/.gitignore index 307d7e9e2..1339a53b7 100644 --- a/.gitignore +++ b/.gitignore @@ -27,6 +27,7 @@ /.angular/cache .env .env.prod +.nx/cache /.sass-cache /connect.lock /coverage diff --git a/.prettierignore b/.prettierignore index 1188a3b2b..47a053eee 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,2 +1,3 @@ +/.nx/cache /dist /test/import diff --git a/CHANGELOG.md b/CHANGELOG.md index 583176358..70bfb1fec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the validation in the activities import (expects positive values for `fee`, `quantity` and `unitPrice`) - Improved the validation in the cash balance transfer from one to another account (expects a positive value) - Changed the currency selector in the create or update account dialog to `@angular/material/autocomplete` +- Upgraded `Nx` from version `16.7.4` to `17.0.2` - Upgraded `uuid` from version `9.0.0` to `9.0.1` - Upgraded `yahoo-finance2` from version `2.8.0` to `2.8.1` diff --git a/nx.json b/nx.json index cace00d45..4fe930eb3 100644 --- a/nx.json +++ b/nx.json @@ -2,23 +2,6 @@ "affected": { "defaultBase": "origin/main" }, - "npmScope": "ghostfolio", - "tasksRunnerOptions": { - "default": { - "runner": "nx-cloud", - "options": { - "accessToken": "Mjg0ZGQ2YjAtNGI4NS00NmYwLThhOWEtMWZmNmQzODM4YzU4fHJlYWQ=", - "cacheableOperations": [ - "build", - "lint", - "test", - "e2e", - "build-storybook" - ], - "parallel": 1 - } - } - }, "defaultProject": "api", "generators": { "@nx/angular:application": { @@ -37,13 +20,16 @@ "targetDefaults": { "build": { "dependsOn": ["^build"], - "inputs": ["production", "^production"] + "inputs": ["production", "^production"], + "cache": true }, "e2e": { - "inputs": ["default", "^production"] + "inputs": ["default", "^production"], + "cache": true }, "test": { - "inputs": ["default", "^production", "{workspaceRoot}/jest.preset.js"] + "inputs": ["default", "^production", "{workspaceRoot}/jest.preset.js"], + "cache": true }, "build-storybook": { "inputs": [ @@ -52,7 +38,11 @@ "{workspaceRoot}/.storybook/**/*", "{projectRoot}/.storybook/**/*", "{projectRoot}/tsconfig.storybook.json" - ] + ], + "cache": true + }, + "lint": { + "cache": true } }, "namedInputs": { @@ -72,5 +62,7 @@ "!{projectRoot}/tsconfig.storybook.json", "!{projectRoot}/src/test-setup.[jt]s" ] - } + }, + "nxCloudAccessToken": "Mjg0ZGQ2YjAtNGI4NS00NmYwLThhOWEtMWZmNmQzODM4YzU4fHJlYWQ=", + "parallel": 1 } diff --git a/package.json b/package.json index 0a768d56f..38975a3ba 100644 --- a/package.json +++ b/package.json @@ -146,21 +146,21 @@ "@angular/pwa": "16.2.0", "@nestjs/schematics": "10.0.1", "@nestjs/testing": "10.1.3", - "@nx/angular": "16.7.4", - "@nx/cypress": "16.7.4", - "@nx/eslint-plugin": "16.7.4", - "@nx/jest": "16.7.4", - "@nx/js": "16.7.4", - "@nx/nest": "16.7.4", - "@nx/node": "16.7.4", - "@nx/storybook": "16.7.4", - "@nx/web": "16.7.4", - "@nx/workspace": "16.7.4", + "@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", "@schematics/angular": "16.2.0", "@simplewebauthn/typescript-types": "8.0.0", - "@storybook/addon-essentials": "7.3.2", - "@storybook/angular": "7.3.2", - "@storybook/core-server": "7.3.2", + "@storybook/addon-essentials": "7.5.1", + "@storybook/angular": "7.5.1", + "@storybook/core-server": "7.5.1", "@types/big.js": "6.1.6", "@types/body-parser": "1.19.2", "@types/cache-manager": "3.4.2", @@ -187,8 +187,7 @@ "jest": "29.4.3", "jest-environment-jsdom": "29.4.3", "jest-preset-angular": "13.1.1", - "nx": "16.7.4", - "nx-cloud": "16.3.0", + "nx": "17.0.2", "prettier": "3.0.3", "prettier-plugin-organize-attributes": "1.0.0", "react": "18.2.0", diff --git a/yarn.lock b/yarn.lock index b1d6f69c3..5f2d3e720 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8,9 +8,9 @@ integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== "@adobe/css-tools@^4.0.1": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.2.0.tgz#e1a84fca468f4b337816fcb7f0964beb620ba855" - integrity sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA== + version "4.3.1" + resolved "https://registry.yarnpkg.com/@adobe/css-tools/-/css-tools-4.3.1.tgz#abfccb8ca78075a2b6187345c26243c1a0842f28" + integrity sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg== "@ampproject/remapping@2.2.1", "@ampproject/remapping@^2.2.0": version "2.2.1" @@ -149,10 +149,10 @@ rxjs "7.8.1" source-map "0.7.4" -"@angular-devkit/core@16.1.8", "@angular-devkit/core@^16.0.0-next.6": - version "16.1.8" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-16.1.8.tgz#f54bf179a78c6ea83ccd46687c54766d3ba674c9" - integrity sha512-dSRD/+bGanArIXkj+kaU1kDFleZeQMzmBiOXX+pK0Ah9/0Yn1VmY3RZh1zcX9vgIQXV+t7UPrTpOjaERMUtVGw== +"@angular-devkit/core@16.2.0": + version "16.2.0" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-16.2.0.tgz#477c6f9006d9efa4ff54c8f7a8a391df70788602" + integrity sha512-l1k6Rqm3YM16BEn3CWyQKrk9xfu+2ux7Bw3oS+h1TO4/RoxO2PgHj8LLRh/WNrYVarhaqO7QZ5ePBkXNMkzJ1g== dependencies: ajv "8.12.0" ajv-formats "2.1.1" @@ -160,14 +160,15 @@ rxjs "7.8.1" source-map "0.7.4" -"@angular-devkit/core@16.2.0": - version "16.2.0" - resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-16.2.0.tgz#477c6f9006d9efa4ff54c8f7a8a391df70788602" - integrity sha512-l1k6Rqm3YM16BEn3CWyQKrk9xfu+2ux7Bw3oS+h1TO4/RoxO2PgHj8LLRh/WNrYVarhaqO7QZ5ePBkXNMkzJ1g== +"@angular-devkit/core@16.2.8", "@angular-devkit/core@^16.0.0-next.6": + version "16.2.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-16.2.8.tgz#db74f3063e7fd573be7dafd022e8dc10e43140c0" + integrity sha512-PTGozYvh1Bin5lB15PwcXa26Ayd17bWGLS3H8Rs0s+04mUDvfNofmweaX1LgumWWy3nCUTDuwHxX10M3G0wE2g== dependencies: ajv "8.12.0" ajv-formats "2.1.1" jsonc-parser "3.2.0" + picomatch "2.3.1" rxjs "7.8.1" source-map "0.7.4" @@ -193,17 +194,6 @@ ora "5.4.1" rxjs "7.8.1" -"@angular-devkit/schematics@16.1.8", "@angular-devkit/schematics@^16.0.0-next.6": - version "16.1.8" - resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-16.1.8.tgz#ab392d3a71bd50dcde25f9fbcee7e67d3965565d" - integrity sha512-6LyzMdFJs337RTxxkI2U1Ndw0CW5mMX/aXWl8d7cW2odiSrAg8IdlMqpc+AM8+CPfsB0FtS1aWkEZqJLT0jHOg== - dependencies: - "@angular-devkit/core" "16.1.8" - jsonc-parser "3.2.0" - magic-string "0.30.0" - ora "5.4.1" - rxjs "7.8.1" - "@angular-devkit/schematics@16.2.0": version "16.2.0" resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-16.2.0.tgz#4de900615451fce61cf5bcbc7935986ad89e49f5" @@ -215,6 +205,17 @@ ora "5.4.1" rxjs "7.8.1" +"@angular-devkit/schematics@16.2.8", "@angular-devkit/schematics@^16.0.0-next.6": + version "16.2.8" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-16.2.8.tgz#cc11cf6d00cd9131adbede9a99f3a617aedd5bc4" + integrity sha512-MBiKZOlR9/YMdflALr7/7w/BGAfo/BGTrlkqsIB6rDWV1dYiCgxI+033HsiNssLS6RQyCFx/e7JA2aBBzu9zEg== + dependencies: + "@angular-devkit/core" "16.2.8" + jsonc-parser "3.2.0" + magic-string "0.30.1" + ora "5.4.1" + rxjs "7.8.1" + "@angular-eslint/bundled-angular-compiler@16.1.0": version "16.1.0" resolved "https://registry.yarnpkg.com/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-16.1.0.tgz#59fd1ff6423b02d6fa7eeb9ea30581a839471f2c" @@ -472,17 +473,18 @@ dependencies: default-browser-id "3.0.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.21.4", "@babel/code-frame@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.5.tgz#234d98e1551960604f1246e6475891a570ad5658" - integrity sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.21.4", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.22.5": + version "7.22.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" + integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== dependencies: - "@babel/highlight" "^7.22.5" + "@babel/highlight" "^7.22.13" + chalk "^2.4.2" -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.21.5", "@babel/compat-data@^7.22.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.9.tgz#71cdb00a1ce3a329ce4cbec3a44f9fef35669730" - integrity sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ== +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.21.5", "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.22.9", "@babel/compat-data@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.2.tgz#6a12ced93455827037bfb5ed8492820d60fc32cc" + integrity sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ== "@babel/core@7.22.5": version "7.22.5" @@ -505,7 +507,7 @@ json5 "^2.2.2" semver "^6.3.0" -"@babel/core@7.22.9", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.2.2", "@babel/core@^7.20.2", "@babel/core@^7.22.9": +"@babel/core@7.22.9": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.9.tgz#bd96492c68822198f33e8a256061da3cf391f58f" integrity sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w== @@ -526,6 +528,27 @@ json5 "^2.2.2" semver "^6.3.1" +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.2.2", "@babel/core@^7.20.2", "@babel/core@^7.22.0", "@babel/core@^7.22.9": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.23.2.tgz#ed10df0d580fff67c5f3ee70fd22e2e4c90a9f94" + integrity sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helpers" "^7.23.2" + "@babel/parser" "^7.23.0" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.2" + "@babel/types" "^7.23.0" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + "@babel/core@~7.21.0": version "7.21.8" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.8.tgz#2a8c7f0f53d60100ba4c32470ba0281c92aa9aa4" @@ -547,7 +570,7 @@ json5 "^2.2.2" semver "^6.3.0" -"@babel/generator@7.22.9", "@babel/generator@^7.21.5", "@babel/generator@^7.22.5", "@babel/generator@^7.22.7", "@babel/generator@^7.22.9", "@babel/generator@^7.7.2": +"@babel/generator@7.22.9": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.9.tgz#572ecfa7a31002fa1de2a9d91621fd895da8493d" integrity sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw== @@ -557,6 +580,16 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" +"@babel/generator@^7.21.5", "@babel/generator@^7.22.5", "@babel/generator@^7.22.9", "@babel/generator@^7.23.0", "@babel/generator@^7.7.2": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" + integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== + dependencies: + "@babel/types" "^7.23.0" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + "@babel/generator@~7.21.1": version "7.21.9" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.9.tgz#3a1b706e07d836e204aee0650e8ee878d3aaa241" @@ -575,32 +608,32 @@ "@babel/types" "^7.22.5" "@babel/helper-builder-binary-assignment-operator-visitor@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.5.tgz#a3f4758efdd0190d8927fcffd261755937c71878" - integrity sha512-m1EP3lVOPptR+2DwD125gziZNcmoNSHGmJROKoy87loWUQyJaVXDgpmruWqDARZSmtYQ+Dl25okU8+qhVzuykw== + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" + integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.22.15" -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.21.5", "@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.9.tgz#f9d0a7aaaa7cd32a3f31c9316a69f5a9bcacb892" - integrity sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw== +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.21.5", "@babel/helper-compilation-targets@^7.22.15", "@babel/helper-compilation-targets@^7.22.5", "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.22.9": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" + integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== dependencies: "@babel/compat-data" "^7.22.9" - "@babel/helper-validator-option" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" browserslist "^4.21.9" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.22.5", "@babel/helper-create-class-features-plugin@^7.22.6", "@babel/helper-create-class-features-plugin@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.9.tgz#c36ea240bb3348f942f08b0fbe28d6d979fab236" - integrity sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ== +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.22.11", "@babel/helper-create-class-features-plugin@^7.22.15", "@babel/helper-create-class-features-plugin@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz#97a61b385e57fe458496fad19f8e63b63c867de4" + integrity sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" "@babel/helper-environment-visitor" "^7.22.5" "@babel/helper-function-name" "^7.22.5" - "@babel/helper-member-expression-to-functions" "^7.22.5" + "@babel/helper-member-expression-to-functions" "^7.22.15" "@babel/helper-optimise-call-expression" "^7.22.5" "@babel/helper-replace-supers" "^7.22.9" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" @@ -608,9 +641,9 @@ semver "^6.3.1" "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.5": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz#9d8e61a8d9366fe66198f57c40565663de0825f6" - integrity sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw== + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" + integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" regexpu-core "^5.3.1" @@ -628,10 +661,10 @@ resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-define-polyfill-provider@^0.4.1": - version "0.4.1" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.1.tgz#af1429c4a83ac316a6a8c2cc8ff45cb5d2998d3a" - integrity sha512-kX4oXixDxG197yhX+J3Wp+NpL2wuCFjWQAr6yX2jtCnflK9ulMI51ULFGIrWiX1jGfvAxdHp+XQCcP2bZGPs9A== +"@babel/helper-define-polyfill-provider@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz#a71c10f7146d809f4a256c373f462d9bba8cf6ba" + integrity sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug== dependencies: "@babel/helper-compilation-targets" "^7.22.6" "@babel/helper-plugin-utils" "^7.22.5" @@ -639,18 +672,18 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" -"@babel/helper-environment-visitor@^7.18.9", "@babel/helper-environment-visitor@^7.21.5", "@babel/helper-environment-visitor@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98" - integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q== +"@babel/helper-environment-visitor@^7.18.9", "@babel/helper-environment-visitor@^7.21.5", "@babel/helper-environment-visitor@^7.22.20", "@babel/helper-environment-visitor@^7.22.5": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== -"@babel/helper-function-name@^7.21.0", "@babel/helper-function-name@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz#ede300828905bb15e582c037162f99d5183af1be" - integrity sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ== +"@babel/helper-function-name@^7.21.0", "@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== dependencies: - "@babel/template" "^7.22.5" - "@babel/types" "^7.22.5" + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" "@babel/helper-hoist-variables@^7.18.6", "@babel/helper-hoist-variables@^7.22.5": version "7.22.5" @@ -659,30 +692,30 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-member-expression-to-functions@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz#0a7c56117cad3372fbf8d2fb4bf8f8d64a1e76b2" - integrity sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ== +"@babel/helper-member-expression-to-functions@^7.22.15": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz#9263e88cc5e41d39ec18c9a3e0eced59a3e7d366" + integrity sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.23.0" -"@babel/helper-module-imports@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c" - integrity sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg== +"@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.22.15" -"@babel/helper-module-transforms@^7.21.5", "@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz#92dfcb1fbbb2bc62529024f72d942a8c97142129" - integrity sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ== +"@babel/helper-module-transforms@^7.21.5", "@babel/helper-module-transforms@^7.22.5", "@babel/helper-module-transforms@^7.22.9", "@babel/helper-module-transforms@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz#3ec246457f6c842c0aee62a01f60739906f7047e" + integrity sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw== dependencies: - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-module-imports" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" "@babel/helper-simple-access" "^7.22.5" "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/helper-validator-identifier" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" "@babel/helper-optimise-call-expression@^7.22.5": version "7.22.5" @@ -696,22 +729,22 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== -"@babel/helper-remap-async-to-generator@^7.18.9", "@babel/helper-remap-async-to-generator@^7.22.5": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz#53a25b7484e722d7efb9c350c75c032d4628de82" - integrity sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ== +"@babel/helper-remap-async-to-generator@^7.18.9", "@babel/helper-remap-async-to-generator@^7.22.20", "@babel/helper-remap-async-to-generator@^7.22.5": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" + integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-wrap-function" "^7.22.9" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-wrap-function" "^7.22.20" -"@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz#cbdc27d6d8d18cd22c81ae4293765a5d9afd0779" - integrity sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg== +"@babel/helper-replace-supers@^7.22.20", "@babel/helper-replace-supers@^7.22.5", "@babel/helper-replace-supers@^7.22.9": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz#e37d367123ca98fe455a9887734ed2e16eb7a793" + integrity sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw== dependencies: - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-member-expression-to-functions" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-member-expression-to-functions" "^7.22.15" "@babel/helper-optimise-call-expression" "^7.22.5" "@babel/helper-simple-access@^7.22.5": @@ -740,68 +773,68 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== -"@babel/helper-validator-identifier@^7.19.1", "@babel/helper-validator-identifier@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193" - integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ== +"@babel/helper-validator-identifier@^7.19.1", "@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== -"@babel/helper-validator-option@^7.21.0", "@babel/helper-validator-option@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac" - integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw== +"@babel/helper-validator-option@^7.21.0", "@babel/helper-validator-option@^7.22.15", "@babel/helper-validator-option@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" + integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== -"@babel/helper-wrap-function@^7.22.9": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.9.tgz#189937248c45b0182c1dcf32f3444ca153944cb9" - integrity sha512-sZ+QzfauuUEfxSEjKFmi3qDSHgLsTPK/pEpoD/qonZKOtTPTLbf59oabPQ4rKekt9lFcj/hTZaOhWwFYrgjk+Q== +"@babel/helper-wrap-function@^7.22.20": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" + integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== dependencies: "@babel/helper-function-name" "^7.22.5" - "@babel/template" "^7.22.5" - "@babel/types" "^7.22.5" + "@babel/template" "^7.22.15" + "@babel/types" "^7.22.19" -"@babel/helpers@^7.21.5", "@babel/helpers@^7.22.5", "@babel/helpers@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.6.tgz#8e61d3395a4f0c5a8060f309fb008200969b5ecd" - integrity sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA== +"@babel/helpers@^7.21.5", "@babel/helpers@^7.22.5", "@babel/helpers@^7.22.6", "@babel/helpers@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.23.2.tgz#2832549a6e37d484286e15ba36a5330483cac767" + integrity sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ== dependencies: - "@babel/template" "^7.22.5" - "@babel/traverse" "^7.22.6" - "@babel/types" "^7.22.5" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.2" + "@babel/types" "^7.23.0" -"@babel/highlight@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.5.tgz#aa6c05c5407a67ebce408162b7ede789b4d22031" - integrity sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw== +"@babel/highlight@^7.22.13": + version "7.22.20" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" + integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== dependencies: - "@babel/helper-validator-identifier" "^7.22.5" - chalk "^2.0.0" + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.0.0-beta.54", "@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.21.5", "@babel/parser@^7.21.8", "@babel/parser@^7.22.5", "@babel/parser@^7.22.7": - version "7.22.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.7.tgz#df8cf085ce92ddbdbf668a7f186ce848c9036cae" - integrity sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q== +"@babel/parser@^7.0.0-beta.54", "@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.21.5", "@babel/parser@^7.21.8", "@babel/parser@^7.22.15", "@babel/parser@^7.22.5", "@babel/parser@^7.22.7", "@babel/parser@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" + integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== "@babel/parser@~7.21.2": version "7.21.9" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.9.tgz#ab18ea3b85b4bc33ba98a8d4c2032c557d23cf14" integrity sha512-q5PNg/Bi1OpGgx5jYlvWZwAorZepEudDMCLtj967aeS7WMont7dUZI46M2XwcIQqvUlMxWfdLFu4S/qSxeUu5g== -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz#87245a21cd69a73b0b81bcda98d443d6df08f05e" - integrity sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.15", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz#02dc8a03f613ed5fdc29fb2f728397c78146c962" + integrity sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.20.7", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz#fef09f9499b1f1c930da8a0c419db42167d792ca" - integrity sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.20.7", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.15", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz#2aeb91d337d4e1a1e7ce85b76a37f5301781200f" + integrity sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.22.15" "@babel/plugin-proposal-async-generator-functions@7.20.7", "@babel/plugin-proposal-async-generator-functions@^7.20.7": version "7.20.7" @@ -831,15 +864,15 @@ "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-proposal-decorators@^7.22.7": - version "7.22.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.22.7.tgz#9b5b73c2e404f0869ef8a8a53765f8203c5467a7" - integrity sha512-omXqPF7Onq4Bb7wHxXjM3jSMSJvUUbvDvmmds7KI5n9Cq6Ln5I05I1W2nRlRof1rGdiUxJrxwe285WF96XlBXQ== + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.2.tgz#0b345a5754f48309fa50b7cd99075ef0295b12c8" + integrity sha512-eR0gJQc830fJVGz37oKLvt9W9uUIQSAovUl0e9sJ3YeO09dlcoBVYD3CLrjCj4qHdXmfiyTyFt8yeQYSN5fxLg== dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.6" + "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.20" "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/plugin-syntax-decorators" "^7.22.5" + "@babel/plugin-syntax-decorators" "^7.22.10" "@babel/plugin-proposal-dynamic-import@^7.18.6": version "7.18.6" @@ -976,10 +1009,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-decorators@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.22.5.tgz#329fe2907c73de184033775637dbbc507f09116a" - integrity sha512-avpUOBS7IU6al8MmF1XpAyj9QYeLPuSDJI5D4pVMSMdL7xQokKqJPYQC67RCT0aCTashUXPiGwMJ0DEXXCEmMA== +"@babel/plugin-syntax-decorators@^7.22.10": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.22.10.tgz#7d83ea04d893c442b78ebf4c3cbac59a7211deff" + integrity sha512-z1KTVemBjnz+kSEilAsI4lbkPOl5TvJH7YDSY1CTIzvLWJ+KHXp+mRe8VPmfnyvqOPqar1V2gid2PleKzRUstQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -1117,14 +1150,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-async-generator-functions@^7.22.7": - version "7.22.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.7.tgz#053e76c0a903b72b573cb1ab7d6882174d460a1b" - integrity sha512-7HmE7pk/Fmke45TODvxvkxRMV9RazV+ZZzhOL9AG8G29TLrr3jkjwF7uJfxZ30EoXpO+LJkq4oA8NjO2DTnEDg== +"@babel/plugin-transform-async-generator-functions@^7.22.7", "@babel/plugin-transform-async-generator-functions@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.2.tgz#054afe290d64c6f576f371ccc321772c8ea87ebb" + integrity sha512-BBYVGxbDVHfoeXbOwcagAkOQAm9NxoTdMGfTqghu1GrvadSaw6iW3Je6IcL5PNOw8VwjxqBECXy50/iCQSY/lQ== dependencies: - "@babel/helper-environment-visitor" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-remap-async-to-generator" "^7.22.5" + "@babel/helper-remap-async-to-generator" "^7.22.20" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-transform-async-to-generator@7.22.5", "@babel/plugin-transform-async-to-generator@^7.20.7", "@babel/plugin-transform-async-to-generator@^7.22.5": @@ -1143,10 +1176,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-block-scoping@^7.21.0", "@babel/plugin-transform-block-scoping@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.5.tgz#8bfc793b3a4b2742c0983fadc1480d843ecea31b" - integrity sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg== +"@babel/plugin-transform-block-scoping@^7.21.0", "@babel/plugin-transform-block-scoping@^7.22.5", "@babel/plugin-transform-block-scoping@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.0.tgz#8744d02c6c264d82e1a4bc5d2d501fd8aff6f022" + integrity sha512-cOsrbmIOXmf+5YbL99/S49Y3j46k/T16b9ml8bm9lP6N9US5iQ2yBK7gpui1pg0V/WMcXdkfKbTb7HXq9u+v4g== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -1158,27 +1191,27 @@ "@babel/helper-create-class-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-class-static-block@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz#3e40c46f048403472d6f4183116d5e46b1bff5ba" - integrity sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA== +"@babel/plugin-transform-class-static-block@^7.22.11", "@babel/plugin-transform-class-static-block@^7.22.5": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz#dc8cc6e498f55692ac6b4b89e56d87cec766c974" + integrity sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g== dependencies: - "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.11" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-transform-classes@^7.21.0", "@babel/plugin-transform-classes@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz#e04d7d804ed5b8501311293d1a0e6d43e94c3363" - integrity sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ== +"@babel/plugin-transform-classes@^7.21.0", "@babel/plugin-transform-classes@^7.22.15", "@babel/plugin-transform-classes@^7.22.6": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz#aaf4753aee262a232bbc95451b4bdf9599c65a0b" + integrity sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-compilation-targets" "^7.22.15" "@babel/helper-environment-visitor" "^7.22.5" "@babel/helper-function-name" "^7.22.5" "@babel/helper-optimise-call-expression" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-replace-supers" "^7.22.5" + "@babel/helper-replace-supers" "^7.22.9" "@babel/helper-split-export-declaration" "^7.22.6" globals "^11.1.0" @@ -1190,10 +1223,10 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/template" "^7.22.5" -"@babel/plugin-transform-destructuring@^7.21.3", "@babel/plugin-transform-destructuring@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.5.tgz#d3aca7438f6c26c78cdd0b0ba920a336001b27cc" - integrity sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ== +"@babel/plugin-transform-destructuring@^7.21.3", "@babel/plugin-transform-destructuring@^7.22.5", "@babel/plugin-transform-destructuring@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.0.tgz#6447aa686be48b32eaf65a73e0e2c0bd010a266c" + integrity sha512-vaMdgNXFkYrB+8lbgniSYWHsgqK5gjaMNcc84bMIOMRLH0L9AqYq3hwMdvnyqj1OPqea8UtjPEuS/DCenah1wg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -1212,10 +1245,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-dynamic-import@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz#d6908a8916a810468c4edff73b5b75bda6ad393e" - integrity sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ== +"@babel/plugin-transform-dynamic-import@^7.22.11", "@babel/plugin-transform-dynamic-import@^7.22.5": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz#2c7722d2a5c01839eaf31518c6ff96d408e447aa" + integrity sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" @@ -1228,10 +1261,10 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-export-namespace-from@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz#57c41cb1d0613d22f548fddd8b288eedb9973a5b" - integrity sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg== +"@babel/plugin-transform-export-namespace-from@^7.22.11", "@babel/plugin-transform-export-namespace-from@^7.22.5": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz#b3c84c8f19880b6c7440108f8929caf6056db26c" + integrity sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" @@ -1244,10 +1277,10 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-flow" "^7.22.5" -"@babel/plugin-transform-for-of@^7.21.5", "@babel/plugin-transform-for-of@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz#ab1b8a200a8f990137aff9a084f8de4099ab173f" - integrity sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A== +"@babel/plugin-transform-for-of@^7.21.5", "@babel/plugin-transform-for-of@^7.22.15", "@babel/plugin-transform-for-of@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz#f64b4ccc3a4f131a996388fae7680b472b306b29" + integrity sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -1260,10 +1293,10 @@ "@babel/helper-function-name" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-json-strings@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz#14b64352fdf7e1f737eed68de1a1468bd2a77ec0" - integrity sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A== +"@babel/plugin-transform-json-strings@^7.22.11", "@babel/plugin-transform-json-strings@^7.22.5": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz#689a34e1eed1928a40954e37f74509f48af67835" + integrity sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-json-strings" "^7.8.3" @@ -1275,10 +1308,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-logical-assignment-operators@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz#66ae5f068fd5a9a5dc570df16f56c2a8462a9d6c" - integrity sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA== +"@babel/plugin-transform-logical-assignment-operators@^7.22.11", "@babel/plugin-transform-logical-assignment-operators@^7.22.5": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz#24c522a61688bde045b7d9bc3c2597a4d948fc9c" + integrity sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" @@ -1290,32 +1323,32 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-amd@^7.20.11", "@babel/plugin-transform-modules-amd@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz#4e045f55dcf98afd00f85691a68fc0780704f526" - integrity sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ== +"@babel/plugin-transform-modules-amd@^7.20.11", "@babel/plugin-transform-modules-amd@^7.22.5", "@babel/plugin-transform-modules-amd@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.0.tgz#05b2bc43373faa6d30ca89214731f76f966f3b88" + integrity sha512-xWT5gefv2HGSm4QHtgc1sYPbseOyf+FFDo2JbpE25GWl5BqTGO9IMwTYJRoIdjsF85GE+VegHxSCUt5EvoYTAw== dependencies: - "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.21.5", "@babel/plugin-transform-modules-commonjs@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz#7d9875908d19b8c0536085af7b053fd5bd651bfa" - integrity sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA== +"@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.21.5", "@babel/plugin-transform-modules-commonjs@^7.22.5", "@babel/plugin-transform-modules-commonjs@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.0.tgz#b3dba4757133b2762c00f4f94590cf6d52602481" + integrity sha512-32Xzss14/UVc7k9g775yMIvkVK8xwKE0DPdP5JTapr3+Z9w4tzeOuLNY6BXDQR6BdnzIlXnCGAzsk/ICHBLVWQ== dependencies: - "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-simple-access" "^7.22.5" -"@babel/plugin-transform-modules-systemjs@^7.20.11", "@babel/plugin-transform-modules-systemjs@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz#18c31410b5e579a0092638f95c896c2a98a5d496" - integrity sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ== +"@babel/plugin-transform-modules-systemjs@^7.20.11", "@babel/plugin-transform-modules-systemjs@^7.22.5", "@babel/plugin-transform-modules-systemjs@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.0.tgz#77591e126f3ff4132a40595a6cccd00a6b60d160" + integrity sha512-qBej6ctXZD2f+DhlOC9yO47yEYgUh5CZNz/aBoH4j/3NOlRfJXJbY7xDQCqQVf9KbrqGzIWER1f23doHGrIHFg== dependencies: "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" "@babel/plugin-transform-modules-umd@^7.18.6", "@babel/plugin-transform-modules-umd@^7.22.5": version "7.22.5" @@ -1340,32 +1373,32 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-nullish-coalescing-operator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz#f8872c65776e0b552e0849d7596cddd416c3e381" - integrity sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA== +"@babel/plugin-transform-nullish-coalescing-operator@^7.22.11", "@babel/plugin-transform-nullish-coalescing-operator@^7.22.5": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz#debef6c8ba795f5ac67cd861a81b744c5d38d9fc" + integrity sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-transform-numeric-separator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz#57226a2ed9e512b9b446517ab6fa2d17abb83f58" - integrity sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g== +"@babel/plugin-transform-numeric-separator@^7.22.11", "@babel/plugin-transform-numeric-separator@^7.22.5": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz#498d77dc45a6c6db74bb829c02a01c1d719cbfbd" + integrity sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-transform-object-rest-spread@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz#9686dc3447df4753b0b2a2fae7e8bc33cdc1f2e1" - integrity sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ== +"@babel/plugin-transform-object-rest-spread@^7.22.15", "@babel/plugin-transform-object-rest-spread@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz#21a95db166be59b91cde48775310c0df6e1da56f" + integrity sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q== dependencies: - "@babel/compat-data" "^7.22.5" - "@babel/helper-compilation-targets" "^7.22.5" + "@babel/compat-data" "^7.22.9" + "@babel/helper-compilation-targets" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.22.5" + "@babel/plugin-transform-parameters" "^7.22.15" "@babel/plugin-transform-object-super@^7.18.6", "@babel/plugin-transform-object-super@^7.22.5": version "7.22.5" @@ -1375,27 +1408,27 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-replace-supers" "^7.22.5" -"@babel/plugin-transform-optional-catch-binding@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz#842080be3076703be0eaf32ead6ac8174edee333" - integrity sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg== +"@babel/plugin-transform-optional-catch-binding@^7.22.11", "@babel/plugin-transform-optional-catch-binding@^7.22.5": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz#461cc4f578a127bb055527b3e77404cad38c08e0" + integrity sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-transform-optional-chaining@^7.22.5", "@babel/plugin-transform-optional-chaining@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.6.tgz#4bacfe37001fe1901117672875e931d439811564" - integrity sha512-Vd5HiWml0mDVtcLHIoEU5sw6HOUW/Zk0acLs/SAeuLzkGNOPc9DB4nkUajemhCmTIz3eiaKREZn2hQQqF79YTg== +"@babel/plugin-transform-optional-chaining@^7.22.15", "@babel/plugin-transform-optional-chaining@^7.22.6", "@babel/plugin-transform-optional-chaining@^7.23.0": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.0.tgz#73ff5fc1cf98f542f09f29c0631647d8ad0be158" + integrity sha512-sBBGXbLJjxTzLBF5rFWaikMnOGOk/BmK6vVByIdEggZ7Vn6CvWXZyRkkLFK6WE0IF8jSliyOkUN6SScFgzCM0g== dependencies: "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.21.3", "@babel/plugin-transform-parameters@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz#c3542dd3c39b42c8069936e48717a8d179d63a18" - integrity sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg== +"@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.21.3", "@babel/plugin-transform-parameters@^7.22.15", "@babel/plugin-transform-parameters@^7.22.5": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz#719ca82a01d177af358df64a514d64c2e3edb114" + integrity sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -1407,13 +1440,13 @@ "@babel/helper-create-class-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-private-property-in-object@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz#07a77f28cbb251546a43d175a1dda4cf3ef83e32" - integrity sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ== +"@babel/plugin-transform-private-property-in-object@^7.22.11", "@babel/plugin-transform-private-property-in-object@^7.22.5": + version "7.22.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz#ad45c4fc440e9cb84c718ed0906d96cf40f9a4e1" + integrity sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.22.11" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" @@ -1424,13 +1457,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-regenerator@^7.21.5", "@babel/plugin-transform-regenerator@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.5.tgz#cd8a68b228a5f75fa01420e8cc2fc400f0fc32aa" - integrity sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw== +"@babel/plugin-transform-regenerator@^7.21.5", "@babel/plugin-transform-regenerator@^7.22.10", "@babel/plugin-transform-regenerator@^7.22.5": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz#8ceef3bd7375c4db7652878b0241b2be5d0c3cca" + integrity sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw== dependencies: "@babel/helper-plugin-utils" "^7.22.5" - regenerator-transform "^0.15.1" + regenerator-transform "^0.15.2" "@babel/plugin-transform-reserved-words@^7.18.6", "@babel/plugin-transform-reserved-words@^7.22.5": version "7.22.5" @@ -1439,7 +1472,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-runtime@7.22.9", "@babel/plugin-transform-runtime@^7.22.9": +"@babel/plugin-transform-runtime@7.22.9": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.9.tgz#a87b11e170cbbfb018e6a2bf91f5c6e533b9e027" integrity sha512-9KjBH61AGJetCPYp/IEyLEp47SyybZb0nDRpBvmtEkm+rUIwxdlKpyNHI1TmsGkeuLclJdleQHRZ8XLBnnh8CQ== @@ -1451,6 +1484,18 @@ babel-plugin-polyfill-regenerator "^0.5.1" semver "^6.3.1" +"@babel/plugin-transform-runtime@^7.22.9": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.2.tgz#c956a3f8d1aa50816ff6c30c6288d66635c12990" + integrity sha512-XOntj6icgzMS58jPVtQpiuF6ZFWxQiJavISGx5KGjRj+3gqZr8+N6Kx+N9BApWzgS+DOjIZfXXj0ZesenOWDyA== + dependencies: + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + babel-plugin-polyfill-corejs2 "^0.4.6" + babel-plugin-polyfill-corejs3 "^0.8.5" + babel-plugin-polyfill-regenerator "^0.5.3" + semver "^6.3.1" + "@babel/plugin-transform-shorthand-properties@^7.18.6", "@babel/plugin-transform-shorthand-properties@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz#6e277654be82b5559fc4b9f58088507c24f0c624" @@ -1487,20 +1532,20 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/plugin-transform-typescript@^7.22.5": - version "7.22.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.9.tgz#91e08ad1eb1028ecc62662a842e93ecfbf3c7234" - integrity sha512-BnVR1CpKiuD0iobHPaM1iLvcwPYN2uVFAqoLVSpEDKWuOikoCv5HbKLxclhKYUXlWkX86DoZGtqI4XhbOsyrMg== +"@babel/plugin-transform-typescript@^7.22.15": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.15.tgz#15adef906451d86349eb4b8764865c960eb54127" + integrity sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA== dependencies: "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.22.9" + "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-typescript" "^7.22.5" -"@babel/plugin-transform-unicode-escapes@^7.21.5", "@babel/plugin-transform-unicode-escapes@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.5.tgz#ce0c248522b1cb22c7c992d88301a5ead70e806c" - integrity sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg== +"@babel/plugin-transform-unicode-escapes@^7.21.5", "@babel/plugin-transform-unicode-escapes@^7.22.10", "@babel/plugin-transform-unicode-escapes@^7.22.5": + version "7.22.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz#c723f380f40a2b2f57a62df24c9005834c8616d9" + integrity sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg== dependencies: "@babel/helper-plugin-utils" "^7.22.5" @@ -1528,7 +1573,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" -"@babel/preset-env@7.22.9", "@babel/preset-env@^7.20.2", "@babel/preset-env@^7.22.9": +"@babel/preset-env@7.22.9": version "7.22.9" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.22.9.tgz#57f17108eb5dfd4c5c25a44c1977eba1df310ac7" integrity sha512-wNi5H/Emkhll/bqPjsjQorSykrlfY5OWakd6AulLvMEytpKasMVUpVy8RL4qBIBs5Ac6/5i0/Rv0b/Fg6Eag/g== @@ -1614,6 +1659,92 @@ core-js-compat "^3.31.0" semver "^6.3.1" +"@babel/preset-env@^7.20.2", "@babel/preset-env@^7.22.9": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.23.2.tgz#1f22be0ff0e121113260337dbc3e58fafce8d059" + integrity sha512-BW3gsuDD+rvHL2VO2SjAUNTBe5YrjsTiDyqamPDWY723na3/yPQ65X5oQkFVJZ0o50/2d+svm1rkPoJeR1KxVQ== + dependencies: + "@babel/compat-data" "^7.23.2" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.22.15" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.22.15" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.22.5" + "@babel/plugin-syntax-import-attributes" "^7.22.5" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.22.5" + "@babel/plugin-transform-async-generator-functions" "^7.23.2" + "@babel/plugin-transform-async-to-generator" "^7.22.5" + "@babel/plugin-transform-block-scoped-functions" "^7.22.5" + "@babel/plugin-transform-block-scoping" "^7.23.0" + "@babel/plugin-transform-class-properties" "^7.22.5" + "@babel/plugin-transform-class-static-block" "^7.22.11" + "@babel/plugin-transform-classes" "^7.22.15" + "@babel/plugin-transform-computed-properties" "^7.22.5" + "@babel/plugin-transform-destructuring" "^7.23.0" + "@babel/plugin-transform-dotall-regex" "^7.22.5" + "@babel/plugin-transform-duplicate-keys" "^7.22.5" + "@babel/plugin-transform-dynamic-import" "^7.22.11" + "@babel/plugin-transform-exponentiation-operator" "^7.22.5" + "@babel/plugin-transform-export-namespace-from" "^7.22.11" + "@babel/plugin-transform-for-of" "^7.22.15" + "@babel/plugin-transform-function-name" "^7.22.5" + "@babel/plugin-transform-json-strings" "^7.22.11" + "@babel/plugin-transform-literals" "^7.22.5" + "@babel/plugin-transform-logical-assignment-operators" "^7.22.11" + "@babel/plugin-transform-member-expression-literals" "^7.22.5" + "@babel/plugin-transform-modules-amd" "^7.23.0" + "@babel/plugin-transform-modules-commonjs" "^7.23.0" + "@babel/plugin-transform-modules-systemjs" "^7.23.0" + "@babel/plugin-transform-modules-umd" "^7.22.5" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.22.5" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.22.11" + "@babel/plugin-transform-numeric-separator" "^7.22.11" + "@babel/plugin-transform-object-rest-spread" "^7.22.15" + "@babel/plugin-transform-object-super" "^7.22.5" + "@babel/plugin-transform-optional-catch-binding" "^7.22.11" + "@babel/plugin-transform-optional-chaining" "^7.23.0" + "@babel/plugin-transform-parameters" "^7.22.15" + "@babel/plugin-transform-private-methods" "^7.22.5" + "@babel/plugin-transform-private-property-in-object" "^7.22.11" + "@babel/plugin-transform-property-literals" "^7.22.5" + "@babel/plugin-transform-regenerator" "^7.22.10" + "@babel/plugin-transform-reserved-words" "^7.22.5" + "@babel/plugin-transform-shorthand-properties" "^7.22.5" + "@babel/plugin-transform-spread" "^7.22.5" + "@babel/plugin-transform-sticky-regex" "^7.22.5" + "@babel/plugin-transform-template-literals" "^7.22.5" + "@babel/plugin-transform-typeof-symbol" "^7.22.5" + "@babel/plugin-transform-unicode-escapes" "^7.22.10" + "@babel/plugin-transform-unicode-property-regex" "^7.22.5" + "@babel/plugin-transform-unicode-regex" "^7.22.5" + "@babel/plugin-transform-unicode-sets-regex" "^7.22.5" + "@babel/preset-modules" "0.1.6-no-external-plugins" + "@babel/types" "^7.23.0" + babel-plugin-polyfill-corejs2 "^0.4.6" + babel-plugin-polyfill-corejs3 "^0.8.5" + babel-plugin-polyfill-regenerator "^0.5.3" + core-js-compat "^3.31.0" + semver "^6.3.1" + "@babel/preset-env@~7.21.0": version "7.21.5" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.21.5.tgz#db2089d99efd2297716f018aeead815ac3decffb" @@ -1697,18 +1828,27 @@ semver "^6.3.0" "@babel/preset-flow@^7.13.13": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.22.5.tgz#876f24ab6b38bd79703a93f32020ca2162312784" - integrity sha512-ta2qZ+LSiGCrP5pgcGt8xMnnkXQrq8Sa4Ulhy06BOlF5QbLw9q5hIx7bn5MrsvyTGAfh6kTOo07Q+Pfld/8Y5Q== + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.22.15.tgz#30318deb9b3ebd9f5738e96da03a531e0cd3165d" + integrity sha512-dB5aIMqpkgbTfN5vDdTRPzjqtWiZcRESNR88QYnoPR+bmdYoluOzMX9tQerTv0XzSgZYctPfO1oc0N5zdog1ew== dependencies: "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" "@babel/plugin-transform-flow-strip-types" "^7.22.5" +"@babel/preset-modules@0.1.6-no-external-plugins": + version "0.1.6-no-external-plugins" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" + integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + "@babel/preset-modules@^0.1.5": - version "0.1.5" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" - integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== + version "0.1.6" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6.tgz#31bcdd8f19538437339d17af00d177d854d9d458" + integrity sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg== dependencies: "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" @@ -1717,20 +1857,20 @@ esutils "^2.0.2" "@babel/preset-typescript@^7.13.0", "@babel/preset-typescript@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.22.5.tgz#16367d8b01d640e9a507577ed4ee54e0101e51c8" - integrity sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ== + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.2.tgz#c8de488130b7081f7e1482936ad3de5b018beef4" + integrity sha512-u4UJc1XsS1GhIGteM8rnGiIvf9rJpiVgMEeCnwlLA7WJPC+jcXWJAGxYmeqs5hOZD8BbAfnV5ezBOxQbb4OUxA== dependencies: "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" "@babel/plugin-syntax-jsx" "^7.22.5" - "@babel/plugin-transform-modules-commonjs" "^7.22.5" - "@babel/plugin-transform-typescript" "^7.22.5" + "@babel/plugin-transform-modules-commonjs" "^7.23.0" + "@babel/plugin-transform-typescript" "^7.22.15" "@babel/register@^7.13.16": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.22.5.tgz#e4d8d0f615ea3233a27b5c6ada6750ee59559939" - integrity sha512-vV6pm/4CijSQ8Y47RH5SopXzursN35RQINfGJkmOlcpAtGuf94miFvIPhCKGQN7WGIcsgG1BHEX2KVdTYwTwUQ== + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.22.15.tgz#c2c294a361d59f5fa7bcc8b97ef7319c32ecaec7" + integrity sha512-V3Q3EqoQdn65RCgTLwauZaTfd1ShhwPmbBv+1dkZV/HpCGMKVyn6oFcRlI7RaKqiDQjX2Qd3AuoEguBgdjIKlg== dependencies: clone-deep "^4.0.1" find-cache-dir "^2.0.0" @@ -1743,14 +1883,21 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@7.22.6", "@babel/runtime@^7.13.10", "@babel/runtime@^7.17.8", "@babel/runtime@^7.22.6", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": +"@babel/runtime@7.22.6": version "7.22.6" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.6.tgz#57d64b9ae3cff1d67eb067ae117dac087f5bd438" integrity sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ== dependencies: regenerator-runtime "^0.13.11" -"@babel/template@7.22.5", "@babel/template@^7.20.7", "@babel/template@^7.22.5", "@babel/template@^7.3.3": +"@babel/runtime@^7.13.10", "@babel/runtime@^7.17.8", "@babel/runtime@^7.22.6", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" + integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/template@7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec" integrity sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw== @@ -1759,19 +1906,28 @@ "@babel/parser" "^7.22.5" "@babel/types" "^7.22.5" -"@babel/traverse@^7.0.0-beta.54", "@babel/traverse@^7.16.0", "@babel/traverse@^7.21.5", "@babel/traverse@^7.22.5", "@babel/traverse@^7.22.6", "@babel/traverse@^7.22.8": - version "7.22.8" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.8.tgz#4d4451d31bc34efeae01eac222b514a77aa4000e" - integrity sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw== +"@babel/template@^7.20.7", "@babel/template@^7.22.15", "@babel/template@^7.22.5", "@babel/template@^7.3.3": + version "7.22.15" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" + integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== dependencies: - "@babel/code-frame" "^7.22.5" - "@babel/generator" "^7.22.7" - "@babel/helper-environment-visitor" "^7.22.5" - "@babel/helper-function-name" "^7.22.5" + "@babel/code-frame" "^7.22.13" + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" + +"@babel/traverse@^7.0.0-beta.54", "@babel/traverse@^7.16.0", "@babel/traverse@^7.21.5", "@babel/traverse@^7.22.5", "@babel/traverse@^7.22.8", "@babel/traverse@^7.23.2": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" + integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" "@babel/helper-hoist-variables" "^7.22.5" "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.22.7" - "@babel/types" "^7.22.5" + "@babel/parser" "^7.23.0" + "@babel/types" "^7.23.0" debug "^4.1.0" globals "^11.1.0" @@ -1791,13 +1947,13 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.54", "@babel/types@^7.20.7", "@babel/types@^7.21.5", "@babel/types@^7.22.5", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.5.tgz#cd93eeaab025880a3a47ec881f4b096a5b786fbe" - integrity sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA== +"@babel/types@^7.0.0", "@babel/types@^7.0.0-beta.54", "@babel/types@^7.20.7", "@babel/types@^7.21.5", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.23.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" + integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== dependencies: "@babel/helper-string-parser" "^7.22.5" - "@babel/helper-validator-identifier" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" "@babel/types@~7.21.2": @@ -1815,9 +1971,9 @@ integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== "@braintree/sanitize-url@^6.0.0": - version "6.0.2" - resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.2.tgz#6110f918d273fe2af8ea1c4398a88774bb9fc12f" - integrity sha512-Tbsj02wXCbqGmzdnXNk0SOF19ChhRU70BsroIi4Pm6Ehp56in6vch94mfbdQ17DozxkL3BAVjbZ4Qc1a0HFRAg== + version "6.0.4" + resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz#923ca57e173c6b232bbbb07347b1be982f03e783" + integrity sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A== "@cbor-extract/cbor-extract-darwin-arm64@2.1.1": version "2.1.1" @@ -1877,9 +2033,9 @@ figures "^1.7.0" "@cypress/request@^2.88.5": - version "2.88.11" - resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.11.tgz#5a4c7399bc2d7e7ed56e92ce5acb620c8b187047" - integrity sha512-M83/wfQ1EkspjkE2lNWNV5ui2Cv7UCv1swW1DqljahbzLVWltcsexQh8jYtuS/vzFXP+HySntGM83ZXA9fn17w== + version "2.88.12" + resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.12.tgz#ba4911431738494a85e93fb04498cb38bc55d590" + integrity sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA== dependencies: aws-sign2 "~0.7.0" aws4 "^1.8.0" @@ -1896,7 +2052,7 @@ performance-now "^2.1.0" qs "~6.10.3" safe-buffer "^5.1.2" - tough-cookie "~2.5.0" + tough-cookie "^4.1.3" tunnel-agent "^0.6.0" uuid "^8.3.2" @@ -1971,551 +2127,441 @@ resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd" integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA== -"@esbuild/android-arm64@0.18.13": - version "0.18.13" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.13.tgz#70ef455455654c7800c31ae55ae295d81712238c" - integrity sha512-j7NhycJUoUAG5kAzGf4fPWfd17N6SM3o1X6MlXVqfHvs2buFraCJzos9vbeWjLxOyBKHyPOnuCuipbhvbYtTAg== - "@esbuild/android-arm64@0.18.17": version "0.18.17" resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.17.tgz#9e00eb6865ed5f2dbe71a1e96f2c52254cd92903" integrity sha512-9np+YYdNDed5+Jgr1TdWBsozZ85U1Oa3xW0c7TWqH0y2aGghXtZsuT8nYRbzOMcl0bXZXjOGbksoTtVOlWrRZg== -"@esbuild/android-arm64@0.18.18": - version "0.18.18" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.18.tgz#a52e0a1276065b1bf6b2de45b482cf36b6b945bd" - integrity sha512-dkAPYzRHq3dNXIzOyAknYOzsx8o3KWaNiuu56B2rP9IFPmFWMS58WQcTlUQi6iloku8ZyHHMluCe5sTWhKq/Yw== - "@esbuild/android-arm64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== +"@esbuild/android-arm64@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.5.tgz#276c5f99604054d3dbb733577e09adae944baa90" + integrity sha512-5d1OkoJxnYQfmC+Zd8NBFjkhyCNYwM4n9ODrycTFY6Jk1IGiZ+tjVJDDSwDt77nK+tfpGP4T50iMtVi4dEGzhQ== + "@esbuild/android-arm@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d" integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A== -"@esbuild/android-arm@0.18.13": - version "0.18.13" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.13.tgz#15db83099855fc4193658a40687893ee5c95d7a9" - integrity sha512-KwqFhxRFMKZINHzCqf8eKxE0XqWlAVPRxwy6rc7CbVFxzUWB2sA/s3hbMZeemPdhN3fKBkqOaFhTbS8xJXYIWQ== - "@esbuild/android-arm@0.18.17": version "0.18.17" resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.17.tgz#1aa013b65524f4e9f794946b415b32ae963a4618" integrity sha512-wHsmJG/dnL3OkpAcwbgoBTTMHVi4Uyou3F5mf58ZtmUyIKfcdA7TROav/6tCzET4A3QW2Q2FC+eFneMU+iyOxg== -"@esbuild/android-arm@0.18.18": - version "0.18.18" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.18.tgz#ffd591b956ced1c96e1224edfbed1001adadf2ae" - integrity sha512-oBymf7ZwplAawSxmiSlBCf+FMcY0f4bs5QP2jn43JKUf0M9DnrUTjqa5RvFPl1elw+sMfcpfBRPK+rb+E1q7zg== - "@esbuild/android-arm@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682" integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== +"@esbuild/android-arm@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.5.tgz#4a3cbf14758166abaae8ba9c01a80e68342a4eec" + integrity sha512-bhvbzWFF3CwMs5tbjf3ObfGqbl/17ict2/uwOSfr3wmxDE6VdS2GqY/FuzIPe0q0bdhj65zQsvqfArI9MY6+AA== + "@esbuild/android-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1" integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww== -"@esbuild/android-x64@0.18.13": - version "0.18.13" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.13.tgz#473d589219e1c06e305cf61ca77b8f69d9b6ffab" - integrity sha512-M2eZkRxR6WnWfVELHmv6MUoHbOqnzoTVSIxgtsyhm/NsgmL+uTmag/VVzdXvmahak1I6sOb1K/2movco5ikDJg== - "@esbuild/android-x64@0.18.17": version "0.18.17" resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.17.tgz#c2bd0469b04ded352de011fae34a7a1d4dcecb79" integrity sha512-O+FeWB/+xya0aLg23hHEM2E3hbfwZzjqumKMSIqcHbNvDa+dza2D0yLuymRBQQnC34CWrsJUXyH2MG5VnLd6uw== -"@esbuild/android-x64@0.18.18": - version "0.18.18" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.18.tgz#6e8a7b41fc80265849e0a1de928fe162b27990c7" - integrity sha512-r7/pVcrUQMYkjvtE/1/n6BxhWM+/9tvLxDG1ev1ce4z3YsqoxMK9bbOM6bFcj0BowMeGQvOZWcBV182lFFKmrw== - "@esbuild/android-x64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== +"@esbuild/android-x64@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.5.tgz#21a3d11cd4613d2d3c5ccb9e746c254eb9265b0a" + integrity sha512-9t+28jHGL7uBdkBjL90QFxe7DVA+KGqWlHCF8ChTKyaKO//VLuoBricQCgwhOjA1/qOczsw843Fy4cbs4H3DVA== + "@esbuild/darwin-arm64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz#584c34c5991b95d4d48d333300b1a4e2ff7be276" integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg== -"@esbuild/darwin-arm64@0.18.13": - version "0.18.13" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.13.tgz#0f525b2c1821a0591a06963582e5dc749ba51d45" - integrity sha512-f5goG30YgR1GU+fxtaBRdSW3SBG9pZW834Mmhxa6terzcboz7P2R0k4lDxlkP7NYRIIdBbWp+VgwQbmMH4yV7w== - "@esbuild/darwin-arm64@0.18.17": version "0.18.17" resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.17.tgz#0c21a59cb5bd7a2cec66c7a42431dca42aefeddd" integrity sha512-M9uJ9VSB1oli2BE/dJs3zVr9kcCBBsE883prage1NWz6pBS++1oNn/7soPNS3+1DGj0FrkSvnED4Bmlu1VAE9g== -"@esbuild/darwin-arm64@0.18.18": - version "0.18.18" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.18.tgz#36755dc44cefac6c56e82ed3b67f9d457ca27156" - integrity sha512-MSe2iV9MAH3wfP0g+vzN9bp36rtPPuCSk+bT5E2vv/d8krvW5uB/Pi/Q5+txUZuxsG3GcO8dhygjnFq0wJU9hQ== - "@esbuild/darwin-arm64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1" integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== +"@esbuild/darwin-arm64@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.5.tgz#714cb839f467d6a67b151ee8255886498e2b9bf6" + integrity sha512-mvXGcKqqIqyKoxq26qEDPHJuBYUA5KizJncKOAf9eJQez+L9O+KfvNFu6nl7SCZ/gFb2QPaRqqmG0doSWlgkqw== + "@esbuild/darwin-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb" integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw== -"@esbuild/darwin-x64@0.18.13": - version "0.18.13" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.13.tgz#81965b690bae86bf1289b2ce0732506fd41fb545" - integrity sha512-RIrxoKH5Eo+yE5BtaAIMZaiKutPhZjw+j0OCh8WdvKEKJQteacq0myZvBDLU+hOzQOZWJeDnuQ2xgSScKf1Ovw== - "@esbuild/darwin-x64@0.18.17": version "0.18.17" resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.17.tgz#92f8763ff6f97dff1c28a584da7b51b585e87a7b" integrity sha512-XDre+J5YeIJDMfp3n0279DFNrGCXlxOuGsWIkRb1NThMZ0BsrWXoTg23Jer7fEXQ9Ye5QjrvXpxnhzl3bHtk0g== -"@esbuild/darwin-x64@0.18.18": - version "0.18.18" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.18.tgz#8aa691d0cbd3fb67f9f9083375c0c72e0463b8b2" - integrity sha512-ARFYISOWkaifjcr48YtO70gcDNeOf1H2RnmOj6ip3xHIj66f3dAbhcd5Nph5np6oHI7DhHIcr9MWO18RvUL1bw== - "@esbuild/darwin-x64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== +"@esbuild/darwin-x64@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.5.tgz#2c553e97a6d2b4ae76a884e35e6cbab85a990bbf" + integrity sha512-Ly8cn6fGLNet19s0X4unjcniX24I0RqjPv+kurpXabZYSXGM4Pwpmf85WHJN3lAgB8GSth7s5A0r856S+4DyiA== + "@esbuild/freebsd-arm64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2" integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ== -"@esbuild/freebsd-arm64@0.18.13": - version "0.18.13" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.13.tgz#895bb37fdea886db09549119158e044f146861f0" - integrity sha512-AfRPhHWmj9jGyLgW/2FkYERKmYR+IjYxf2rtSLmhOrPGFh0KCETFzSjx/JX/HJnvIqHt/DRQD/KAaVsUKoI3Xg== - "@esbuild/freebsd-arm64@0.18.17": version "0.18.17" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.17.tgz#934f74bdf4022e143ba2f21d421b50fd0fead8f8" integrity sha512-cjTzGa3QlNfERa0+ptykyxs5A6FEUQQF0MuilYXYBGdBxD3vxJcKnzDlhDCa1VAJCmAxed6mYhA2KaJIbtiNuQ== -"@esbuild/freebsd-arm64@0.18.18": - version "0.18.18" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.18.tgz#0aafde382df508d7863360950d5f491c07024806" - integrity sha512-BHnXmexzEWRU2ZySJosU0Ts0NRnJnNrMB6t4EiIaOSel73I8iLsNiTPLH0rJulAh19cYZutsB5XHK6N8fi5eMg== - "@esbuild/freebsd-arm64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== +"@esbuild/freebsd-arm64@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.5.tgz#d554f556718adb31917a0da24277bf84b6ee87f3" + integrity sha512-GGDNnPWTmWE+DMchq1W8Sd0mUkL+APvJg3b11klSGUDvRXh70JqLAO56tubmq1s2cgpVCSKYywEiKBfju8JztQ== + "@esbuild/freebsd-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4" integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ== -"@esbuild/freebsd-x64@0.18.13": - version "0.18.13" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.13.tgz#0b1dfde3ff1b18f03f71e460f91dc463e6a23903" - integrity sha512-pGzWWZJBInhIgdEwzn8VHUBang8UvFKsvjDkeJ2oyY5gZtAM6BaxK0QLCuZY+qoj/nx/lIaItH425rm/hloETA== - "@esbuild/freebsd-x64@0.18.17": version "0.18.17" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.17.tgz#16b6e90ba26ecc865eab71c56696258ec7f5d8bf" integrity sha512-sOxEvR8d7V7Kw8QqzxWc7bFfnWnGdaFBut1dRUYtu+EIRXefBc/eIsiUiShnW0hM3FmQ5Zf27suDuHsKgZ5QrA== -"@esbuild/freebsd-x64@0.18.18": - version "0.18.18" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.18.tgz#f00e54a3b65824ac3c749173bec9cd56d95fe73b" - integrity sha512-n823w35wm0ZOobbuE//0sJjuz1Qj619+AwjgOcAJMN2pomZhH9BONCtn+KlfrmM/NWZ+27yB/eGVFzUIWLeh3w== - "@esbuild/freebsd-x64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== +"@esbuild/freebsd-x64@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.5.tgz#288f7358a3bb15d99e73c65c9adaa3dabb497432" + integrity sha512-1CCwDHnSSoA0HNwdfoNY0jLfJpd7ygaLAp5EHFos3VWJCRX9DMwWODf96s9TSse39Br7oOTLryRVmBoFwXbuuQ== + "@esbuild/linux-arm64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb" integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg== -"@esbuild/linux-arm64@0.18.13": - version "0.18.13" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.13.tgz#350febed5d32d8ec1a424a4c4d7c9ba885604960" - integrity sha512-hCzZbVJEHV7QM77fHPv2qgBcWxgglGFGCxk6KfQx6PsVIdi1u09X7IvgE9QKqm38OpkzaAkPnnPqwRsltvLkIQ== - "@esbuild/linux-arm64@0.18.17": version "0.18.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.17.tgz#179a58e8d4c72116eb068563629349f8f4b48072" integrity sha512-c9w3tE7qA3CYWjT+M3BMbwMt+0JYOp3vCMKgVBrCl1nwjAlOMYzEo+gG7QaZ9AtqZFj5MbUc885wuBBmu6aADQ== -"@esbuild/linux-arm64@0.18.18": - version "0.18.18" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.18.tgz#e04203429670257126a1bfee79bbd56448b24f5e" - integrity sha512-zANxnwF0sCinDcAqoMohGoWBK9QaFJ65Vgh0ZE+RXtURaMwx+RfmfLElqtnn7X8OYNckMoIXSg7u+tZ3tqTlrA== - "@esbuild/linux-arm64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== +"@esbuild/linux-arm64@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.5.tgz#95933ae86325c93cb6b5e8333d22120ecfdc901b" + integrity sha512-o3vYippBmSrjjQUCEEiTZ2l+4yC0pVJD/Dl57WfPwwlvFkrxoSO7rmBZFii6kQB3Wrn/6GwJUPLU5t52eq2meA== + "@esbuild/linux-arm@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a" integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA== -"@esbuild/linux-arm@0.18.13": - version "0.18.13" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.13.tgz#47639d73d894026350eaccf7c174f1d26b747d6a" - integrity sha512-4iMxLRMCxGyk7lEvkkvrxw4aJeC93YIIrfbBlUJ062kilUUnAiMb81eEkVvCVoh3ON283ans7+OQkuy1uHW+Hw== - "@esbuild/linux-arm@0.18.17": version "0.18.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.17.tgz#9d78cf87a310ae9ed985c3915d5126578665c7b5" integrity sha512-2d3Lw6wkwgSLC2fIvXKoMNGVaeY8qdN0IC3rfuVxJp89CRfA3e3VqWifGDfuakPmp90+ZirmTfye1n4ncjv2lg== -"@esbuild/linux-arm@0.18.18": - version "0.18.18" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.18.tgz#863236dc47df2269f860001ca5c5ff50931e9933" - integrity sha512-Kck3jxPLQU4VeAGwe8Q4NU+IWIx+suULYOFUI9T0C2J1+UQlOHJ08ITN+MaJJ+2youzJOmKmcphH/t3SJxQ1Tw== - "@esbuild/linux-arm@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== +"@esbuild/linux-arm@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.5.tgz#0acef93aa3e0579e46d33b666627bddb06636664" + integrity sha512-lrWXLY/vJBzCPC51QN0HM71uWgIEpGSjSZZADQhq7DKhPcI6NH1IdzjfHkDQws2oNpJKpR13kv7/pFHBbDQDwQ== + "@esbuild/linux-ia32@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a" integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ== -"@esbuild/linux-ia32@0.18.13": - version "0.18.13" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.13.tgz#a901a16349c58bf6f873bced36bdf46a5f4dac5d" - integrity sha512-I3OKGbynl3AAIO6onXNrup/ttToE6Rv2XYfFgLK/wnr2J+1g+7k4asLrE+n7VMhaqX+BUnyWkCu27rl+62Adug== - "@esbuild/linux-ia32@0.18.17": version "0.18.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.17.tgz#6fed202602d37361bca376c9d113266a722a908c" integrity sha512-1DS9F966pn5pPnqXYz16dQqWIB0dmDfAQZd6jSSpiT9eX1NzKh07J6VKR3AoXXXEk6CqZMojiVDSZi1SlmKVdg== -"@esbuild/linux-ia32@0.18.18": - version "0.18.18" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.18.tgz#9ef6c7eeb8c86c5c1b7234a9684c6f45cbc2ed57" - integrity sha512-+VHz2sIRlY5u8IlaLJpdf5TL2kM76yx186pW7bpTB+vLWpzcFQVP04L842ZB2Ty13A1VXUvy3DbU1jV65P2skg== - "@esbuild/linux-ia32@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== +"@esbuild/linux-ia32@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.5.tgz#b6e5c9e80b42131cbd6b1ddaa48c92835f1ed67f" + integrity sha512-MkjHXS03AXAkNp1KKkhSKPOCYztRtK+KXDNkBa6P78F8Bw0ynknCSClO/ztGszILZtyO/lVKpa7MolbBZ6oJtQ== + "@esbuild/linux-loong64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72" integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ== -"@esbuild/linux-loong64@0.18.13": - version "0.18.13" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.13.tgz#faa08db402c18e351234719e00aba98867aa34ce" - integrity sha512-8pcKDApAsKc6WW51ZEVidSGwGbebYw2qKnO1VyD8xd6JN0RN6EUXfhXmDk9Vc4/U3Y4AoFTexQewQDJGsBXBpg== - "@esbuild/linux-loong64@0.18.17": version "0.18.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.17.tgz#cdc60304830be1e74560c704bfd72cab8a02fa06" integrity sha512-EvLsxCk6ZF0fpCB6w6eOI2Fc8KW5N6sHlIovNe8uOFObL2O+Mr0bflPHyHwLT6rwMg9r77WOAWb2FqCQrVnwFg== -"@esbuild/linux-loong64@0.18.18": - version "0.18.18" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.18.tgz#dca8624674924ac92c9e56399af160479283f130" - integrity sha512-fXPEPdeGBvguo/1+Na8OIWz3667BN1cwbGtTEZWTd0qdyTsk5gGf9jVX8MblElbDb/Cpw6y5JiaQuL96YmvBwQ== - "@esbuild/linux-loong64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d" integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== +"@esbuild/linux-loong64@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.5.tgz#e5f0cf95a180158b01ff5f417da796a1c09dfbea" + integrity sha512-42GwZMm5oYOD/JHqHska3Jg0r+XFb/fdZRX+WjADm3nLWLcIsN27YKtqxzQmGNJgu0AyXg4HtcSK9HuOk3v1Dw== + "@esbuild/linux-mips64el@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289" integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A== -"@esbuild/linux-mips64el@0.18.13": - version "0.18.13" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.13.tgz#2123a54b49ddc1a1dff057bba8a9a5e9f26e5009" - integrity sha512-6GU+J1PLiVqWx8yoCK4Z0GnfKyCGIH5L2KQipxOtbNPBs+qNDcMJr9euxnyJ6FkRPyMwaSkjejzPSISD9hb+gg== - "@esbuild/linux-mips64el@0.18.17": version "0.18.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.17.tgz#c367b2855bb0902f5576291a2049812af2088086" integrity sha512-e0bIdHA5p6l+lwqTE36NAW5hHtw2tNRmHlGBygZC14QObsA3bD4C6sXLJjvnDIjSKhW1/0S3eDy+QmX/uZWEYQ== -"@esbuild/linux-mips64el@0.18.18": - version "0.18.18" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.18.tgz#e6525b60ae9d8c3bdc652a773e6ebf66caa3fdd3" - integrity sha512-dLvRB87pIBIRnEIC32LIcgwK1JzlIuADIRjLKdUIpxauKwMuS/xMpN+cFl+0nN4RHNYOZ57DmXFFmQAcdlFOmw== - "@esbuild/linux-mips64el@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== +"@esbuild/linux-mips64el@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.5.tgz#ae36fb86c7d5f641f3a0c8472e83dcb6ea36a408" + integrity sha512-kcjndCSMitUuPJobWCnwQ9lLjiLZUR3QLQmlgaBfMX23UEa7ZOrtufnRds+6WZtIS9HdTXqND4yH8NLoVVIkcg== + "@esbuild/linux-ppc64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7" integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg== -"@esbuild/linux-ppc64@0.18.13": - version "0.18.13" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.13.tgz#9a9befd275a6a3f5baeed89aaafb746df7ba735d" - integrity sha512-pfn/OGZ8tyR8YCV7MlLl5hAit2cmS+j/ZZg9DdH0uxdCoJpV7+5DbuXrR+es4ayRVKIcfS9TTMCs60vqQDmh+w== - "@esbuild/linux-ppc64@0.18.17": version "0.18.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.17.tgz#7fdc0083d42d64a4651711ee0a7964f489242f45" integrity sha512-BAAilJ0M5O2uMxHYGjFKn4nJKF6fNCdP1E0o5t5fvMYYzeIqy2JdAP88Az5LHt9qBoUa4tDaRpfWt21ep5/WqQ== -"@esbuild/linux-ppc64@0.18.18": - version "0.18.18" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.18.tgz#2ea6a4e0c6b0db21770d2c3c1525623dceadfe46" - integrity sha512-fRChqIJZ7hLkXSKfBLYgsX9Ssb5OGCjk3dzCETF5QSS1qjTgayLv0ALUdJDB9QOh/nbWwp+qfLZU6md4XcjL7w== - "@esbuild/linux-ppc64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== +"@esbuild/linux-ppc64@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.5.tgz#7960cb1666f0340ddd9eef7b26dcea3835d472d0" + integrity sha512-yJAxJfHVm0ZbsiljbtFFP1BQKLc8kUF6+17tjQ78QjqjAQDnhULWiTA6u0FCDmYT1oOKS9PzZ2z0aBI+Mcyj7Q== + "@esbuild/linux-riscv64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09" integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA== -"@esbuild/linux-riscv64@0.18.13": - version "0.18.13" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.13.tgz#6644a5b5840fa0c3ffade6f87d943413ece520a8" - integrity sha512-aIbhU3LPg0lOSCfVeGHbmGYIqOtW6+yzO+Nfv57YblEK01oj0mFMtvDJlOaeAZ6z0FZ9D13oahi5aIl9JFphGg== - "@esbuild/linux-riscv64@0.18.17": version "0.18.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.17.tgz#5198a417f3f5b86b10c95647b8bc032e5b6b2b1c" integrity sha512-Wh/HW2MPnC3b8BqRSIme/9Zhab36PPH+3zam5pqGRH4pE+4xTrVLx2+XdGp6fVS3L2x+DrsIcsbMleex8fbE6g== -"@esbuild/linux-riscv64@0.18.18": - version "0.18.18" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.18.tgz#296c25d5bdeb3bab9ca79ad5279a8cc0a42fbeea" - integrity sha512-ALK/BT3u7Hoa/vHjow6W6+MKF0ohYcVcVA1EpskI4bkBPVuDLrUDqt2YFifg5UcZc8qup0CwQqWmFUd6VMNgaA== - "@esbuild/linux-riscv64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== +"@esbuild/linux-riscv64@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.5.tgz#32207df26af60a3a9feea1783fc21b9817bade19" + integrity sha512-5u8cIR/t3gaD6ad3wNt1MNRstAZO+aNyBxu2We8X31bA8XUNyamTVQwLDA1SLoPCUehNCymhBhK3Qim1433Zag== + "@esbuild/linux-s390x@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829" integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q== -"@esbuild/linux-s390x@0.18.13": - version "0.18.13" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.13.tgz#c1367a0a02b37f6b0382e71d9c9d97352ca23013" - integrity sha512-Pct1QwF2sp+5LVi4Iu5Y+6JsGaV2Z2vm4O9Dd7XZ5tKYxEHjFtb140fiMcl5HM1iuv6xXO8O1Vrb1iJxHlv8UA== - "@esbuild/linux-s390x@0.18.17": version "0.18.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.17.tgz#7459c2fecdee2d582f0697fb76a4041f4ad1dd1e" integrity sha512-j/34jAl3ul3PNcK3pfI0NSlBANduT2UO5kZ7FCaK33XFv3chDhICLY8wJJWIhiQ+YNdQ9dxqQctRg2bvrMlYgg== -"@esbuild/linux-s390x@0.18.18": - version "0.18.18" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.18.tgz#bec4e9c982e778c51deaa754e1ed3f0546705647" - integrity sha512-crT7jtOXd9iirY65B+mJQ6W0HWdNy8dtkZqKGWNcBnunpLcTCfne5y5bKic9bhyYzKpQEsO+C/VBPD8iF0RhRw== - "@esbuild/linux-s390x@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== +"@esbuild/linux-s390x@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.5.tgz#b38d5681db89a3723862dfa792812397b1510a7d" + integrity sha512-Z6JrMyEw/EmZBD/OFEFpb+gao9xJ59ATsoTNlj39jVBbXqoZm4Xntu6wVmGPB/OATi1uk/DB+yeDPv2E8PqZGw== + "@esbuild/linux-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4" integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw== -"@esbuild/linux-x64@0.18.13": - version "0.18.13" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.13.tgz#892674f0918ee3f5e523270cf49a69a557fb64c0" - integrity sha512-zTrIP0KzYP7O0+3ZnmzvUKgGtUvf4+piY8PIO3V8/GfmVd3ZyHJGz7Ht0np3P1wz+I8qJ4rjwJKqqEAbIEPngA== - "@esbuild/linux-x64@0.18.17": version "0.18.17" resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.17.tgz#948cdbf46d81c81ebd7225a7633009bc56a4488c" integrity sha512-QM50vJ/y+8I60qEmFxMoxIx4de03pGo2HwxdBeFd4nMh364X6TIBZ6VQ5UQmPbQWUVWHWws5MmJXlHAXvJEmpQ== -"@esbuild/linux-x64@0.18.18": - version "0.18.18" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.18.tgz#22c9666920d3b7ef453289516ccff1c3ecbfdddd" - integrity sha512-/NSgghjBOW9ELqjXDYxOCCIsvQUZpvua1/6NdnA9Vnrp9UzEydyDdFXljUjMMS9p5KxMzbMO9frjHYGVHBfCHg== - "@esbuild/linux-x64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338" integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== +"@esbuild/linux-x64@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.5.tgz#46feba2ad041a241379d150f415b472fe3885075" + integrity sha512-psagl+2RlK1z8zWZOmVdImisMtrUxvwereIdyJTmtmHahJTKb64pAcqoPlx6CewPdvGvUKe2Jw+0Z/0qhSbG1A== + "@esbuild/netbsd-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462" integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q== -"@esbuild/netbsd-x64@0.18.13": - version "0.18.13" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.13.tgz#67954292195ecbdae33ab09a9ae6a7f566e49d04" - integrity sha512-I6zs10TZeaHDYoGxENuksxE1sxqZpCp+agYeW039yqFwh3MgVvdmXL5NMveImOC6AtpLvE4xG5ujVic4NWFIDQ== - "@esbuild/netbsd-x64@0.18.17": version "0.18.17" resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.17.tgz#6bb89668c0e093c5a575ded08e1d308bd7fd63e7" integrity sha512-/jGlhWR7Sj9JPZHzXyyMZ1RFMkNPjC6QIAan0sDOtIo2TYk3tZn5UDrkE0XgsTQCxWTTOcMPf9p6Rh2hXtl5TQ== -"@esbuild/netbsd-x64@0.18.18": - version "0.18.18" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.18.tgz#99b6125868c5ba8f0131bacc3f2bd05918245f45" - integrity sha512-8Otf05Vx5sZjLLDulgr5QS5lsWXMplKZEyHMArH9/S4olLlhzmdhQBPhzhJTNwaL2FJNdWcUPNGAcoD5zDTfUA== - "@esbuild/netbsd-x64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== +"@esbuild/netbsd-x64@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.5.tgz#3b5c1fb068f26bfc681d31f682adf1bea4ef0702" + integrity sha512-kL2l+xScnAy/E/3119OggX8SrWyBEcqAh8aOY1gr4gPvw76la2GlD4Ymf832UCVbmuWeTf2adkZDK+h0Z/fB4g== + "@esbuild/openbsd-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691" integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g== -"@esbuild/openbsd-x64@0.18.13": - version "0.18.13" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.13.tgz#b3eef873dfab547fbe7bcdb3573e1c59dea676b7" - integrity sha512-W5C5nczhrt1y1xPG5bV+0M12p2vetOGlvs43LH8SopQ3z2AseIROu09VgRqydx5qFN7y9qCbpgHLx0kb0TcW7g== - "@esbuild/openbsd-x64@0.18.17": version "0.18.17" resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.17.tgz#abac2ae75fef820ef6c2c48da4666d092584c79d" integrity sha512-rSEeYaGgyGGf4qZM2NonMhMOP/5EHp4u9ehFiBrg7stH6BYEEjlkVREuDEcQ0LfIl53OXLxNbfuIj7mr5m29TA== -"@esbuild/openbsd-x64@0.18.18": - version "0.18.18" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.18.tgz#c2685bdd1e5aa11be1e212db371f474812a9b158" - integrity sha512-tFiFF4kT5L5qhVrWJUNxEXWvvX8nK/UX9ZrB7apuTwY3f6+Xy4aFMBPwAVrBYtBd5MOUuyOVHK6HBZCAHkwUlw== - "@esbuild/openbsd-x64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== +"@esbuild/openbsd-x64@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.5.tgz#ca6830316ca68056c5c88a875f103ad3235e00db" + integrity sha512-sPOfhtzFufQfTBgRnE1DIJjzsXukKSvZxloZbkJDG383q0awVAq600pc1nfqBcl0ice/WN9p4qLc39WhBShRTA== + "@esbuild/sunos-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273" integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg== -"@esbuild/sunos-x64@0.18.13": - version "0.18.13" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.13.tgz#b368080f42dbb5ae926d0567c02bcd68a34c5efd" - integrity sha512-X/xzuw4Hzpo/yq3YsfBbIsipNgmsm8mE/QeWbdGdTTeZ77fjxI2K0KP3AlhZ6gU3zKTw1bKoZTuKLnqcJ537qw== - "@esbuild/sunos-x64@0.18.17": version "0.18.17" resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.17.tgz#74a45fe1db8ea96898f1a9bb401dcf1dadfc8371" integrity sha512-Y7ZBbkLqlSgn4+zot4KUNYst0bFoO68tRgI6mY2FIM+b7ZbyNVtNbDP5y8qlu4/knZZ73fgJDlXID+ohY5zt5g== -"@esbuild/sunos-x64@0.18.18": - version "0.18.18" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.18.tgz#277b2f5727119fe3004e673eb9f6ead0b4ff0738" - integrity sha512-MPogVV8Bzh8os4OM+YDGGsSzCzmNRiyKGtHoJyZLtI4BMmd6EcxmGlcEGK1uM46h1BiOyi7Z7teUtzzQhvkC+w== - "@esbuild/sunos-x64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== +"@esbuild/sunos-x64@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.5.tgz#9efc4eb9539a7be7d5a05ada52ee43cda0d8e2dd" + integrity sha512-dGZkBXaafuKLpDSjKcB0ax0FL36YXCvJNnztjKV+6CO82tTYVDSH2lifitJ29jxRMoUhgkg9a+VA/B03WK5lcg== + "@esbuild/win32-arm64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f" integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag== -"@esbuild/win32-arm64@0.18.13": - version "0.18.13" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.13.tgz#11dedda0e8cfb5f781411ea362b2040304be0fc3" - integrity sha512-4CGYdRQT/ILd+yLLE5i4VApMPfGE0RPc/wFQhlluDQCK09+b4JDbxzzjpgQqTPrdnP7r5KUtGVGZYclYiPuHrw== - "@esbuild/win32-arm64@0.18.17": version "0.18.17" resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.17.tgz#fd95ffd217995589058a4ed8ac17ee72a3d7f615" integrity sha512-bwPmTJsEQcbZk26oYpc4c/8PvTY3J5/QK8jM19DVlEsAB41M39aWovWoHtNm78sd6ip6prilxeHosPADXtEJFw== -"@esbuild/win32-arm64@0.18.18": - version "0.18.18" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.18.tgz#e94d9e6d058e0ccb92d858badd4a6aa74772150e" - integrity sha512-YKD6LF/XXY9REu+ZL5RAsusiG48n602qxsMVh/E8FFD9hp4OyTQaL9fpE1ovxwQXqFio+tT0ITUGjDSSSPN13w== - "@esbuild/win32-arm64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== +"@esbuild/win32-arm64@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.5.tgz#29f8184afa7a02a956ebda4ed638099f4b8ff198" + integrity sha512-dWVjD9y03ilhdRQ6Xig1NWNgfLtf2o/STKTS+eZuF90fI2BhbwD6WlaiCGKptlqXlURVB5AUOxUj09LuwKGDTg== + "@esbuild/win32-ia32@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03" integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw== -"@esbuild/win32-ia32@0.18.13": - version "0.18.13" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.13.tgz#6b8aa95515c05827b7c24c9db9581943566e0dcb" - integrity sha512-D+wKZaRhQI+MUGMH+DbEr4owC2D7XnF+uyGiZk38QbgzLcofFqIOwFs7ELmIeU45CQgfHNy9Q+LKW3cE8g37Kg== - "@esbuild/win32-ia32@0.18.17": version "0.18.17" resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.17.tgz#9b7ef5d0df97593a80f946b482e34fcba3fa4aaf" integrity sha512-H/XaPtPKli2MhW+3CQueo6Ni3Avggi6hP/YvgkEe1aSaxw+AeO8MFjq8DlgfTd9Iz4Yih3QCZI6YLMoyccnPRg== -"@esbuild/win32-ia32@0.18.18": - version "0.18.18" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.18.tgz#454916b1d0b85d2f82252192ae7bd5ea65c98ea1" - integrity sha512-NjSBmBsyZBTsZB6ga6rA6PfG/RHnwruUz/9YEVXcm4STGauFWvhYhOMhEyw1yU5NVgYYm8CH5AltCm77TS21/Q== - "@esbuild/win32-ia32@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== +"@esbuild/win32-ia32@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.5.tgz#f3de07afb292ecad651ae4bb8727789de2d95b05" + integrity sha512-4liggWIA4oDgUxqpZwrDhmEfAH4d0iljanDOK7AnVU89T6CzHon/ony8C5LeOdfgx60x5cnQJFZwEydVlYx4iw== + "@esbuild/win32-x64@0.17.19": version "0.17.19" resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061" integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA== -"@esbuild/win32-x64@0.18.13": - version "0.18.13" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.13.tgz#031f69b1f4cf62a18c38d502458c0b8b02625461" - integrity sha512-iVl6lehAfJS+VmpF3exKpNQ8b0eucf5VWfzR8S7xFve64NBNz2jPUgx1X93/kfnkfgP737O+i1k54SVQS7uVZA== - "@esbuild/win32-x64@0.18.17": version "0.18.17" resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.17.tgz#bcb2e042631b3c15792058e189ed879a22b2968b" integrity sha512-fGEb8f2BSA3CW7riJVurug65ACLuQAzKq0SSqkY2b2yHHH0MzDfbLyKIGzHwOI/gkHcxM/leuSW6D5w/LMNitA== -"@esbuild/win32-x64@0.18.18": - version "0.18.18" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.18.tgz#914c007ab1dbd28ca84e79ee666adeee6ccf92b4" - integrity sha512-eTSg/gC3p3tdjj4roDhe5xu94l1s2jMazP8u2FsYO8SEKvSpPOO71EucprDn/IuErDPvTFUhV9lTw5z5WJCRKQ== - "@esbuild/win32-x64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== +"@esbuild/win32-x64@0.19.5": + version "0.19.5" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.5.tgz#faad84c41ba12e3a0acb52571df9bff37bee75f6" + integrity sha512-czTrygUsB/jlM8qEW5MD8bgYU2Xg14lo6kBDXW6HdxKjh8M5PzETGiSHaz9MtbXBYDloHNUAUW2tMiKW4KM9Mw== + "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -2543,32 +2589,32 @@ resolved "https://registry.yarnpkg.com/@fal-works/esbuild-plugin-global-externals/-/esbuild-plugin-global-externals-2.1.2.tgz#c05ed35ad82df8e6ac616c68b92c2282bd083ba4" integrity sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ== -"@floating-ui/core@^1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.4.1.tgz#0d633f4b76052668afb932492ac452f7ebe97f17" - integrity sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ== +"@floating-ui/core@^1.4.2": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.5.0.tgz#5c05c60d5ae2d05101c3021c1a2a350ddc027f8c" + integrity sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg== dependencies: - "@floating-ui/utils" "^0.1.1" + "@floating-ui/utils" "^0.1.3" -"@floating-ui/dom@^1.3.0": - version "1.5.1" - resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.5.1.tgz#88b70defd002fe851f17b4a25efb2d3c04d7a8d7" - integrity sha512-KwvVcPSXg6mQygvA1TjbN/gh///36kKtllIF8SUm0qpFj8+rvYrpvlYdL1JoA71SHpDqgSSdGOSoQ0Mp3uY5aw== +"@floating-ui/dom@^1.5.1": + version "1.5.3" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.5.3.tgz#54e50efcb432c06c23cd33de2b575102005436fa" + integrity sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA== dependencies: - "@floating-ui/core" "^1.4.1" - "@floating-ui/utils" "^0.1.1" + "@floating-ui/core" "^1.4.2" + "@floating-ui/utils" "^0.1.3" "@floating-ui/react-dom@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.0.1.tgz#7972a4fc488a8c746cded3cfe603b6057c308a91" - integrity sha512-rZtAmSht4Lry6gdhAJDrCp/6rKN7++JnL1/Anbr/DdeyYXQPxvg/ivrbYvJulbRf4vL8b212suwMM2lxbv+RQA== + version "2.0.2" + resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.0.2.tgz#fab244d64db08e6bed7be4b5fcce65315ef44d20" + integrity sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ== dependencies: - "@floating-ui/dom" "^1.3.0" + "@floating-ui/dom" "^1.5.1" -"@floating-ui/utils@^0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.1.tgz#1a5b1959a528e374e8037c4396c3e825d6cf4a83" - integrity sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw== +"@floating-ui/utils@^0.1.3": + version "0.1.6" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.6.tgz#22958c042e10b67463997bd6ea7115fe28cbcaf9" + integrity sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A== "@hexagon/base64@^1.1.27": version "1.1.28" @@ -2576,11 +2622,11 @@ integrity sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw== "@humanwhocodes/config-array@^0.11.8": - version "0.11.10" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.10.tgz#5a3ffe32cc9306365fb3fd572596cd602d5e12d2" - integrity sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ== + version "0.11.13" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297" + integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== dependencies: - "@humanwhocodes/object-schema" "^1.2.1" + "@humanwhocodes/object-schema" "^2.0.1" debug "^4.1.1" minimatch "^3.0.5" @@ -2589,10 +2635,10 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@humanwhocodes/object-schema@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044" + integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== "@ioredis/commands@^1.1.1": version "1.2.0" @@ -2627,109 +2673,109 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jest/console@^29.6.1": - version "29.6.1" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.6.1.tgz#b48ba7b9c34b51483e6d590f46e5837f1ab5f639" - integrity sha512-Aj772AYgwTSr5w8qnyoJ0eDYvN6bMsH3ORH1ivMotrInHLKdUz6BDlaEXHdM6kODaBIkNIyQGzsMvRdOv7VG7Q== +"@jest/console@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc" + integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== dependencies: - "@jest/types" "^29.6.1" + "@jest/types" "^29.6.3" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^29.6.1" - jest-util "^29.6.1" + jest-message-util "^29.7.0" + jest-util "^29.7.0" slash "^3.0.0" -"@jest/core@^29.4.3", "@jest/core@^29.6.1": - version "29.6.1" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.6.1.tgz#fac0d9ddf320490c93356ba201451825231e95f6" - integrity sha512-CcowHypRSm5oYQ1obz1wfvkjZZ2qoQlrKKvlfPwh5jUXVU12TWr2qMeH8chLMuTFzHh5a1g2yaqlqDICbr+ukQ== +"@jest/core@^29.4.3", "@jest/core@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f" + integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== dependencies: - "@jest/console" "^29.6.1" - "@jest/reporters" "^29.6.1" - "@jest/test-result" "^29.6.1" - "@jest/transform" "^29.6.1" - "@jest/types" "^29.6.1" + "@jest/console" "^29.7.0" + "@jest/reporters" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" ci-info "^3.2.0" exit "^0.1.2" graceful-fs "^4.2.9" - jest-changed-files "^29.5.0" - jest-config "^29.6.1" - jest-haste-map "^29.6.1" - jest-message-util "^29.6.1" - jest-regex-util "^29.4.3" - jest-resolve "^29.6.1" - jest-resolve-dependencies "^29.6.1" - jest-runner "^29.6.1" - jest-runtime "^29.6.1" - jest-snapshot "^29.6.1" - jest-util "^29.6.1" - jest-validate "^29.6.1" - jest-watcher "^29.6.1" + jest-changed-files "^29.7.0" + jest-config "^29.7.0" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-resolve-dependencies "^29.7.0" + jest-runner "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" + jest-watcher "^29.7.0" micromatch "^4.0.4" - pretty-format "^29.6.1" + pretty-format "^29.7.0" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^29.4.3", "@jest/environment@^29.6.1": - version "29.6.1" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.6.1.tgz#ee358fff2f68168394b4a50f18c68278a21fe82f" - integrity sha512-RMMXx4ws+Gbvw3DfLSuo2cfQlK7IwGbpuEWXCqyYDcqYTI+9Ju3a5hDnXaxjNsa6uKh9PQF2v+qg+RLe63tz5A== +"@jest/environment@^29.4.3", "@jest/environment@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.7.0.tgz#24d61f54ff1f786f3cd4073b4b94416383baf2a7" + integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw== dependencies: - "@jest/fake-timers" "^29.6.1" - "@jest/types" "^29.6.1" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" - jest-mock "^29.6.1" + jest-mock "^29.7.0" -"@jest/expect-utils@^29.6.1": - version "29.6.1" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.6.1.tgz#ab83b27a15cdd203fe5f68230ea22767d5c3acc5" - integrity sha512-o319vIf5pEMx0LmzSxxkYYxo4wrRLKHq9dP1yJU7FoPTB0LfAKSz8SWD6D/6U3v/O52t9cF5t+MeJiRsfk7zMw== +"@jest/expect-utils@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6" + integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA== dependencies: - jest-get-type "^29.4.3" + jest-get-type "^29.6.3" -"@jest/expect@^29.6.1": - version "29.6.1" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.6.1.tgz#fef18265188f6a97601f1ea0a2912d81a85b4657" - integrity sha512-N5xlPrAYaRNyFgVf2s9Uyyvr795jnB6rObuPx4QFvNJz8aAjpZUDfO4bh5G/xuplMID8PrnuF1+SfSyDxhsgYg== +"@jest/expect@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2" + integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ== dependencies: - expect "^29.6.1" - jest-snapshot "^29.6.1" + expect "^29.7.0" + jest-snapshot "^29.7.0" -"@jest/fake-timers@^29.4.3", "@jest/fake-timers@^29.6.1": - version "29.6.1" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.6.1.tgz#c773efddbc61e1d2efcccac008139f621de57c69" - integrity sha512-RdgHgbXyosCDMVYmj7lLpUwXA4c69vcNzhrt69dJJdf8azUrpRh3ckFCaTPNjsEeRi27Cig0oKDGxy5j7hOgHg== +"@jest/fake-timers@^29.4.3", "@jest/fake-timers@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.7.0.tgz#fd91bf1fffb16d7d0d24a426ab1a47a49881a565" + integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ== dependencies: - "@jest/types" "^29.6.1" + "@jest/types" "^29.6.3" "@sinonjs/fake-timers" "^10.0.2" "@types/node" "*" - jest-message-util "^29.6.1" - jest-mock "^29.6.1" - jest-util "^29.6.1" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-util "^29.7.0" -"@jest/globals@^29.6.1": - version "29.6.1" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.6.1.tgz#c8a8923e05efd757308082cc22893d82b8aa138f" - integrity sha512-2VjpaGy78JY9n9370H8zGRCFbYVWwjY6RdDMhoJHa1sYfwe6XM/azGN0SjY8kk7BOZApIejQ1BFPyH7FPG0w3A== +"@jest/globals@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d" + integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ== dependencies: - "@jest/environment" "^29.6.1" - "@jest/expect" "^29.6.1" - "@jest/types" "^29.6.1" - jest-mock "^29.6.1" + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/types" "^29.6.3" + jest-mock "^29.7.0" -"@jest/reporters@^29.4.1", "@jest/reporters@^29.6.1": - version "29.6.1" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.6.1.tgz#3325a89c9ead3cf97ad93df3a427549d16179863" - integrity sha512-9zuaI9QKr9JnoZtFQlw4GREQbxgmNYXU6QuWtmuODvk5nvPUeBYapVR/VYMyi2WSx3jXTLJTJji8rN6+Cm4+FA== +"@jest/reporters@^29.4.1", "@jest/reporters@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7" + integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.6.1" - "@jest/test-result" "^29.6.1" - "@jest/transform" "^29.6.1" - "@jest/types" "^29.6.1" + "@jest/console" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" "@jridgewell/trace-mapping" "^0.3.18" "@types/node" "*" chalk "^4.0.0" @@ -2738,81 +2784,81 @@ glob "^7.1.3" graceful-fs "^4.2.9" istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^5.1.0" + istanbul-lib-instrument "^6.0.0" istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.1.3" - jest-message-util "^29.6.1" - jest-util "^29.6.1" - jest-worker "^29.6.1" + jest-message-util "^29.7.0" + jest-util "^29.7.0" + jest-worker "^29.7.0" slash "^3.0.0" string-length "^4.0.1" strip-ansi "^6.0.0" v8-to-istanbul "^9.0.1" -"@jest/schemas@^29.6.0": - version "29.6.0" - resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.0.tgz#0f4cb2c8e3dca80c135507ba5635a4fd755b0040" - integrity sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ== +"@jest/schemas@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" + integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== dependencies: "@sinclair/typebox" "^0.27.8" -"@jest/source-map@^29.6.0": - version "29.6.0" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.0.tgz#bd34a05b5737cb1a99d43e1957020ac8e5b9ddb1" - integrity sha512-oA+I2SHHQGxDCZpbrsCQSoMLb3Bz547JnM+jUr9qEbuw0vQlWZfpPS7CO9J7XiwKicEz9OFn/IYoLkkiUD7bzA== +"@jest/source-map@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4" + integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== dependencies: "@jridgewell/trace-mapping" "^0.3.18" callsites "^3.0.0" graceful-fs "^4.2.9" -"@jest/test-result@^29.4.1", "@jest/test-result@^29.6.1": - version "29.6.1" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.6.1.tgz#850e565a3f58ee8ca6ec424db00cb0f2d83c36ba" - integrity sha512-Ynr13ZRcpX6INak0TPUukU8GWRfm/vAytE3JbJNGAvINySWYdfE7dGZMbk36oVuK4CigpbhMn8eg1dixZ7ZJOw== +"@jest/test-result@^29.4.1", "@jest/test-result@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c" + integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== dependencies: - "@jest/console" "^29.6.1" - "@jest/types" "^29.6.1" + "@jest/console" "^29.7.0" + "@jest/types" "^29.6.3" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^29.6.1": - version "29.6.1" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.6.1.tgz#e3e582ee074dd24ea9687d7d1aaf05ee3a9b068e" - integrity sha512-oBkC36PCDf/wb6dWeQIhaviU0l5u6VCsXa119yqdUosYAt7/FbQU2M2UoziO3igj/HBDEgp57ONQ3fm0v9uyyg== +"@jest/test-sequencer@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce" + integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== dependencies: - "@jest/test-result" "^29.6.1" + "@jest/test-result" "^29.7.0" graceful-fs "^4.2.9" - jest-haste-map "^29.6.1" + jest-haste-map "^29.7.0" slash "^3.0.0" -"@jest/transform@^29.3.1", "@jest/transform@^29.6.1": - version "29.6.1" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.6.1.tgz#acb5606019a197cb99beda3c05404b851f441c92" - integrity sha512-URnTneIU3ZjRSaf906cvf6Hpox3hIeJXRnz3VDSw5/X93gR8ycdfSIEy19FlVx8NFmpN7fe3Gb1xF+NjXaQLWg== +"@jest/transform@^29.3.1", "@jest/transform@^29.7.0": + version "29.7.0" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c" + integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw== dependencies: "@babel/core" "^7.11.6" - "@jest/types" "^29.6.1" + "@jest/types" "^29.6.3" "@jridgewell/trace-mapping" "^0.3.18" babel-plugin-istanbul "^6.1.1" chalk "^4.0.0" convert-source-map "^2.0.0" fast-json-stable-stringify "^2.1.0" graceful-fs "^4.2.9" - jest-haste-map "^29.6.1" - jest-regex-util "^29.4.3" - jest-util "^29.6.1" + jest-haste-map "^29.7.0" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" micromatch "^4.0.4" pirates "^4.0.4" slash "^3.0.0" write-file-atomic "^4.0.2" -"@jest/types@^29.4.3", "@jest/types@^29.6.1": - version "29.6.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.1.tgz#ae79080278acff0a6af5eb49d063385aaa897bf2" - integrity sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw== +"@jest/types@^29.4.3", "@jest/types@^29.6.3": + version "29.6.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.6.3.tgz#1131f8cf634e7e84c5e77bab12f052af585fba59" + integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw== dependencies: - "@jest/schemas" "^29.6.0" + "@jest/schemas" "^29.6.3" "@types/istanbul-lib-coverage" "^2.0.0" "@types/istanbul-reports" "^3.0.0" "@types/node" "*" @@ -2828,12 +2874,7 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/resolve-uri@3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== - -"@jridgewell/resolve-uri@^3.0.3": +"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": version "3.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== @@ -2851,11 +2892,6 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/sourcemap-codec@1.4.14": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== - "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": version "1.4.15" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" @@ -2870,12 +2906,12 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.18" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" - integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== + version "0.3.20" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== dependencies: - "@jridgewell/resolve-uri" "3.1.0" - "@jridgewell/sourcemap-codec" "1.4.14" + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" "@juggle/resize-observer@^3.3.1": version "3.4.0" @@ -3777,11 +3813,6 @@ resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-16.2.0.tgz#b3c2b2668faac35bbcc6c81a4bc016347d141349" integrity sha512-c9jv4r7GnLTpnPOeF+a9yAm/3/2wwl9lMBU32i9hlY+q/Hqde4PiL95bUOLnRRL1I64DV7BFTlSZqSPgDpFXZQ== -"@nicolo-ribaudo/semver-v6@^6.3.3": - version "6.3.3" - resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/semver-v6/-/semver-v6-6.3.3.tgz#ea6d23ade78a325f7a52750aab1526b02b628c29" - integrity sha512-3Yc1fUTs69MG/uZbJlLSI3JISMn2UV2rg+1D/vROUqZyh3l6iYHCs7GMp+M40ZD7yOdDbYjJcU1oTJhrc+dGKg== - "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -3860,112 +3891,98 @@ read-package-json-fast "^3.0.0" which "^3.0.0" -"@nrwl/angular@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nrwl/angular/-/angular-16.7.4.tgz#0f348b6f77109ecbb3bab90987fb850f772e2b52" - integrity sha512-Qj6QEKounpRB6XR4YM/LN5Vq2chesw+5Xec8BMTyAzFoBYfty2EvmikOyT/cszHMVNwE3veDh6cZP7IHWxc2dg== +"@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== dependencies: - "@nx/angular" "16.7.4" + "@nx/angular" "17.0.2" tslib "^2.3.0" -"@nrwl/cypress@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nrwl/cypress/-/cypress-16.7.4.tgz#63e1d0fe0f54b67c6bc046fa43bd28859f4619de" - integrity sha512-FmpCWrBIpoS0MsrMlusSBF7Wr8N6v8nbDpo8M8Bl8a6mGZu3lLnJ1ZnhYtCzwEoK0EnEQLGv76TwagRDhjVvmA== - dependencies: - "@nx/cypress" "16.7.4" - -"@nrwl/devkit@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nrwl/devkit/-/devkit-16.7.4.tgz#c69e3ae4455447dc3a0cc5515c149692aadba940" - integrity sha512-Gt2q3cqDWzGP1woavGIo4bl8g9YaXic/Xfsl7qPq0LHJedLj49p1vXetB0wawkavSE2MTyo7yDh6YDK/38XoLw== - dependencies: - "@nx/devkit" "16.7.4" - -"@nrwl/eslint-plugin-nx@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nrwl/eslint-plugin-nx/-/eslint-plugin-nx-16.7.4.tgz#2719debd24db6829908e63d8f22527122f289034" - integrity sha512-/qN/Gn0f+7fxmxLO/mSacous3fkBXCeauKKIeJQl6uSi1aVhV/u4BddNK+d2zn5WNN/xBI+xZThM+DYJMsiXjA== +"@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== dependencies: - "@nx/eslint-plugin" "16.7.4" + "@nx/cypress" "17.0.2" -"@nrwl/jest@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nrwl/jest/-/jest-16.7.4.tgz#56ed128605b4ba6e46d054b26b2380c2c406b2da" - integrity sha512-1DNBEUzYHK+rfqt6ewshYnVJaW59UqaQhMc3vpu5gI8hUbBnjun8CUAh3CHcZdxDVBG0akTAN7+JkB7UqQD2dg== +"@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== dependencies: - "@nx/jest" "16.7.4" + "@nx/devkit" "17.0.2" -"@nrwl/js@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nrwl/js/-/js-16.7.4.tgz#2977a79b94b8c73b0a63a69eb07e8aa57cc2a979" - integrity sha512-7mQnzhUUSpMOnSxM10Q2XOWWEj+GdtV7HVt1s+LDvRVXSFNLWBOucjfBunbttYGO36aKk+ZPCU53SvwH2aL5eA== +"@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== dependencies: - "@nx/js" "16.7.4" + "@nx/eslint-plugin" "17.0.2" -"@nrwl/linter@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nrwl/linter/-/linter-16.7.4.tgz#152c1d25109c7196c579fbd8c03731d75c47e7f7" - integrity sha512-XBxFn/2nbJUPAfAJ6y7rDlEZIpkN2cZ4z1C0+QvDJkIT24YhHUIdSvYBUav0TX17xneH7+NQhY2EHelgXFf4yw== +"@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== dependencies: - "@nx/linter" "16.7.4" + "@nx/jest" "17.0.2" -"@nrwl/nest@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nrwl/nest/-/nest-16.7.4.tgz#6f35bb8b92d1b7bcafa2fe8ce92612a55bf92970" - integrity sha512-ax/sSCM5SFfAZ2t0nLuAqP9U4+03uPw5IqdB6zHISEcSkJqQw+mcR3RiQiyzdNsJlCDA8mWKP7N8niLS7yuTPg== +"@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== dependencies: - "@nx/nest" "16.7.4" + "@nx/js" "17.0.2" -"@nrwl/node@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nrwl/node/-/node-16.7.4.tgz#e34e7f0d58ac1cf7e8cefdfa9b61ef5afaa2aa39" - integrity sha512-GJW3j27LX36AYcBMhkQASTTfVnIz5L3oOxNSMGb6xzL9xsoiiQU5Fo/Yz4jI9iw7hUaht3EgzbATYbJhq4wETA== +"@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== dependencies: - "@nx/node" "16.7.4" + "@nx/nest" "17.0.2" -"@nrwl/nx-cloud@16.3.0": - version "16.3.0" - resolved "https://registry.yarnpkg.com/@nrwl/nx-cloud/-/nx-cloud-16.3.0.tgz#0f1d563200af5bb6ce51a8408d698774d5ccdbbd" - integrity sha512-nJrGsVufhY74KcP7kM7BqFOGAoO5OEF6+wfiM295DgmEG9c1yW+x5QiQaC42K9SWYn/eKQa1X7466ZA5lynXoQ== +"@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== dependencies: - nx-cloud "16.3.0" + "@nx/node" "17.0.2" -"@nrwl/storybook@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nrwl/storybook/-/storybook-16.7.4.tgz#146298468a92eadf2898c84b9000cef056f86ef7" - integrity sha512-qRqDW8ILyvgTwd55dw1hRjaz9CAz3KYvmkQuZvMIQ4HTTodgx2ZOznG8ujvO154m8drWowurBIOLdXDq/BPUqg== +"@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== dependencies: - "@nx/storybook" "16.7.4" + "@nx/storybook" "17.0.2" -"@nrwl/tao@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nrwl/tao/-/tao-16.7.4.tgz#2b2e2cc26ce6c50884da63e69ba8ccf0fcbb9455" - integrity sha512-hH03oF+yVmaf19UZfyLDSuVEh0KasU5YfYezuNsdRkXNdTU/WmpDrk4qoo0j6fVoMPrqbbPOn1YMRtulP2WyYA== +"@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== dependencies: - nx "16.7.4" + nx "17.0.2" tslib "^2.3.0" -"@nrwl/web@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nrwl/web/-/web-16.7.4.tgz#5fca83ad10abd7254ef2db0b4b60810fc45b81a3" - integrity sha512-HB3dYp2gJTl/bw5jn4gIcoyBGU2rfJ3OrIyBRjlUMRwgFayAadweyqfIFirHSPc+S7E6NNKhTRxifGJOrwyYTQ== +"@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== dependencies: - "@nx/web" "16.7.4" + "@nx/web" "17.0.2" -"@nrwl/webpack@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nrwl/webpack/-/webpack-16.7.4.tgz#8cb19b11789d665924e0c311a8f4c3f205b94f63" - integrity sha512-AFplOBmoq+IehP9XML1loEHJQLhPIqibpyOLmt2kZbne0BVKrLcLxmIztqbVHWfqJz9A1QO6DgxTcHdFF8447A== +"@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== dependencies: - "@nx/webpack" "16.7.4" + "@nx/webpack" "17.0.2" -"@nrwl/workspace@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nrwl/workspace/-/workspace-16.7.4.tgz#fcac4467e78477125dcb771e007b7a6bfd8411ea" - integrity sha512-i2mMSzF/qfsFbTD0DBMSRTNKSahJZoJCnDrTSgwZeTVfLoKYOO5QaiAqB0zKh/5qTsBCt/rKtAlfTd5uGpBzPQ== +"@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== dependencies: - "@nx/workspace" "16.7.4" + "@nx/workspace" "17.0.2" "@nuxtjs/opencollective@0.3.2": version "0.3.2" @@ -3976,19 +3993,20 @@ consola "^2.15.0" node-fetch "^2.6.1" -"@nx/angular@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nx/angular/-/angular-16.7.4.tgz#53d645c57ff71039e6deec17316be0423567966c" - integrity sha512-Avo8NdJKnuWmBRPwO/F7pg6wpW83HYnrKKL/QsAaBlp3jzi+u4UrVwZvh8OSFwQvdAYk7+qzfQe2163L76yDkg== - dependencies: - "@nrwl/angular" "16.7.4" - "@nx/cypress" "16.7.4" - "@nx/devkit" "16.7.4" - "@nx/jest" "16.7.4" - "@nx/js" "16.7.4" - "@nx/linter" "16.7.4" - "@nx/webpack" "16.7.4" - "@nx/workspace" "16.7.4" +"@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" "@phenomnomnominal/tsquery" "~5.0.1" "@typescript-eslint/type-utils" "^5.36.1" chalk "^4.1.0" @@ -4002,27 +4020,26 @@ webpack "^5.80.0" webpack-merge "^5.8.0" -"@nx/cypress@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nx/cypress/-/cypress-16.7.4.tgz#0b33d9c12e2a6b06f2ce5cf60e911de612a81a14" - integrity sha512-rqVnTZbM8rr7K8p+O51uMBko9pYlFPpGqkFQbGOpzFjhoCXW0d4MqYMd03Iele4HjBLCNqVjgmUg3TZacO9vTQ== +"@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== dependencies: - "@nrwl/cypress" "16.7.4" - "@nx/devkit" "16.7.4" - "@nx/js" "16.7.4" - "@nx/linter" "16.7.4" + "@nrwl/cypress" "17.0.2" + "@nx/devkit" "17.0.2" + "@nx/eslint" "17.0.2" + "@nx/js" "17.0.2" "@phenomnomnominal/tsquery" "~5.0.1" detect-port "^1.5.1" - dotenv "~16.3.1" semver "7.5.3" tslib "^2.3.0" -"@nx/devkit@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nx/devkit/-/devkit-16.7.4.tgz#c03c308bc190a18642e0dc0c183323662c38c426" - integrity sha512-SLito+/TAeDYR+d7IIpp/sBJm41WM+nIevILv0TSQW4Pq0ylUy1nUvV8Pe7l1ohZccDrQuebMUWPwGO0hv8SeQ== +"@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== dependencies: - "@nrwl/devkit" "16.7.4" + "@nrwl/devkit" "17.0.2" ejs "^3.1.7" enquirer "~2.3.6" ignore "^5.0.4" @@ -4030,14 +4047,14 @@ tmp "~0.2.1" tslib "^2.3.0" -"@nx/eslint-plugin@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nx/eslint-plugin/-/eslint-plugin-16.7.4.tgz#09c04ff657955959f061724f8018dcfcd64677a6" - integrity sha512-PjpXeW/Tr/y/PJSEaB9X2xNaqW6mYXzcFSAXQrlxuDNdVEtrieSj+OiAGKfaYjkcN1d/X9dupV6b/L0V+HcSlw== +"@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== dependencies: - "@nrwl/eslint-plugin-nx" "16.7.4" - "@nx/devkit" "16.7.4" - "@nx/js" "16.7.4" + "@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" chalk "^4.1.0" @@ -4046,19 +4063,29 @@ semver "7.5.3" tslib "^2.3.0" -"@nx/jest@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nx/jest/-/jest-16.7.4.tgz#4df84dc7dc99645ac0b2ad256ab3997474765a69" - integrity sha512-/96+Pf9duar1ynjF+rWw+B5UJbM8ldLlHoGAkH8755Yq20INrwr6XEqQAu/HdosBlR7Ytbg3YnFPwb3lTOuLEw== +"@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== + dependencies: + "@nx/devkit" "17.0.2" + "@nx/js" "17.0.2" + "@nx/linter" "17.0.2" + 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== dependencies: "@jest/reporters" "^29.4.1" "@jest/test-result" "^29.4.1" - "@nrwl/jest" "16.7.4" - "@nx/devkit" "16.7.4" - "@nx/js" "16.7.4" + "@nrwl/jest" "17.0.2" + "@nx/devkit" "17.0.2" + "@nx/js" "17.0.2" "@phenomnomnominal/tsquery" "~5.0.1" chalk "^4.1.0" - dotenv "~16.3.1" identity-obj-proxy "3.0.0" jest-config "^29.4.1" jest-resolve "^29.4.1" @@ -4066,180 +4093,168 @@ resolve.exports "1.1.0" tslib "^2.3.0" -"@nx/js@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nx/js/-/js-16.7.4.tgz#6870c072503b0d42a2bca05327818a4b365a6658" - integrity sha512-aJnpJkgGgEt1IjsV/ywZRLZ4B5/jDkTtdVu+Wf+6UrtlWji7sq2PC96NSuKeEHjq3oAvNsBc8+u2rjB/9a+8jQ== +"@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== dependencies: "@babel/core" "^7.22.9" - "@babel/plugin-proposal-class-properties" "^7.18.6" "@babel/plugin-proposal-decorators" "^7.22.7" "@babel/plugin-transform-runtime" "^7.22.9" "@babel/preset-env" "^7.22.9" "@babel/preset-typescript" "^7.22.5" "@babel/runtime" "^7.22.6" - "@nrwl/js" "16.7.4" - "@nx/devkit" "16.7.4" - "@nx/workspace" "16.7.4" + "@nrwl/js" "17.0.2" + "@nx/devkit" "17.0.2" + "@nx/workspace" "17.0.2" "@phenomnomnominal/tsquery" "~5.0.1" babel-plugin-const-enum "^1.0.1" babel-plugin-macros "^2.8.0" babel-plugin-transform-typescript-metadata "^0.3.1" chalk "^4.1.0" + columnify "^1.6.0" detect-port "^1.5.1" fast-glob "3.2.7" fs-extra "^11.1.0" ignore "^5.0.4" js-tokens "^4.0.0" minimatch "3.0.5" + npm-package-arg "11.0.1" + npm-run-path "^4.0.1" + ora "5.3.0" semver "7.5.3" source-map-support "0.5.19" ts-node "10.9.1" tsconfig-paths "^4.1.2" tslib "^2.3.0" -"@nx/linter@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nx/linter/-/linter-16.7.4.tgz#a571f4b66428d106d9e7e95c0be2a142a0aaddea" - integrity sha512-AGuPfpDIk44fBIwcloo2Hb0+ROmoD69n6ypzdpZvRrBS6KHROGjT3SoWKituyj75bSgtWndNC1ywBhcVnRfamg== +"@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== dependencies: - "@nrwl/linter" "16.7.4" - "@nx/devkit" "16.7.4" - "@nx/js" "16.7.4" - "@phenomnomnominal/tsquery" "~5.0.1" - tmp "~0.2.1" - tslib "^2.3.0" + "@nx/eslint" "17.0.2" -"@nx/nest@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nx/nest/-/nest-16.7.4.tgz#b24ff76357d97e54b76c8dbc72c3171300c72c5b" - integrity sha512-ccxVD6W08cuRWSaruiDsbJXZ3CFgJih10XINNgBUh6g0AYtOFtPjn1s7RVbRyR1i4urNsTSp2oq7wisU5sRV0Q== +"@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== dependencies: "@nestjs/schematics" "^9.1.0" - "@nrwl/nest" "16.7.4" - "@nx/devkit" "16.7.4" - "@nx/js" "16.7.4" - "@nx/linter" "16.7.4" - "@nx/node" "16.7.4" + "@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" "@phenomnomnominal/tsquery" "~5.0.1" - enquirer "~2.3.6" - semver "7.5.3" tslib "^2.3.0" -"@nx/node@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nx/node/-/node-16.7.4.tgz#c242063fa1f0dd9981175bd14427cf383421d1c0" - integrity sha512-lO8y58y0qlOmXj/rmRQe/JaUic2vTUa8irT9ByWkfwpp2iLmIw5/qrf3TiC5kqu4LsOuPkZiiLRQyA01LhWwRw== - dependencies: - "@nrwl/node" "16.7.4" - "@nx/devkit" "16.7.4" - "@nx/jest" "16.7.4" - "@nx/js" "16.7.4" - "@nx/linter" "16.7.4" - "@nx/workspace" "16.7.4" +"@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== + 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" tslib "^2.3.0" -"@nx/nx-darwin-arm64@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nx/nx-darwin-arm64/-/nx-darwin-arm64-16.7.4.tgz#1a797805850444cc6c0aa56668bf6f832093d641" - integrity sha512-pRNjxn6KlcR6iGkU1j/1pzcogwXFv97pYiZaibpF7UV0vfdEUA3EETpDcs+hbNAcKMvVtn/TgN857/5LQ/lGUg== - -"@nx/nx-darwin-x64@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nx/nx-darwin-x64/-/nx-darwin-x64-16.7.4.tgz#53f681c86d9d8e8bcebfc8ba54dd7b2ec9f71207" - integrity sha512-GANXeabAAWRoF85WDla2ZPxtr8vnqvXjwyCIhRCda8hlKiVCpM98GemucN25z97G5H6MgyV9Dd9t9jrr2Fn0Og== - -"@nx/nx-freebsd-x64@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nx/nx-freebsd-x64/-/nx-freebsd-x64-16.7.4.tgz#df88ff9b6ed0b51723d76d711b9467a1a4726f00" - integrity sha512-zmBBDYjPaHhIHx1YASUJJIy+oz7mCrj5f0f3kOzfMraQOjkQZ0xYgNNUzBqmnYu1855yiphu94MkAMYJnbk0jw== - -"@nx/nx-linux-arm-gnueabihf@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-16.7.4.tgz#2cfac69e65237245560326039bb319691147daed" - integrity sha512-d3Cmz/vdtoSasTUANoh4ZYLJESNA3+PCP/HnXNqmrr6AEHo+T8DcI+qsamO3rmYUSFxTMAeMyoihZMU8OKGZ1A== - -"@nx/nx-linux-arm64-gnu@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-16.7.4.tgz#492fb66b804aa6154cd44ded6eaaf6cfcb32ea9f" - integrity sha512-W1u4O78lTHCwvUP0vakeKWFXeSZ13nYzbd6FARICnImY2my8vz41rLm6aU9TYWaiOGEGL2xKpHKSgiNwbLjhFw== - -"@nx/nx-linux-arm64-musl@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-16.7.4.tgz#ad32f35f05067e918eff9a97d8720f3923c034cb" - integrity sha512-Dc8IQFvhfH/Z3GmhBBNNxGd2Ehw6Y5SePEgJj1c2JyPdoVtc2OjGzkUaZkT4z5z77VKtju6Yi10T6Enps+y+kw== - -"@nx/nx-linux-x64-gnu@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-16.7.4.tgz#40271f7d21ef3ba0676c046b73c84cf9eb1ed94a" - integrity sha512-4B58C/pXeuovSznBOeicsxNieBApbGMoi2du8jR6Is1gYFPv4l8fFHQHHGAa1l5XJC5JuGJqFywS4elInWprNw== - -"@nx/nx-linux-x64-musl@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-16.7.4.tgz#8bd13692a0922df51c6305df93d69a3c66b4b716" - integrity sha512-spqqvEdGSSeV2ByJHkex5m8MRQfM6lQlnon25XgVBdPR47lKMWSikUsaWCiE7bVAFU9BFyWY2L4HfZ4+LiNY7A== - -"@nx/nx-win32-arm64-msvc@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-16.7.4.tgz#dfbe5b28c62c1c1ceadad12e79029f76e450d855" - integrity sha512-etNnbuCcSqAYOeDcS6si6qw0WR/IS87ovTzLS17ETKpdHcHN5nM4l02CQyupKiD58ShxrXHxXmvgBfbXxoN5Ew== - -"@nx/nx-win32-x64-msvc@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-16.7.4.tgz#e4b270107e02e73451d7c5dc7c4237fffe18aa75" - integrity sha512-y6pugK6ino1wvo2FbgtXG2cVbEm3LzJwOSBKBRBXSWhUgjP7T92uGfOt6KVQKpaqDvS9lA9TO/2DcygcLHXh7A== - -"@nx/storybook@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nx/storybook/-/storybook-16.7.4.tgz#9f7dce572b03b7e7a715d3a6c412339a16b16e32" - integrity sha512-tXR3iPc8EXqQzxG33EcKZIICYj9oXTIr/C8aW/hwDc51AAz4HAjXT0E9zzus+FynLeV4Ser58BfzBkEqycVjIw== - dependencies: - "@nrwl/storybook" "16.7.4" - "@nx/cypress" "16.7.4" - "@nx/devkit" "16.7.4" - "@nx/js" "16.7.4" - "@nx/linter" "16.7.4" - "@nx/workspace" "16.7.4" +"@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" "@phenomnomnominal/tsquery" "~5.0.1" - dotenv "~16.3.1" semver "7.5.3" tslib "^2.3.0" -"@nx/web@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nx/web/-/web-16.7.4.tgz#09f6233e7ff81b6ea7b51c90565a0b475c917653" - integrity sha512-keR+jZES/H9MZBOIvN3zLyOw7qP05cOs14NNHc7tkj5jOvifQxslLQRdx+h62tJigmS6TZY43mlJfVCWvYwdXg== +"@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== dependencies: - "@nrwl/web" "16.7.4" - "@nx/devkit" "16.7.4" - "@nx/js" "16.7.4" + "@nrwl/web" "17.0.2" + "@nx/devkit" "17.0.2" + "@nx/js" "17.0.2" chalk "^4.1.0" - chokidar "^3.5.1" detect-port "^1.5.1" http-server "^14.1.0" - ignore "^5.0.4" tslib "^2.3.0" -"@nx/webpack@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nx/webpack/-/webpack-16.7.4.tgz#7c9ceb1ab480db94cf9ceb07e3d5b2fdb130d56e" - integrity sha512-fAPuH14BO+Hzjn4Y6zJNn8b05lBDmqM0oy/yi3U3FHGoc9S1cmaLiajBMlle6nWlQjbd7S3R6Dk5xwr76Ii8yw== +"@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== dependencies: "@babel/core" "^7.22.9" - "@nrwl/webpack" "16.7.4" - "@nx/devkit" "16.7.4" - "@nx/js" "16.7.4" + "@nrwl/webpack" "17.0.2" + "@nx/devkit" "17.0.2" + "@nx/js" "17.0.2" autoprefixer "^10.4.9" babel-loader "^9.1.2" browserslist "^4.21.4" chalk "^4.1.0" - chokidar "^3.5.1" copy-webpack-plugin "^10.2.4" css-loader "^6.4.0" css-minimizer-webpack-plugin "^5.0.0" - dotenv "~16.3.1" fork-ts-checker-webpack-plugin "7.2.13" - ignore "^5.0.4" less "4.1.3" less-loader "11.1.0" license-webpack-plugin "^4.0.2" @@ -4265,76 +4280,67 @@ webpack-node-externals "^3.0.0" webpack-subresource-integrity "^5.1.0" -"@nx/workspace@16.7.4": - version "16.7.4" - resolved "https://registry.yarnpkg.com/@nx/workspace/-/workspace-16.7.4.tgz#7c002c548c921c1b0f63a338a5ec80f051f59b5b" - integrity sha512-mbefKyHg3avgK1jN6GChCDz2wc1qvi22BOUd/4WO+o88sShAA2h0gg8SMvkzLTNvGcNUWok66dInBfAJHvUOnw== +"@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== dependencies: - "@nrwl/workspace" "16.7.4" - "@nx/devkit" "16.7.4" + "@nrwl/workspace" "17.0.2" + "@nx/devkit" "17.0.2" chalk "^4.1.0" - ignore "^5.0.4" - nx "16.7.4" - rxjs "^7.8.0" + enquirer "~2.3.6" + nx "17.0.2" tslib "^2.3.0" yargs-parser "21.1.1" -"@parcel/watcher@2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.0.4.tgz#f300fef4cc38008ff4b8c29d92588eced3ce014b" - integrity sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg== - dependencies: - node-addon-api "^3.2.1" - node-gyp-build "^4.3.0" - "@peculiar/asn1-android@^2.3.6": - version "2.3.6" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-android/-/asn1-android-2.3.6.tgz#20363c23bc5b9a91f7ffd80d7c3842dccff8c20b" - integrity sha512-zkYh4DsiRhiNfg6tWaUuRc+huwlb9XJbmeZLrjTz9v76UK1Ehq3EnfJFED6P3sdznW/nqWe46LoM9JrqxcD58g== + version "2.3.10" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-android/-/asn1-android-2.3.10.tgz#a2dde6227fa1ddea33d8ae7835768674e7a0baa6" + integrity sha512-z9Rx9cFJv7UUablZISe7uksNbFJCq13hO0yEAOoIpAymALTLlvUOSLnGiQS7okPaM5dP42oTLhezH6XDXRXjGw== dependencies: - "@peculiar/asn1-schema" "^2.3.6" + "@peculiar/asn1-schema" "^2.3.8" asn1js "^3.0.5" - tslib "^2.4.0" + tslib "^2.6.2" "@peculiar/asn1-ecc@^2.3.6": - version "2.3.6" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-ecc/-/asn1-ecc-2.3.6.tgz#f155f33f5c61df463d9b33b911d25578a19694b7" - integrity sha512-Hu1xzMJQWv8/GvzOiinaE6XiD1/kEhq2C/V89UEoWeZ2fLUcGNIvMxOr/pMyL0OmpRWj/mhCTXOZp4PP+a0aTg== + version "2.3.8" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-ecc/-/asn1-ecc-2.3.8.tgz#6b1a18f64f221ae862c1038bb125fbf4342918a0" + integrity sha512-Ah/Q15y3A/CtxbPibiLM/LKcMbnLTdUdLHUgdpB5f60sSvGkXzxJCu5ezGTFHogZXWNX3KSmYqilCrfdmBc6pQ== dependencies: - "@peculiar/asn1-schema" "^2.3.6" - "@peculiar/asn1-x509" "^2.3.6" + "@peculiar/asn1-schema" "^2.3.8" + "@peculiar/asn1-x509" "^2.3.8" asn1js "^3.0.5" - tslib "^2.4.0" + tslib "^2.6.2" "@peculiar/asn1-rsa@^2.3.6": - version "2.3.6" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-rsa/-/asn1-rsa-2.3.6.tgz#e2af2c52a914c60f33853a86a48905ec555b29c2" - integrity sha512-DswjJyAXZnvESuImGNTvbNKvh1XApBVqU+r3UmrFFTAI23gv62byl0f5OFKWTNhCf66WQrd3sklpsCZc/4+jwA== + version "2.3.8" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-rsa/-/asn1-rsa-2.3.8.tgz#6a6a0eaafc0aded9a44b679b522cc2417b09a3ba" + integrity sha512-ES/RVEHu8VMYXgrg3gjb1m/XG0KJWnV4qyZZ7mAg7rrF3VTmRbLxO8mk+uy0Hme7geSMebp+Wvi2U6RLLEs12Q== dependencies: - "@peculiar/asn1-schema" "^2.3.6" - "@peculiar/asn1-x509" "^2.3.6" + "@peculiar/asn1-schema" "^2.3.8" + "@peculiar/asn1-x509" "^2.3.8" asn1js "^3.0.5" - tslib "^2.4.0" + tslib "^2.6.2" -"@peculiar/asn1-schema@^2.3.6": - version "2.3.6" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.3.6.tgz#3dd3c2ade7f702a9a94dfb395c192f5fa5d6b922" - integrity sha512-izNRxPoaeJeg/AyH8hER6s+H7p4itk+03QCa4sbxI3lNdseQYCuxzgsuNK8bTXChtLTjpJz6NmXKA73qLa3rCA== +"@peculiar/asn1-schema@^2.3.6", "@peculiar/asn1-schema@^2.3.8": + version "2.3.8" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-schema/-/asn1-schema-2.3.8.tgz#04b38832a814e25731232dd5be883460a156da3b" + integrity sha512-ULB1XqHKx1WBU/tTFIA+uARuRoBVZ4pNdOA878RDrRbBfBGcSzi5HBkdScC6ZbHn8z7L8gmKCgPC1LHRrP46tA== dependencies: asn1js "^3.0.5" - pvtsutils "^1.3.2" - tslib "^2.4.0" + pvtsutils "^1.3.5" + tslib "^2.6.2" -"@peculiar/asn1-x509@^2.3.6": - version "2.3.6" - resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509/-/asn1-x509-2.3.6.tgz#e50154a460cdf43da8a41b23ee807a53e0036af0" - integrity sha512-dRwX31R1lcbIdzbztiMvLNTDoGptxdV7HocNx87LfKU0fEWh7fTWJjx4oV+glETSy6heF/hJHB2J4RGB3vVSYg== +"@peculiar/asn1-x509@^2.3.6", "@peculiar/asn1-x509@^2.3.8": + version "2.3.8" + resolved "https://registry.yarnpkg.com/@peculiar/asn1-x509/-/asn1-x509-2.3.8.tgz#865896e2b849cc3c55497ca685040ef889d357a3" + integrity sha512-voKxGfDU1c6r9mKiN5ZUsZWh3Dy1BABvTM3cimf0tztNwyMJPhiXY94eRTgsMQe6ViLfT6EoXxkWVzcm3mFAFw== dependencies: - "@peculiar/asn1-schema" "^2.3.6" + "@peculiar/asn1-schema" "^2.3.8" asn1js "^3.0.5" - ipaddr.js "^2.0.1" - pvtsutils "^1.3.2" - tslib "^2.4.0" + ipaddr.js "^2.1.0" + pvtsutils "^1.3.5" + tslib "^2.6.2" "@phenomnomnominal/tsquery@~5.0.1": version "5.0.1" @@ -4672,25 +4678,41 @@ jsonc-parser "3.2.0" "@schematics/angular@^16.0.0-next.6": - version "16.1.8" - resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-16.1.8.tgz#74b763a01578f4a95f29603f2bf06908dd6ef429" - integrity sha512-gTHy1A/E9BCr0sj3VCr6eBYkgVkO96QWiZcFumedGnvstvp5wiCoIoJPLLfYaxVt1vt08xmnmS3OZ3r0qCLdpA== + version "16.2.8" + resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-16.2.8.tgz#d4c236767e89c536c2c15951394cac20f07bfc1f" + integrity sha512-yxfxJ2IMRIt+dQcqyJR30qd/osb5NwRsi9US3gFIHP1jfjOAs1Nk8ENNd5ycYV+yykCa78KWhmbOw4G1zpR56Q== dependencies: - "@angular-devkit/core" "16.1.8" - "@angular-devkit/schematics" "16.1.8" + "@angular-devkit/core" "16.2.8" + "@angular-devkit/schematics" "16.2.8" jsonc-parser "3.2.0" -"@sigstore/protobuf-specs@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@sigstore/protobuf-specs/-/protobuf-specs-0.1.0.tgz#957cb64ea2f5ce527cc9cf02a096baeb0d2b99b4" - integrity sha512-a31EnjuIDSX8IXBUib3cYLDRlPMU36AWX4xS8ysLaNu4ZzUesDiPt83pgrW2X1YLMe5L2HbDyaKK5BrL4cNKaQ== +"@sigstore/bundle@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@sigstore/bundle/-/bundle-1.1.0.tgz#17f8d813b09348b16eeed66a8cf1c3d6bd3d04f1" + integrity sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog== + dependencies: + "@sigstore/protobuf-specs" "^0.2.0" -"@sigstore/tuf@^1.0.1": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@sigstore/tuf/-/tuf-1.0.2.tgz#acbb2c8399fb03aca0c90fa1dc1934bda4160623" - integrity sha512-vjwcYePJzM01Ha6oWWZ9gNcdIgnzyFxfqfWzph483DPJTH8Tb7f7bQRRll3CYVkyH56j0AgcPAcl6Vg95DPF+Q== +"@sigstore/protobuf-specs@^0.2.0": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz#be9ef4f3c38052c43bd399d3f792c97ff9e2277b" + integrity sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A== + +"@sigstore/sign@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@sigstore/sign/-/sign-1.0.0.tgz#6b08ebc2f6c92aa5acb07a49784cb6738796f7b4" + integrity sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA== dependencies: - "@sigstore/protobuf-specs" "^0.1.0" + "@sigstore/bundle" "^1.1.0" + "@sigstore/protobuf-specs" "^0.2.0" + make-fetch-happen "^11.0.1" + +"@sigstore/tuf@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@sigstore/tuf/-/tuf-1.0.3.tgz#2a65986772ede996485728f027b0514c0b70b160" + integrity sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg== + dependencies: + "@sigstore/protobuf-specs" "^0.2.0" tuf-js "^1.1.7" "@simplewebauthn/browser@8.3.1": @@ -4715,11 +4737,16 @@ cbor-x "^1.5.2" cross-fetch "^4.0.0" -"@simplewebauthn/typescript-types@8.0.0", "@simplewebauthn/typescript-types@^8.0.0": +"@simplewebauthn/typescript-types@8.0.0": version "8.0.0" resolved "https://registry.yarnpkg.com/@simplewebauthn/typescript-types/-/typescript-types-8.0.0.tgz#1698a7228aba880c5c1deba1f13a4f9fd8851cb3" integrity sha512-d7Izb2H+LZJteXMkS8DmpAarD6mZdpIOu/av/yH4/u/3Pd6DKFLyBM3j8BMmUvUqpzvJvHARNrRfQYto58mtTQ== +"@simplewebauthn/typescript-types@^8.0.0": + version "8.3.3" + resolved "https://registry.yarnpkg.com/@simplewebauthn/typescript-types/-/typescript-types-8.3.3.tgz#4292656f4fae6c9e9c25e5b94a60fa038a7d11cc" + integrity sha512-YLfmT+HzzUuRtBPp93XgKzQPrFJ1F6f1vl7ltfmm6R9d2SZfr8E15B5CC7hkCwSTioJDCaEw4p3NZt3+nubaxA== + "@sinclair/typebox@^0.27.8": version "0.27.8" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" @@ -4749,199 +4776,190 @@ resolved "https://registry.yarnpkg.com/@stencil/core/-/core-2.22.3.tgz#83987e20bba855c450f6d6780e3a20192603f13f" integrity sha512-kmVA0M/HojwsfkeHsifvHVIYe4l5tin7J5+DLgtl8h6WWfiMClND5K3ifCXXI2ETDNKiEk21p6jql3Fx9o2rng== -"@storybook/addon-actions@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-7.3.2.tgz#36b8e15a851a12a6fff543d9785307ae02934a8f" - integrity sha512-TsTOHGmwBHRsWS9kaG/bu6haP2dMeiETeGwOgfB5qmukodenXlmi1RujtUdJCNwW3APa0utEFYFKtZVEu9f7WQ== +"@storybook/addon-actions@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-7.5.1.tgz#5d3591f0c63e16cca90a5faddaf05169dbf64f94" + integrity sha512-GieD3ru6EslKvwol1cE4lvszQCLB/AkQdnLofnqy1nnYso+hRxmPAw9/O+pWfpUBFdjXsQ7GX09+wEUpOJzepw== dependencies: - "@storybook/client-logger" "7.3.2" - "@storybook/components" "7.3.2" - "@storybook/core-events" "7.3.2" + "@storybook/client-logger" "7.5.1" + "@storybook/components" "7.5.1" + "@storybook/core-events" "7.5.1" "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.3.2" - "@storybook/preview-api" "7.3.2" - "@storybook/theming" "7.3.2" - "@storybook/types" "7.3.2" + "@storybook/manager-api" "7.5.1" + "@storybook/preview-api" "7.5.1" + "@storybook/theming" "7.5.1" + "@storybook/types" "7.5.1" dequal "^2.0.2" lodash "^4.17.21" polished "^4.2.2" prop-types "^15.7.2" react-inspector "^6.0.0" - telejson "^7.0.3" + telejson "^7.2.0" ts-dedent "^2.0.0" uuid "^9.0.0" -"@storybook/addon-backgrounds@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/addon-backgrounds/-/addon-backgrounds-7.3.2.tgz#e2361b162c5aac1e71ee45b8c8607d3e8fe613be" - integrity sha512-tcQSt6mjAR1h1XiMFlg9OvpAwvBCjFrtpr9qnVaOZD15EIu/TRoumkJOVA7J5sWuQ6kGJXx1t8FfhQfAqvJ9iw== +"@storybook/addon-backgrounds@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/addon-backgrounds/-/addon-backgrounds-7.5.1.tgz#0af99c6217e8e406103b4f1f469c05adf41f1257" + integrity sha512-XZoyJw/WoUlVvQHPTbSAZjKy2SEUjaSmAWgcRync25vp+q0obthjx6UnZHEUuH8Ud07HA3FYzlFtMicH5y/OIQ== dependencies: - "@storybook/client-logger" "7.3.2" - "@storybook/components" "7.3.2" - "@storybook/core-events" "7.3.2" + "@storybook/client-logger" "7.5.1" + "@storybook/components" "7.5.1" + "@storybook/core-events" "7.5.1" "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.3.2" - "@storybook/preview-api" "7.3.2" - "@storybook/theming" "7.3.2" - "@storybook/types" "7.3.2" + "@storybook/manager-api" "7.5.1" + "@storybook/preview-api" "7.5.1" + "@storybook/theming" "7.5.1" + "@storybook/types" "7.5.1" memoizerific "^1.11.3" ts-dedent "^2.0.0" -"@storybook/addon-controls@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/addon-controls/-/addon-controls-7.3.2.tgz#4a8cf72cbbda9cc1fa0327652bfad1874e407e9c" - integrity sha512-n9ZoxlV8c9VLNfpFY1HpcRxjUFmHPmcFnW0UzFfGknIArPKFxzw9S/zCJ7CSH9Mf7+NJtYAUzCXlSU/YzT1eZQ== - dependencies: - "@storybook/blocks" "7.3.2" - "@storybook/client-logger" "7.3.2" - "@storybook/components" "7.3.2" - "@storybook/core-common" "7.3.2" - "@storybook/core-events" "7.3.2" - "@storybook/manager-api" "7.3.2" - "@storybook/node-logger" "7.3.2" - "@storybook/preview-api" "7.3.2" - "@storybook/theming" "7.3.2" - "@storybook/types" "7.3.2" +"@storybook/addon-controls@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/addon-controls/-/addon-controls-7.5.1.tgz#606443cf792d98e8b2d61c94e5ffb359b253c119" + integrity sha512-Xag1e7TZo04LjUenfobkShpKMxTtwa4xM4bXQA8LjaAGZQ7jipbQ4PE73a17K59S2vqq89VAhkuMJWiyaOFqpw== + dependencies: + "@storybook/blocks" "7.5.1" + "@storybook/client-logger" "7.5.1" + "@storybook/components" "7.5.1" + "@storybook/core-common" "7.5.1" + "@storybook/core-events" "7.5.1" + "@storybook/manager-api" "7.5.1" + "@storybook/node-logger" "7.5.1" + "@storybook/preview-api" "7.5.1" + "@storybook/theming" "7.5.1" + "@storybook/types" "7.5.1" lodash "^4.17.21" ts-dedent "^2.0.0" -"@storybook/addon-docs@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-7.3.2.tgz#170ffa8843cd0eb59e2df0f25f3abadc0ded780a" - integrity sha512-g4B+gM7xzRvUeiUcijPyxwDG/LlgHrfQx1chzY7oiFIImGXyewZ+CtGCjhrSdJGhXSj/69oqoz26RQ1VhSlrXg== +"@storybook/addon-docs@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-7.5.1.tgz#e62765c96ff3d2d97414b69973842fbe93ba9e00" + integrity sha512-+wE67oWIhGK9+kv2sxoY2KDXm3v62RfEgxiksdhtffTP/joOK3p88S0lO+8g0G4xfNGUnBhPtzGMuUxWwaH2Pw== dependencies: "@jest/transform" "^29.3.1" "@mdx-js/react" "^2.1.5" - "@storybook/blocks" "7.3.2" - "@storybook/client-logger" "7.3.2" - "@storybook/components" "7.3.2" - "@storybook/csf-plugin" "7.3.2" - "@storybook/csf-tools" "7.3.2" + "@storybook/blocks" "7.5.1" + "@storybook/client-logger" "7.5.1" + "@storybook/components" "7.5.1" + "@storybook/csf-plugin" "7.5.1" + "@storybook/csf-tools" "7.5.1" "@storybook/global" "^5.0.0" "@storybook/mdx2-csf" "^1.0.0" - "@storybook/node-logger" "7.3.2" - "@storybook/postinstall" "7.3.2" - "@storybook/preview-api" "7.3.2" - "@storybook/react-dom-shim" "7.3.2" - "@storybook/theming" "7.3.2" - "@storybook/types" "7.3.2" + "@storybook/node-logger" "7.5.1" + "@storybook/postinstall" "7.5.1" + "@storybook/preview-api" "7.5.1" + "@storybook/react-dom-shim" "7.5.1" + "@storybook/theming" "7.5.1" + "@storybook/types" "7.5.1" fs-extra "^11.1.0" remark-external-links "^8.0.0" remark-slug "^6.0.0" ts-dedent "^2.0.0" -"@storybook/addon-essentials@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/addon-essentials/-/addon-essentials-7.3.2.tgz#887071bbe2822ee0961f152bbd3138ea244e3ee8" - integrity sha512-MI5wi5k/nDgAqnsS4/uibcQhMk3/mVkAAWNO+Epmg5UMCCmDch8SoX9BprEHARwwsVwXChiHAx99fXF/XacWFQ== - dependencies: - "@storybook/addon-actions" "7.3.2" - "@storybook/addon-backgrounds" "7.3.2" - "@storybook/addon-controls" "7.3.2" - "@storybook/addon-docs" "7.3.2" - "@storybook/addon-highlight" "7.3.2" - "@storybook/addon-measure" "7.3.2" - "@storybook/addon-outline" "7.3.2" - "@storybook/addon-toolbars" "7.3.2" - "@storybook/addon-viewport" "7.3.2" - "@storybook/core-common" "7.3.2" - "@storybook/manager-api" "7.3.2" - "@storybook/node-logger" "7.3.2" - "@storybook/preview-api" "7.3.2" +"@storybook/addon-essentials@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/addon-essentials/-/addon-essentials-7.5.1.tgz#41bef1d405e5f9797cd5b5fbc7c60f7f48de194a" + integrity sha512-/jaUZXV+mE/2G5PgEpFKm4lFEHluWn6GFR/pg+hphvHOzBGA3Y75JMgUfJ5CDYHB1dAVSf9JrPOd8Eb1tpESfA== + dependencies: + "@storybook/addon-actions" "7.5.1" + "@storybook/addon-backgrounds" "7.5.1" + "@storybook/addon-controls" "7.5.1" + "@storybook/addon-docs" "7.5.1" + "@storybook/addon-highlight" "7.5.1" + "@storybook/addon-measure" "7.5.1" + "@storybook/addon-outline" "7.5.1" + "@storybook/addon-toolbars" "7.5.1" + "@storybook/addon-viewport" "7.5.1" + "@storybook/core-common" "7.5.1" + "@storybook/manager-api" "7.5.1" + "@storybook/node-logger" "7.5.1" + "@storybook/preview-api" "7.5.1" ts-dedent "^2.0.0" -"@storybook/addon-highlight@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/addon-highlight/-/addon-highlight-7.3.2.tgz#96ac7748fe6e9f816ce03cd5ce5d10014a1e4223" - integrity sha512-Zdq//ZqOYpm+xXHt00l0j/baVuZDSkpP6Xbd3jqXV1ToojAjANlk0CAzHCJxZBiyeSCj7Qxtj9LvTqD+IU/bMA== +"@storybook/addon-highlight@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/addon-highlight/-/addon-highlight-7.5.1.tgz#575152b8e54464ef6a29f5f58c19c14bfd45730c" + integrity sha512-js9OV17kpjRowuaGAPfI9aOn/zzt8P589ACZE+/eYBO9jT65CADwAUxg//Uq0/he+Ac9495pcK3BcYyDeym7/g== dependencies: - "@storybook/core-events" "7.3.2" + "@storybook/core-events" "7.5.1" "@storybook/global" "^5.0.0" - "@storybook/preview-api" "7.3.2" + "@storybook/preview-api" "7.5.1" -"@storybook/addon-measure@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/addon-measure/-/addon-measure-7.3.2.tgz#9056338eff0087731365ac82277f84c44a48e204" - integrity sha512-bEoH3zuKA9b5RA0LBQzdSnoaxEKHa5rZDoAuMbKiEYotTqO7PfP2j/hil31F95UgmH7wPnSkRSqsBsUtWJz3Jg== +"@storybook/addon-measure@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/addon-measure/-/addon-measure-7.5.1.tgz#bc8d2beedc9f6a1170cd90a013012b89d0971aa5" + integrity sha512-yR6oELJe0UHYxRijd1YMuGaQRlZ3uABjmrXaFCPnd6agahgTwIJLiK4XamtkVur//LaiJMvtmM2XXrkJ1BvNJw== dependencies: - "@storybook/client-logger" "7.3.2" - "@storybook/components" "7.3.2" - "@storybook/core-events" "7.3.2" + "@storybook/client-logger" "7.5.1" + "@storybook/components" "7.5.1" + "@storybook/core-events" "7.5.1" "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.3.2" - "@storybook/preview-api" "7.3.2" - "@storybook/types" "7.3.2" + "@storybook/manager-api" "7.5.1" + "@storybook/preview-api" "7.5.1" + "@storybook/types" "7.5.1" tiny-invariant "^1.3.1" -"@storybook/addon-outline@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/addon-outline/-/addon-outline-7.3.2.tgz#28dc1e2c7768c51908316bde9ed74e55d0dadf59" - integrity sha512-DA/O5b4bznV2JsC/o0/JkP2tZLLPftRaz2HHCG+z0mwzNv2pl8lvIl4RpIVJWt1iO0K17kT43ToYYjknMUdJnA== - dependencies: - "@storybook/client-logger" "7.3.2" - "@storybook/components" "7.3.2" - "@storybook/core-events" "7.3.2" - "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.3.2" - "@storybook/preview-api" "7.3.2" - "@storybook/types" "7.3.2" - ts-dedent "^2.0.0" - -"@storybook/addon-toolbars@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/addon-toolbars/-/addon-toolbars-7.3.2.tgz#68637495ce2a850db3affb61b210a086a21d20e1" - integrity sha512-hd+5Ax7p3vmsNNuO3t4pcmB2pxp58i9k12ygD66NLChSNafHxediLqdYJDTRuono2No1InV1HMZghlXXucCCHQ== - dependencies: - "@storybook/client-logger" "7.3.2" - "@storybook/components" "7.3.2" - "@storybook/manager-api" "7.3.2" - "@storybook/preview-api" "7.3.2" - "@storybook/theming" "7.3.2" - -"@storybook/addon-viewport@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/addon-viewport/-/addon-viewport-7.3.2.tgz#1db65d39493cec72ecd973908d9a09528f324ff7" - integrity sha512-G7i67xL35WE6qSmEoctavZUoPd2VDTaAqkRwrGa4oDQs5wed76PgIL2S5IybzbypSzPIXauiNQiBBd2RRMrLFg== +"@storybook/addon-outline@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/addon-outline/-/addon-outline-7.5.1.tgz#f0681fb26ab4811a0351ef360478a04dc1465250" + integrity sha512-IMi5Bo34/Q5YUG5uD8ZUTBwlpGrkDIV+PUgkyNIbmn9OgozoCH80Fs7YlGluRFODQISpHwio9qvSFRGdSNT56A== dependencies: - "@storybook/client-logger" "7.3.2" - "@storybook/components" "7.3.2" - "@storybook/core-events" "7.3.2" + "@storybook/client-logger" "7.5.1" + "@storybook/components" "7.5.1" + "@storybook/core-events" "7.5.1" "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.3.2" - "@storybook/preview-api" "7.3.2" - "@storybook/theming" "7.3.2" + "@storybook/manager-api" "7.5.1" + "@storybook/preview-api" "7.5.1" + "@storybook/types" "7.5.1" + ts-dedent "^2.0.0" + +"@storybook/addon-toolbars@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/addon-toolbars/-/addon-toolbars-7.5.1.tgz#5b224dc042171717f40f255e793e1424e5b0bbd6" + integrity sha512-T88hEEQicV6eCovr5TN2nFgKt7wU0o7pAunP5cU01iiVRj63+oQiVIBB8Xtm4tN+/DsqtyP0BTa6rFwt2ULy8A== + dependencies: + "@storybook/client-logger" "7.5.1" + "@storybook/components" "7.5.1" + "@storybook/manager-api" "7.5.1" + "@storybook/preview-api" "7.5.1" + "@storybook/theming" "7.5.1" + +"@storybook/addon-viewport@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/addon-viewport/-/addon-viewport-7.5.1.tgz#1df1a7b9d9f9243ed5b8de604da667ed62ebf036" + integrity sha512-L57lOGB3LfKgAdLinaZojRQ9W9w2RC0iP9bVaXwrRVeJdpNayfuW4Kh1C8dmacZroB4Zp2U/nEjkSmdcp6uUWg== + dependencies: + "@storybook/client-logger" "7.5.1" + "@storybook/components" "7.5.1" + "@storybook/core-events" "7.5.1" + "@storybook/global" "^5.0.0" + "@storybook/manager-api" "7.5.1" + "@storybook/preview-api" "7.5.1" + "@storybook/theming" "7.5.1" memoizerific "^1.11.3" prop-types "^15.7.2" -"@storybook/addons@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/addons/-/addons-7.3.2.tgz#5e78757e67a414e4ae444cda5d7f39ceff6e12f7" - integrity sha512-qYwHniTJzfR7jKh5juYCjU9ukG7l1YAAt7BpnouItgRutxU/+UoC2iAFooQW+i74SxDoovqnEp9TkG7TAFOLxQ== - dependencies: - "@storybook/manager-api" "7.3.2" - "@storybook/preview-api" "7.3.2" - "@storybook/types" "7.3.2" - -"@storybook/angular@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/angular/-/angular-7.3.2.tgz#660809321f2cf8e941d9d2dea87d9c15fab370ab" - integrity sha512-6SoYX7sSb3Sl9GrE38qmZzCSjaYOVylJdNbc6D7ynfYvVGLe7W7fECO7sVyHFCJZiBRtUKS7+GWhcFdOIBAqcw== - dependencies: - "@storybook/builder-webpack5" "7.3.2" - "@storybook/cli" "7.3.2" - "@storybook/client-logger" "7.3.2" - "@storybook/core-common" "7.3.2" - "@storybook/core-events" "7.3.2" - "@storybook/core-server" "7.3.2" - "@storybook/core-webpack" "7.3.2" - "@storybook/docs-tools" "7.3.2" +"@storybook/angular@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/angular/-/angular-7.5.1.tgz#5f206653c02a664e534d19b3079917dae0b0ad63" + integrity sha512-KdPoxsxeji7ku/WJNz0SP/ff142DG01M9xYQujG49+afnNzckx2YkJt8JEfHXaj/CfUjBN3yyBe5CNMtBuMylg== + dependencies: + "@storybook/builder-webpack5" "7.5.1" + "@storybook/cli" "7.5.1" + "@storybook/client-logger" "7.5.1" + "@storybook/core-common" "7.5.1" + "@storybook/core-events" "7.5.1" + "@storybook/core-server" "7.5.1" + "@storybook/core-webpack" "7.5.1" + "@storybook/docs-tools" "7.5.1" "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.3.2" - "@storybook/node-logger" "7.3.2" - "@storybook/preview-api" "7.3.2" - "@storybook/telemetry" "7.3.2" - "@storybook/types" "7.3.2" - "@types/node" "^16.0.0" + "@storybook/manager-api" "7.5.1" + "@storybook/node-logger" "7.5.1" + "@storybook/preview-api" "7.5.1" + "@storybook/telemetry" "7.5.1" + "@storybook/types" "7.5.1" + "@types/node" "^18.0.0" "@types/react" "^16.14.34" "@types/react-dom" "^16.9.14" "@types/semver" "^7.3.4" @@ -4949,28 +4967,28 @@ find-up "^5.0.0" read-pkg-up "^7.0.1" semver "^7.3.7" - telejson "^7.0.3" + telejson "^7.2.0" ts-dedent "^2.0.0" tsconfig-paths-webpack-plugin "^4.0.1" util-deprecate "^1.0.2" webpack "5" -"@storybook/blocks@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/blocks/-/blocks-7.3.2.tgz#3fcc55848cdd972311d4d5b15282156ec8005204" - integrity sha512-j/PRnvGLn0Y3VAu/t6RrU7pjenb7II7Cl/SnFW8LzjMBKXBrkFaq8BRbglzDAUtGdAa9HmJBosogenoZ9iWoBw== +"@storybook/blocks@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/blocks/-/blocks-7.5.1.tgz#c215da2e82234a703912410c52334fbade163b48" + integrity sha512-7b69p6kDdgmlejEMM2mW6/Lz4OmU/R3Qr+TpKnPcV5iS7ADxRQEQCTEMoQ5RyLJf0vDRh/7Ljn/RMo8Ux3X7JA== dependencies: - "@storybook/channels" "7.3.2" - "@storybook/client-logger" "7.3.2" - "@storybook/components" "7.3.2" - "@storybook/core-events" "7.3.2" + "@storybook/channels" "7.5.1" + "@storybook/client-logger" "7.5.1" + "@storybook/components" "7.5.1" + "@storybook/core-events" "7.5.1" "@storybook/csf" "^0.1.0" - "@storybook/docs-tools" "7.3.2" + "@storybook/docs-tools" "7.5.1" "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.3.2" - "@storybook/preview-api" "7.3.2" - "@storybook/theming" "7.3.2" - "@storybook/types" "7.3.2" + "@storybook/manager-api" "7.5.1" + "@storybook/preview-api" "7.5.1" + "@storybook/theming" "7.5.1" + "@storybook/types" "7.5.1" "@types/lodash" "^4.14.167" color-convert "^2.0.1" dequal "^2.0.2" @@ -4979,7 +4997,7 @@ memoizerific "^1.11.3" polished "^4.2.2" react-colorful "^5.1.2" - telejson "^7.0.3" + telejson "^7.2.0" tocbot "^4.20.1" ts-dedent "^2.0.0" util-deprecate "^1.0.2" @@ -5006,15 +5024,15 @@ process "^0.11.10" util "^0.12.4" -"@storybook/builder-manager@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/builder-manager/-/builder-manager-7.3.2.tgz#6a6c98143007f14e553fc9a106033fe721cfa8a4" - integrity sha512-M0zdzpnZSg6Gd/QiIbOJkVoifAADpMT85NOC5zuAg3h3o29hedVBAigv/CE2nSbuwZtqPifjxs1AUh7wgtmj8A== +"@storybook/builder-manager@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/builder-manager/-/builder-manager-7.5.1.tgz#9cf9ee235c1a16677b7cdc34b96e353226be83b8" + integrity sha512-a02kg/DCcYgiTz+7rw4KdvQzif+2lZ+NIFF5U5u8SDoCQuoe3wRT6QBrFYQTxJexA4WfO6cpyRLDJ1rx6NLo8A== dependencies: "@fal-works/esbuild-plugin-global-externals" "^2.1.2" - "@storybook/core-common" "7.3.2" - "@storybook/manager" "7.3.2" - "@storybook/node-logger" "7.3.2" + "@storybook/core-common" "7.5.1" + "@storybook/manager" "7.5.1" + "@storybook/node-logger" "7.5.1" "@types/ejs" "^3.1.1" "@types/find-cache-dir" "^3.2.1" "@yarnpkg/esbuild-plugin-pnp" "^3.0.0-rc.10" @@ -5028,30 +5046,22 @@ process "^0.11.10" util "^0.12.4" -"@storybook/builder-webpack5@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/builder-webpack5/-/builder-webpack5-7.3.2.tgz#65c9ed673840ca1de5473d9ef89856950a875f1d" - integrity sha512-ywl3fKGmhB3UM+fV0Gsp++gtI8xNa6JqTYj3stJDfWe0sfMOQDSc/uW/Q4lx/oQyV5Lp8X4A/9OFccQ74ZUhXg== - dependencies: - "@babel/core" "^7.22.9" - "@storybook/addons" "7.3.2" - "@storybook/channels" "7.3.2" - "@storybook/client-api" "7.3.2" - "@storybook/client-logger" "7.3.2" - "@storybook/components" "7.3.2" - "@storybook/core-common" "7.3.2" - "@storybook/core-events" "7.3.2" - "@storybook/core-webpack" "7.3.2" - "@storybook/global" "^5.0.0" - "@storybook/manager-api" "7.3.2" - "@storybook/node-logger" "7.3.2" - "@storybook/preview" "7.3.2" - "@storybook/preview-api" "7.3.2" - "@storybook/router" "7.3.2" - "@storybook/store" "7.3.2" - "@storybook/theming" "7.3.2" - "@swc/core" "^1.3.49" - "@types/node" "^16.0.0" +"@storybook/builder-webpack5@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/builder-webpack5/-/builder-webpack5-7.5.1.tgz#2a226ae4a8d465759e66839b26a7c65ad4122862" + integrity sha512-klZ2Q1lESt4o9HhofsD1cEPFd8T9FCWkMCNVYmPoGepmyVwuibLCJ/U6k4noQ8Wow5SEexKSq2gU7ir7cKcXwA== + dependencies: + "@babel/core" "^7.22.0" + "@storybook/channels" "7.5.1" + "@storybook/client-logger" "7.5.1" + "@storybook/core-common" "7.5.1" + "@storybook/core-events" "7.5.1" + "@storybook/core-webpack" "7.5.1" + "@storybook/node-logger" "7.5.1" + "@storybook/preview" "7.5.1" + "@storybook/preview-api" "7.5.1" + "@swc/core" "^1.3.82" + "@types/node" "^18.0.0" "@types/semver" "^7.3.4" babel-loader "^9.0.0" babel-plugin-named-exports-order "^0.0.2" @@ -5095,16 +5105,16 @@ resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-7.0.9.tgz#0308c6a714daf1088228b554fd56dc72f2921b76" integrity sha512-LF/Mkr0/+VOawEAospLGUcfZIPak3yV/ZjEAe/lubvLPJ6s2FFOjDUsyDIa2oM4ZE9TI6AGVN51kddVToelM8A== -"@storybook/channels@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-7.3.2.tgz#2126321e7ad70e3fbc33d1544bb09e1fe6ffc5b9" - integrity sha512-GG5+qzv2OZAzXonqUpJR81f2pjKExj7v5MoFJhKYgb3Y+jVYlUzBHBjhQZhuQczP4si418/jvjimvU1PZ4hqcg== +"@storybook/channels@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-7.5.1.tgz#f850c6da3e2cabe51239499d68a8b3d7eb22c621" + integrity sha512-7hTGHqvtdFTqRx8LuCznOpqPBYfUeMUt/0IIp7SFuZT585yMPxrYoaK//QmLEWnPb80B8HVTSQi7caUkJb32LA== dependencies: - "@storybook/client-logger" "7.3.2" - "@storybook/core-events" "7.3.2" + "@storybook/client-logger" "7.5.1" + "@storybook/core-events" "7.5.1" "@storybook/global" "^5.0.0" qs "^6.10.0" - telejson "^7.0.3" + telejson "^7.2.0" tiny-invariant "^1.3.1" "@storybook/cli@7.0.9": @@ -5151,22 +5161,23 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/cli@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/cli/-/cli-7.3.2.tgz#5f8bc0ea8afbf15763098520dfd529803690c7bc" - integrity sha512-RnqE/6KSelL9TQ44uCIU5xvUhY9zXM2Upanr0hao72x44rvlGQbV262pHdkVIYsn0wi8QzYtnoxQPLSqUfUDfA== +"@storybook/cli@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/cli/-/cli-7.5.1.tgz#11df3114fbfadb74c7ea1777b3f79c6a045e9bec" + integrity sha512-qKIJs8gqXTy0eSEbt0OW5nsJqiV/2+N1eWoiBiIxoZ+8b0ACXIAUcE/N6AsEDUqIq8AMK7lebqjEfIAt2Sp7Mg== dependencies: "@babel/core" "^7.22.9" "@babel/preset-env" "^7.22.9" "@babel/types" "^7.22.5" "@ndelangen/get-tarball" "^3.0.7" - "@storybook/codemod" "7.3.2" - "@storybook/core-common" "7.3.2" - "@storybook/core-server" "7.3.2" - "@storybook/csf-tools" "7.3.2" - "@storybook/node-logger" "7.3.2" - "@storybook/telemetry" "7.3.2" - "@storybook/types" "7.3.2" + "@storybook/codemod" "7.5.1" + "@storybook/core-common" "7.5.1" + "@storybook/core-events" "7.5.1" + "@storybook/core-server" "7.5.1" + "@storybook/csf-tools" "7.5.1" + "@storybook/node-logger" "7.5.1" + "@storybook/telemetry" "7.5.1" + "@storybook/types" "7.5.1" "@types/semver" "^7.3.4" "@yarnpkg/fslib" "2.10.3" "@yarnpkg/libzip" "2.3.0" @@ -5197,14 +5208,6 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/client-api@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/client-api/-/client-api-7.3.2.tgz#4f667b69691150fadf137a1e291f18f6a255717e" - integrity sha512-8BjoEbuBMvlJAYcIurVn7ghq3plgInOVC8IjswALhSBkvz5V2PRPFSAo9kKaDytNSw2gy1JLgp8imCvMo72+Mw== - dependencies: - "@storybook/client-logger" "7.3.2" - "@storybook/preview-api" "7.3.2" - "@storybook/client-logger@7.0.9": version "7.0.9" resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-7.0.9.tgz#2f94d4378912c753e27e647880d429bb1ed23104" @@ -5212,10 +5215,10 @@ dependencies: "@storybook/global" "^5.0.0" -"@storybook/client-logger@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-7.3.2.tgz#8c04d07cc3fdce124fa95aafc5413fea0c202345" - integrity sha512-T7q/YS5lPUE6xjz9EUwJ/v+KCd5KU9dl1MQ9RcH7IpM73EtQZeNSuM9/P96uKXZTf0wZOUBTXVlTzKr66ZB/RQ== +"@storybook/client-logger@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-7.5.1.tgz#dc4c693900ae1f7ebda9f7faeea46956e70ef184" + integrity sha512-XxbLvg0aQRoBrzxYLcVYCbjDkGbkU8Rfb74XbV2CLiO2bIbFPmA1l1Nwbp+wkCGA+O6Z1zwzSl6wcKKqZ6XZCg== dependencies: "@storybook/global" "^5.0.0" @@ -5238,18 +5241,18 @@ prettier "^2.8.0" recast "^0.23.1" -"@storybook/codemod@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/codemod/-/codemod-7.3.2.tgz#006b0495b9b9565bf3b883524d80974eaa661bae" - integrity sha512-B2P91aYhlxdk7zeQOq0VBnDox2HEcboP2unSh6Vcf4V8j2FCdPvBIM7ZkT9p15FHfyOHvvrtf56XdBIyD8/XJA== +"@storybook/codemod@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/codemod/-/codemod-7.5.1.tgz#40b7b8ab74945eff7b8206c5944025d82e01cd57" + integrity sha512-PqHGOz/CZnRG9pWgshezCacu524CrXOJrCOwMUP9OMpH0Jk/NhBkHaBZrB8wMjn5hekTj0UmRa/EN8wJm9CCUQ== dependencies: "@babel/core" "^7.22.9" "@babel/preset-env" "^7.22.9" "@babel/types" "^7.22.5" "@storybook/csf" "^0.1.0" - "@storybook/csf-tools" "7.3.2" - "@storybook/node-logger" "7.3.2" - "@storybook/types" "7.3.2" + "@storybook/csf-tools" "7.5.1" + "@storybook/node-logger" "7.5.1" + "@storybook/types" "7.5.1" "@types/cross-spawn" "^6.0.2" cross-spawn "^7.0.3" globby "^11.0.2" @@ -5258,19 +5261,18 @@ prettier "^2.8.0" recast "^0.23.1" -"@storybook/components@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/components/-/components-7.3.2.tgz#84855518670a87b74275bdc4194148961b9cc776" - integrity sha512-hsa1OJx4yEtLHTzrCxq8G9U5MTbcTuItj9yp1gsW9RTNc/V1n/rReQv4zE/k+//2hDsLrS62o3yhZ9VksRhLNw== +"@storybook/components@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/components/-/components-7.5.1.tgz#677eae0e7976939434b5c391fe841ced9b66e082" + integrity sha512-fdzzxGBV/Fj9pYwfYL3RZsVUHeBqlfLMBP/L6mPmjaZSwHFqkaRZZUajZc57lCtI+TOy2gY6WH3cPavEtqtgLw== dependencies: "@radix-ui/react-select" "^1.2.2" "@radix-ui/react-toolbar" "^1.0.4" - "@storybook/client-logger" "7.3.2" + "@storybook/client-logger" "7.5.1" "@storybook/csf" "^0.1.0" "@storybook/global" "^5.0.0" - "@storybook/icons" "^1.1.6" - "@storybook/theming" "7.3.2" - "@storybook/types" "7.3.2" + "@storybook/theming" "7.5.1" + "@storybook/types" "7.5.1" memoizerific "^1.11.3" use-resize-observer "^9.1.0" util-deprecate "^1.0.2" @@ -5300,20 +5302,21 @@ resolve-from "^5.0.0" ts-dedent "^2.0.0" -"@storybook/core-common@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/core-common/-/core-common-7.3.2.tgz#82816a6d7a9b7d07a229d287d6a8b16aa41ec10a" - integrity sha512-W+X7JXV0UmHuUl9xSF/xzz1+P7VM8xHt7ORfp8yrtJRwLHURqHvFFQC+NUHBKno1Ydtt/Uch7QNOWUlQKmiWEw== +"@storybook/core-common@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/core-common/-/core-common-7.5.1.tgz#ce0b7a3a14c71e3d1b5261395bbea62429d635b2" + integrity sha512-/rQ0/xvxFHSGCgIkK74HrgDMnzfYtDYTCoSod/qCTojfs9aciX+JYgvo5ChPnI/LEKWwxRTkrE7pl2u5+C4XGA== dependencies: - "@storybook/node-logger" "7.3.2" - "@storybook/types" "7.3.2" + "@storybook/core-events" "7.5.1" + "@storybook/node-logger" "7.5.1" + "@storybook/types" "7.5.1" "@types/find-cache-dir" "^3.2.1" - "@types/node" "^16.0.0" + "@types/node" "^18.0.0" "@types/node-fetch" "^2.6.4" "@types/pretty-hrtime" "^1.0.0" chalk "^4.1.0" esbuild "^0.18.0" - esbuild-register "^3.4.0" + esbuild-register "^3.5.0" file-system-cache "2.3.0" find-cache-dir "^3.0.0" find-up "^5.0.0" @@ -5333,10 +5336,12 @@ resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-7.0.9.tgz#4aa5913cfa3ccb40b83bf4ffbb6ef832aa8f5402" integrity sha512-xJiyX7Gq/TgDdBv+8KbfTJ4Sc7fCMeIEUqWTtnYCHWB7Mp6Iui37+caDX3aGQRTz7FVgb7aL5QkQES9Ihc1+dg== -"@storybook/core-events@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-7.3.2.tgz#9d18df7ceb6901225218e538a3d1d720a2f49b46" - integrity sha512-DCrM3s+sxLKS8vl0zB+1tZEtcl5XQTOGl46XgRRV/SIBabFbsC0l5pQPswWkTUsIqdREtiT0YUHcXB1+YDyFvA== +"@storybook/core-events@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-7.5.1.tgz#a6bf057e4605fb8360c76d28a3c36daa676a81a4" + integrity sha512-2eyaUhTfmEEqOEZVoCXVITCBn6N7QuZCG2UNxv0l//ED+7MuMiFhVw7kS7H3WOVk65R7gb8qbKFTNX8HFTgBHg== + dependencies: + ts-dedent "^2.0.0" "@storybook/core-server@7.0.9": version "7.0.9" @@ -5386,28 +5391,28 @@ watchpack "^2.2.0" ws "^8.2.3" -"@storybook/core-server@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/core-server/-/core-server-7.3.2.tgz#b5abc90c7ed3900531b79a63c8f4059e4702f7d4" - integrity sha512-TLMEptmfqYLu4bayRV5m8T3R50uR07Fwja1n/8CCmZOGWjnr5kXMFRkD7+hj7wm82yoidfd23bmVcRU9mlG+tg== +"@storybook/core-server@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/core-server/-/core-server-7.5.1.tgz#6fffa20ad2952dcd1fc790ea49e9f8ad615d57e1" + integrity sha512-DD4BXCH91aZJoFuu0cQwG1ZUmE59kG5pazuE3S89zH1GwKS1jWyeAv4EwEfvynT5Ah1ctd8QdCZCSXVzjq0qcw== dependencies: "@aw-web-design/x-default-browser" "1.4.126" "@discoveryjs/json-ext" "^0.5.3" - "@storybook/builder-manager" "7.3.2" - "@storybook/channels" "7.3.2" - "@storybook/core-common" "7.3.2" - "@storybook/core-events" "7.3.2" + "@storybook/builder-manager" "7.5.1" + "@storybook/channels" "7.5.1" + "@storybook/core-common" "7.5.1" + "@storybook/core-events" "7.5.1" "@storybook/csf" "^0.1.0" - "@storybook/csf-tools" "7.3.2" + "@storybook/csf-tools" "7.5.1" "@storybook/docs-mdx" "^0.1.0" "@storybook/global" "^5.0.0" - "@storybook/manager" "7.3.2" - "@storybook/node-logger" "7.3.2" - "@storybook/preview-api" "7.3.2" - "@storybook/telemetry" "7.3.2" - "@storybook/types" "7.3.2" + "@storybook/manager" "7.5.1" + "@storybook/node-logger" "7.5.1" + "@storybook/preview-api" "7.5.1" + "@storybook/telemetry" "7.5.1" + "@storybook/types" "7.5.1" "@types/detect-port" "^1.3.0" - "@types/node" "^16.0.0" + "@types/node" "^18.0.0" "@types/pretty-hrtime" "^1.0.0" "@types/semver" "^7.3.4" better-opn "^3.0.2" @@ -5425,8 +5430,7 @@ prompts "^2.4.0" read-pkg-up "^7.0.1" semver "^7.3.7" - serve-favicon "^2.5.0" - telejson "^7.0.3" + telejson "^7.2.0" tiny-invariant "^1.3.1" ts-dedent "^2.0.0" util "^0.12.4" @@ -5434,23 +5438,23 @@ watchpack "^2.2.0" ws "^8.2.3" -"@storybook/core-webpack@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/core-webpack/-/core-webpack-7.3.2.tgz#1d0cc04dc2224ceeb55528d3e4cb5c8518118ffb" - integrity sha512-N0Z1jzodhhGjTWwW4VfL/41z/Q4YEPXcYUVyTjuOgyW23uXD+3bTvBZInmWIpZezSJUgyyzAt6KamN2PBpAE1g== +"@storybook/core-webpack@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/core-webpack/-/core-webpack-7.5.1.tgz#c98706ca110898b07e5414078f2369bcb51b6c6e" + integrity sha512-FlXj6GCXG0evCC5s7LNcu1uxRC9fG856HQe4PzEk7jDSQdWQRX8Olpo4IOHB1WObuvYqw6Gf0OD6TB5uhnKXmg== dependencies: - "@storybook/core-common" "7.3.2" - "@storybook/node-logger" "7.3.2" - "@storybook/types" "7.3.2" - "@types/node" "^16.0.0" + "@storybook/core-common" "7.5.1" + "@storybook/node-logger" "7.5.1" + "@storybook/types" "7.5.1" + "@types/node" "^18.0.0" ts-dedent "^2.0.0" -"@storybook/csf-plugin@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/csf-plugin/-/csf-plugin-7.3.2.tgz#c82db8531444bc9e229109f2bf54b42f6669107e" - integrity sha512-uXJLJkRQeXnI2jHRdHfjJCbtEDohqzCrADh1xDfjqy/MQ/Sh2iFnRBCbEXsrxROBMh7Ow88/hJdy+vX0ZQh9fA== +"@storybook/csf-plugin@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/csf-plugin/-/csf-plugin-7.5.1.tgz#c20783772f116005471e21cbc84a3820f2ddfd35" + integrity sha512-jhV2aCZhSIXUiQDcHtuCg3dyYMzjYHTwLb4cJtkNw4sXqQoTGydTSWYwWigcHFfKGoyQp82rSgE1hE4YYx6iew== dependencies: - "@storybook/csf-tools" "7.3.2" + "@storybook/csf-tools" "7.5.1" unplugin "^1.3.1" "@storybook/csf-tools@7.0.9": @@ -5468,17 +5472,17 @@ recast "^0.23.1" ts-dedent "^2.0.0" -"@storybook/csf-tools@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/csf-tools/-/csf-tools-7.3.2.tgz#d93a47443ee24e59bc444f97234e11b2fb157136" - integrity sha512-54UaOsx9QZxiuMSpX01kSAEYuZYaB72Zz8ihlVrKZbIPTSJ6SYcM/jzNCGf1Rz7AjgU2UjXCSs5zBq5t37Nuqw== +"@storybook/csf-tools@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/csf-tools/-/csf-tools-7.5.1.tgz#f652a1348f931fb2ad48116b1c7d7540de950d2e" + integrity sha512-YChGbT1/odLS4RLb2HtK7ixM7mH5s7G5nOsWGKXalbza4SFKZIU2UzllEUsA+X8YfxMHnCD5TC3xLfK0ByxmzQ== dependencies: "@babel/generator" "^7.22.9" "@babel/parser" "^7.22.7" "@babel/traverse" "^7.22.8" "@babel/types" "^7.22.5" "@storybook/csf" "^0.1.0" - "@storybook/types" "7.3.2" + "@storybook/types" "7.5.1" fs-extra "^11.1.0" recast "^0.23.1" ts-dedent "^2.0.0" @@ -5502,14 +5506,14 @@ resolved "https://registry.yarnpkg.com/@storybook/docs-mdx/-/docs-mdx-0.1.0.tgz#33ba0e39d1461caf048b57db354b2cc410705316" integrity sha512-JDaBR9lwVY4eSH5W8EGHrhODjygPd6QImRbwjAuJNEnY0Vw4ie3bPkeGfnacB3OBW6u/agqPv2aRlR46JcAQLg== -"@storybook/docs-tools@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/docs-tools/-/docs-tools-7.3.2.tgz#4e76ca791c45595aa3bbfd53e6f74dcb5b60f100" - integrity sha512-MSmAiL/lg+B14CIKD6DvkBPdTDfGBSSt3bE+vW2uW9ohNJB5eWePZLQZUe34uZuunn3uqyTAgbEF7KjrtGZ/MQ== +"@storybook/docs-tools@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/docs-tools/-/docs-tools-7.5.1.tgz#a1266314e64929498d3c41483ac9794cf3707102" + integrity sha512-tDtQGeKU5Kc2XoqZ5vpeGQrOkRg2UoDiSRS6cLy+M/sMB03Annq0ZngnJXaMiv0DLi2zpWSgWqPgYA3TJTZHBw== dependencies: - "@storybook/core-common" "7.3.2" - "@storybook/preview-api" "7.3.2" - "@storybook/types" "7.3.2" + "@storybook/core-common" "7.5.1" + "@storybook/preview-api" "7.5.1" + "@storybook/types" "7.5.1" "@types/doctrine" "^0.0.3" doctrine "^3.0.0" lodash "^4.17.21" @@ -5519,30 +5523,25 @@ resolved "https://registry.yarnpkg.com/@storybook/global/-/global-5.0.0.tgz#b793d34b94f572c1d7d9e0f44fac4e0dbc9572ed" integrity sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ== -"@storybook/icons@^1.1.6": - version "1.1.6" - resolved "https://registry.yarnpkg.com/@storybook/icons/-/icons-1.1.6.tgz#22536cde6dd85fa259608fa8bd7b9eeca2a8e688" - integrity sha512-co5gDCYPojRAc5lRMnWxbjrR1V37/rTmAo9Vok4a1hDpHZIwkGTWesdzvYivSQXYFxZTpxdM1b5K3W87brnahw== - -"@storybook/manager-api@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-7.3.2.tgz#8228ce35cfc0f304e3a1c51bec3d3e0d01427a1a" - integrity sha512-EEosLcc+CPLjorLf2+rGLBW0sH0SHVcB1yClLIzKM5Wt8Cl/0l19wNtGMooE/28SDLA4DPIl4WDnP83wRE1hsg== +"@storybook/manager-api@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-7.5.1.tgz#ebc5c0efc3f9c3451882e61b9b982d898a1fc6c9" + integrity sha512-ygwJywluhhE1dpA0jC2D/3NFhMXzFCt+iW4m3cOwexYTuiDWF66AbGOFBx9peE7Wk/Z9doKkf9E3v11enwaidA== dependencies: - "@storybook/channels" "7.3.2" - "@storybook/client-logger" "7.3.2" - "@storybook/core-events" "7.3.2" + "@storybook/channels" "7.5.1" + "@storybook/client-logger" "7.5.1" + "@storybook/core-events" "7.5.1" "@storybook/csf" "^0.1.0" "@storybook/global" "^5.0.0" - "@storybook/router" "7.3.2" - "@storybook/theming" "7.3.2" - "@storybook/types" "7.3.2" + "@storybook/router" "7.5.1" + "@storybook/theming" "7.5.1" + "@storybook/types" "7.5.1" dequal "^2.0.2" lodash "^4.17.21" memoizerific "^1.11.3" semver "^7.3.7" store2 "^2.14.2" - telejson "^7.0.3" + telejson "^7.2.0" ts-dedent "^2.0.0" "@storybook/manager@7.0.9": @@ -5550,10 +5549,10 @@ resolved "https://registry.yarnpkg.com/@storybook/manager/-/manager-7.0.9.tgz#7bc1e8d38f719365c3523cb39341e2ced6275070" integrity sha512-fyUb9DhTCnWBxjVQR0oTnXPStyIZh4DhQ1oXKEYKtV6ZeS+Qw4yXRDgciVXv6ifIBAdSEZOJ0o869c6NUt0iVQ== -"@storybook/manager@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/manager/-/manager-7.3.2.tgz#9554d24b220c8547a75e9cbd714eddfc2c4a5824" - integrity sha512-nA3XcnD36WUjgMCtID2M4DWYZh6MnabItXvKXGbNUkI8SVaIekc5nEgeplFyqutL11eKz3Es/FwwEP+mePbWfw== +"@storybook/manager@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/manager/-/manager-7.5.1.tgz#c8b73b17e10c2c96fbc2ab736abcdc57bb8f4143" + integrity sha512-Jo83sj7KvsZ78vvqjH72ErmQ31Frx6GBLbpeYXZtbAXWl0/LHsxAEVz0Mke+DixzWDyP0/cn+Nw8QUfA+Oz1fg== "@storybook/mdx2-csf@^1.0.0": version "1.1.0" @@ -5570,15 +5569,15 @@ npmlog "^5.0.1" pretty-hrtime "^1.0.3" -"@storybook/node-logger@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-7.3.2.tgz#c8fea7b87d63c7b50757646af990d7cf13f7c71e" - integrity sha512-XCCYiLa5mQ7KeDQcZ4awlyWDmtxJHLIJeedvXx29JUNztUjgwyon9rlNvxtxtGj6171zgn9MERFh920WyJOOOQ== +"@storybook/node-logger@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-7.5.1.tgz#a2cce2c2122180523cbd5b5727e9e48a8e44b5c2" + integrity sha512-xRMdL5YPe8C9sgJ1R0QD3YbiLjDGrfQk91+GplRD8N9FVCT5dki55Bv5Kp0FpemLYYg6uxAZL5nHmsZHKDKQoA== -"@storybook/postinstall@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/postinstall/-/postinstall-7.3.2.tgz#1826abc87d69fc8e125cb7587f19074cb474650d" - integrity sha512-23/QUseeVaYjqexq4O1f1g/Fxq+pNGD+/wbXLPkdwNydutGwMZ3XAD8jcm+zeOmkbUPN8jQzKUXqO2OE/GgvHg== +"@storybook/postinstall@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/postinstall/-/postinstall-7.5.1.tgz#956a4e6460f330e0cac51650c38ab25d0d3b2ec0" + integrity sha512-+LFUe2nNbmmLPKNt34RXSSC1r40yGGOoP/qlaPFwNOgQN2AZUrfqk6ZYnw6LjmcuHpQInZ4y4WDgbzg6QQL3+w== "@storybook/preview-api@7.0.9": version "7.0.9" @@ -5601,17 +5600,17 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/preview-api@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/preview-api/-/preview-api-7.3.2.tgz#75701e7d27cb804c2e30403ce9d001ea8cb2022a" - integrity sha512-exQrWQQLwf/nXB6OEuQScygN5iO914iNQAvicaJ7mrX9L1ypIq1PpXgJR3mSezBd9dhOMBP/BMy1Zck/wBEL9A== +"@storybook/preview-api@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/preview-api/-/preview-api-7.5.1.tgz#c21697587d7202941e0f90538115d9c3be21f781" + integrity sha512-8xjUbuGmHLmw8tfTUCjXSvMM9r96JaexPFmHdwW6XLe71KKdWp8u96vRDRE5648cd+/of15OjaRtakRKqluA/A== dependencies: - "@storybook/channels" "7.3.2" - "@storybook/client-logger" "7.3.2" - "@storybook/core-events" "7.3.2" + "@storybook/channels" "7.5.1" + "@storybook/client-logger" "7.5.1" + "@storybook/core-events" "7.5.1" "@storybook/csf" "^0.1.0" "@storybook/global" "^5.0.0" - "@storybook/types" "7.3.2" + "@storybook/types" "7.5.1" "@types/qs" "^6.9.5" dequal "^2.0.2" lodash "^4.17.21" @@ -5621,33 +5620,25 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/preview@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/preview/-/preview-7.3.2.tgz#ba86f2bdf47df1f523023155735cc57969004438" - integrity sha512-UXgImhD7xa+nYgXRcNFQdTqQT1725mOzWbQUtYPMJXkHO+t251hQrEc81tMzSSPEgPrFY8wndpEqTt8glFm91g== +"@storybook/preview@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/preview/-/preview-7.5.1.tgz#97d8de1a4780eb7640a0f74d88302871728160b7" + integrity sha512-nfZC103z9Cy27FrJKUr2IjDuVt8Mvn1Z5gZ0TtJihoK7sfLTv29nd/XU9zzrb/epM3o8UEzc63xZZsMaToDbAw== -"@storybook/react-dom-shim@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/react-dom-shim/-/react-dom-shim-7.3.2.tgz#67d266ee56286479cd1c3b113451a7907516fdbe" - integrity sha512-63ysybmpl9UULmLu/aUwWwhjf5QEWTvnMW9r8Z3LF3sW8Z698ZsssdThzNWqw0zlwTlgnQA4ta2Df4/oVXR0+Q== +"@storybook/react-dom-shim@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/react-dom-shim/-/react-dom-shim-7.5.1.tgz#1dd868782f2ed52828691a221b0f9e99f5427ef8" + integrity sha512-bzTIfLm91O9h3rPYJLtRbmsPARerY3z7MoyvadGp8TikvIvf+WyT/vHujw+20SxnqiZVq5Jv65FFlxc46GGB1Q== -"@storybook/router@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/router/-/router-7.3.2.tgz#6f59996c67bd22c57947cf58337979e0730e1e5e" - integrity sha512-J3QPudwCJhdnfqPx9GaNDlnsjJ6JbFta/ypp3EkHntyuuaNBeNP3Aq73DJJY2XMTS2Xdw8tD9Y9Y9gCFHJXMDQ== +"@storybook/router@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/router/-/router-7.5.1.tgz#1d09daa1c7414061fe8c47415b7750a874ad1d9b" + integrity sha512-BvKo+IxWwo3dfIG1+vLtZLT4qqkNHL5GTIozTyX04uqt9ByYZL6SJEzxEa1Xn6Qq/fbdQwzCanNHbTlwiTMf7Q== dependencies: - "@storybook/client-logger" "7.3.2" + "@storybook/client-logger" "7.5.1" memoizerific "^1.11.3" qs "^6.10.0" -"@storybook/store@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/store/-/store-7.3.2.tgz#88b9e46a2a4ca71a6ba4ddc9d2ff672c395fbea0" - integrity sha512-lGgpHQjNbNpvdpCAzxbWzZyNDgjpH8eypqOj8E6YHAq1LKcyvE4KFLVRdp2nBEsWNUWMlfYMTeHc8idcdm2FgQ== - dependencies: - "@storybook/client-logger" "7.3.2" - "@storybook/preview-api" "7.3.2" - "@storybook/telemetry@7.0.9": version "7.0.9" resolved "https://registry.yarnpkg.com/@storybook/telemetry/-/telemetry-7.0.9.tgz#2be6a1273a51228902a38c6dbb6d13e0fda5e7a4" @@ -5663,27 +5654,27 @@ nanoid "^3.3.1" read-pkg-up "^7.0.1" -"@storybook/telemetry@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/telemetry/-/telemetry-7.3.2.tgz#61c07300dedd40f3c17c81ea9d2a097187cb37c9" - integrity sha512-BmgwaZGoR2ZzGZpcO5ipc4uMd9y28qmu9Ynx054Q3mb86daJrw4CU18TVi5UoFa9qmygQhoHx2gaK2QStNtqCg== +"@storybook/telemetry@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/telemetry/-/telemetry-7.5.1.tgz#299bc0c03b1b68a7cd274ff443c7f13783153c87" + integrity sha512-z9PGouNqvZ2F7vD79qDF4PN7iW3kE3MO7YX0iKTmzgLi4ImKuXIJRF04GRH8r+WYghnbomAyA4o6z9YJMdNuVw== dependencies: - "@storybook/client-logger" "7.3.2" - "@storybook/core-common" "7.3.2" - "@storybook/csf-tools" "7.3.2" + "@storybook/client-logger" "7.5.1" + "@storybook/core-common" "7.5.1" + "@storybook/csf-tools" "7.5.1" chalk "^4.1.0" detect-package-manager "^2.0.1" fetch-retry "^5.0.2" fs-extra "^11.1.0" read-pkg-up "^7.0.1" -"@storybook/theming@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-7.3.2.tgz#6742697322de78831e5e67567368f82b5969a83d" - integrity sha512-npVsnmNAtqGwl1K7vLC/hcVhL8tBC8G0vdZXEcufF0jHdQmRCUs9ZVrnR6W0LCrtmIHDaDoO7PqJVSzu2wgVxw== +"@storybook/theming@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-7.5.1.tgz#b3a78f493d644ac8cba5136e04479a58a9ba5546" + integrity sha512-ETLAOn10hI4Mkmjsr0HGcM6HbzaURrrPBYmfXOrdbrzEVN+AHW4FlvP9d8fYyP1gdjPE1F39XvF0jYgt1zXiHQ== dependencies: "@emotion/use-insertion-effect-with-fallbacks" "^1.0.0" - "@storybook/client-logger" "7.3.2" + "@storybook/client-logger" "7.5.1" "@storybook/global" "^5.0.0" memoizerific "^1.11.3" @@ -5697,12 +5688,12 @@ "@types/express" "^4.7.0" file-system-cache "^2.0.0" -"@storybook/types@7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@storybook/types/-/types-7.3.2.tgz#81ca5cf87dcaeb06d99e17e91d7852677a0676b9" - integrity sha512-1UHC1r2J6H9dEpj4pp9a16P1rTL87V9Yc6TtYBpp7m+cxzyIZBRvu1wZFKmRB51RXE/uDaxGRKzfNRfgTALcIQ== +"@storybook/types@7.5.1": + version "7.5.1" + resolved "https://registry.yarnpkg.com/@storybook/types/-/types-7.5.1.tgz#fa7f5c4ded412c92af9e6bcb238689c1f4f57d2a" + integrity sha512-ZcMSaqFNx1E+G00nRDUi8kKL7gxJVlnCvbKLNj3V85guy4DkIYAZr31yDqze07gDWbjvKoHIp3tKpgE+2i8upQ== dependencies: - "@storybook/channels" "7.3.2" + "@storybook/channels" "7.5.1" "@types/babel__core" "^7.0.0" "@types/express" "^4.7.0" file-system-cache "2.3.0" @@ -5712,71 +5703,84 @@ resolved "https://registry.yarnpkg.com/@stripe/stripe-js/-/stripe-js-1.47.0.tgz#48626a2e43302330aa826ce498a2d9761db4053d" integrity sha512-jKSClqEIKS2MbPCXlSsseDSZyJ3dVrfUrYMz5LBY1o9iS2tfKbpTZACt8r2g+xyQozI+uHr76pVTyFsmBKA4Mg== -"@swc/core-darwin-arm64@1.3.74": - version "1.3.74" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.74.tgz#5ec6f504fb8cd74fd5133080f6cc670327a867cd" - integrity sha512-2rMV4QxM583jXcREfo0MhV3Oj5pgRSfSh/kVrB1twL2rQxOrbzkAPT/8flmygdVoL4f2F7o1EY5lKlYxEBiIKQ== - -"@swc/core-darwin-x64@1.3.74": - version "1.3.74" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.74.tgz#5da7bdc4ad0fb3b4375d9c1039672ae8f61efaeb" - integrity sha512-KKEGE1wXneYXe15fWDRM8/oekd/Q4yAuccA0vWY/7i6nOSPqWYcSDR0nRtR030ltDxWt0rk/eCTmNkrOWrKs3A== - -"@swc/core-linux-arm-gnueabihf@1.3.74": - version "1.3.74" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.74.tgz#52d818692aaaf9138e1175956271cae8107c1096" - integrity sha512-HehH5DR6r/5fIVu7tu8ZqgrHkhSCQNewf1ztFQJgcmaQWn+H4AJERBjwkjosqh4TvUJucZv8vyRTvrFeBXaCSA== - -"@swc/core-linux-arm64-gnu@1.3.74": - version "1.3.74" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.74.tgz#b230ba8623edb3c4b9ceffaf9aced8bf7a9fc829" - integrity sha512-+xkbCRz/wczgdknoV4NwYxbRI2dD7x/qkIFcVM2buzLCq8oWLweuV8+aL4pRqu0qDh7ZSb1jcaVTUIsySCJznA== - -"@swc/core-linux-arm64-musl@1.3.74": - version "1.3.74" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.74.tgz#05ff0f3046aba1dd9d2d8793c10cd4a21a46fd7f" - integrity sha512-maKFZSCD3tQznzPV7T3V+TtiWZFEFM8YrnSS5fQNNb+K9J65sL+170uTb3M7H4cFkG+9Sm5k5yCrCIutlvV48g== - -"@swc/core-linux-x64-gnu@1.3.74": - version "1.3.74" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.74.tgz#a98d9a984d47404aa2de478dd3cd33dbd195bba2" - integrity sha512-LEXpcShF6DLTWJSiBhMSYZkLQ27UvaQ24fCFhoIV/R3dhYaUpHmIyLPPBNC82T03lB3ONUFVwrRw6fxDJ/f00A== - -"@swc/core-linux-x64-musl@1.3.74": - version "1.3.74" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.74.tgz#95e04431eba994b4fae23c578ad1ba73fb72c21d" - integrity sha512-sxsFctbFMZEFmDE7CmYljG0dMumH8XBTwwtGr8s6z0fYAzXBGNq2AFPcmEh2np9rPWkt7pE1m0ByESD+dMkbxQ== - -"@swc/core-win32-arm64-msvc@1.3.74": - version "1.3.74" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.74.tgz#62cb708094a8902a307fba6eea08682dbccd472d" - integrity sha512-F7hY9/BjFCozA4YPFYFH5FGCyWwa44vIXHqG66F5cDwXDGFn8ZtBsYIsiPfUYcx0AeAo1ojnVWKPxokZhYNYqA== - -"@swc/core-win32-ia32-msvc@1.3.74": - version "1.3.74" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.74.tgz#fe5a2d8bbddb609e554e0d8d678093973096330c" - integrity sha512-qBAsiD1AlIdqED6wy3UNRHyAys9pWMUidX0LJ6mj24r/vfrzzTBAUrLJe5m7bzE+F1Rgi001avYJeEW1DLEJ+Q== - -"@swc/core-win32-x64-msvc@1.3.74": - version "1.3.74" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.74.tgz#4fd459c7264d4c97d1b2965ed6aa86b1725ce38b" - integrity sha512-S3YAvvLprTnPRwQuy9Dkwubb5SRLpVK3JJsqYDbGfgj8PGQyKHZcVJ5X3nfFsoWLy3j9B/3Os2nawprRSzeC5A== - -"@swc/core@^1.3.49": - version "1.3.74" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.3.74.tgz#b1d1a3c46ca32b7f10d970c8a209d2913c9de251" - integrity sha512-P+MIExOTdWlfq8Heb1/NhBAke6UTckd4cRDuJoFcFMGBRvgoCMNWhnfP3FRRXPLI7GGg27dRZS+xHiqYyQmSrA== +"@swc/core-darwin-arm64@1.3.95": + version "1.3.95" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.95.tgz#e6b6363fc0a22ee3cd9a63130d2042d5027aae2c" + integrity sha512-VAuBAP3MNetO/yBIBzvorUXq7lUBwhfpJxYViSxyluMwtoQDhE/XWN598TWMwMl1ZuImb56d7eUsuFdjgY7pJw== + +"@swc/core-darwin-x64@1.3.95": + version "1.3.95" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.3.95.tgz#7911a03f4e0f9359710d3d6ad1dba7b5569efe5d" + integrity sha512-20vF2rvUsN98zGLZc+dsEdHvLoCuiYq/1B+TDeE4oolgTFDmI1jKO+m44PzWjYtKGU9QR95sZ6r/uec0QC5O4Q== + +"@swc/core-linux-arm-gnueabihf@1.3.95": + version "1.3.95" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.95.tgz#95a2c9fc6849df9f1944957669c82c559d65b24f" + integrity sha512-oEudEM8PST1MRNGs+zu0cx5i9uP8TsLE4/L9HHrS07Ck0RJ3DCj3O2fU832nmLe2QxnAGPwBpSO9FntLfOiWEQ== + +"@swc/core-linux-arm64-gnu@1.3.95": + version "1.3.95" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.95.tgz#1914d42041469582e3cc56619890edbcc54e83d6" + integrity sha512-pIhFI+cuC1aYg+0NAPxwT/VRb32f2ia8oGxUjQR6aJg65gLkUYQzdwuUmpMtFR2WVf7WVFYxUnjo4UyMuyh3ng== + +"@swc/core-linux-arm64-musl@1.3.95": + version "1.3.95" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.95.tgz#8d73822a5807575a572d6a2d6cb64587a9f19ce6" + integrity sha512-ZpbTr+QZDT4OPJfjPAmScqdKKaT+wGurvMU5AhxLaf85DuL8HwUwwlL0n1oLieLc47DwIJEMuKQkYhXMqmJHlg== + +"@swc/core-linux-x64-gnu@1.3.95": + version "1.3.95" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.95.tgz#80467727ec11da3de49e6be2abf735964a808483" + integrity sha512-n9SuHEFtdfSJ+sHdNXNRuIOVprB8nbsz+08apKfdo4lEKq6IIPBBAk5kVhPhkjmg2dFVHVo4Tr/OHXM1tzWCCw== + +"@swc/core-linux-x64-musl@1.3.95": + version "1.3.95" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.95.tgz#675a53ac037846bd1bb9840a95ebcb5289265d3b" + integrity sha512-L1JrVlsXU3LC0WwmVnMK9HrOT2uhHahAoPNMJnZQpc18a0paO9fqifPG8M/HjNRffMUXR199G/phJsf326UvVg== + +"@swc/core-win32-arm64-msvc@1.3.95": + version "1.3.95" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.95.tgz#7f0b5d0d0a090c5c625bbc54ffaf427d861c068a" + integrity sha512-YaP4x/aZbUyNdqCBpC2zL8b8n58MEpOUpmOIZK6G1SxGi+2ENht7gs7+iXpWPc0sy7X3YPKmSWMAuui0h8lgAA== + +"@swc/core-win32-ia32-msvc@1.3.95": + version "1.3.95" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.95.tgz#06e2778549a37f0b505b24fd8f40c1c038e29f3e" + integrity sha512-w0u3HI916zT4BC/57gOd+AwAEjXeUlQbGJ9H4p/gzs1zkSHtoDQghVUNy3n/ZKp9KFod/95cA8mbVF9t1+6epQ== + +"@swc/core-win32-x64-msvc@1.3.95": + version "1.3.95" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.95.tgz#40f6b131e84ba6ed97f516edf0f9d5a766c0da64" + integrity sha512-5RGnMt0S6gg4Gc6QtPUJ3Qs9Un4sKqccEzgH/tj7V/DVTJwKdnBKxFZfgQ34OR2Zpz7zGOn889xwsFVXspVWNA== + +"@swc/core@^1.3.82": + version "1.3.95" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.3.95.tgz#2743b8460e6f29385e3dbe49f3f66277ab233536" + integrity sha512-PMrNeuqIusq9DPDooV3FfNEbZuTu5jKAc04N3Hm6Uk2Fl49cqElLFQ4xvl4qDmVDz97n3n/C1RE0/f6WyGPEiA== + dependencies: + "@swc/counter" "^0.1.1" + "@swc/types" "^0.1.5" optionalDependencies: - "@swc/core-darwin-arm64" "1.3.74" - "@swc/core-darwin-x64" "1.3.74" - "@swc/core-linux-arm-gnueabihf" "1.3.74" - "@swc/core-linux-arm64-gnu" "1.3.74" - "@swc/core-linux-arm64-musl" "1.3.74" - "@swc/core-linux-x64-gnu" "1.3.74" - "@swc/core-linux-x64-musl" "1.3.74" - "@swc/core-win32-arm64-msvc" "1.3.74" - "@swc/core-win32-ia32-msvc" "1.3.74" - "@swc/core-win32-x64-msvc" "1.3.74" + "@swc/core-darwin-arm64" "1.3.95" + "@swc/core-darwin-x64" "1.3.95" + "@swc/core-linux-arm-gnueabihf" "1.3.95" + "@swc/core-linux-arm64-gnu" "1.3.95" + "@swc/core-linux-arm64-musl" "1.3.95" + "@swc/core-linux-x64-gnu" "1.3.95" + "@swc/core-linux-x64-musl" "1.3.95" + "@swc/core-win32-arm64-msvc" "1.3.95" + "@swc/core-win32-ia32-msvc" "1.3.95" + "@swc/core-win32-x64-msvc" "1.3.95" + +"@swc/counter@^0.1.1": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.2.tgz#bf06d0770e47c6f1102270b744e17b934586985e" + integrity sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw== + +"@swc/types@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.5.tgz#043b731d4f56a79b4897a3de1af35e75d56bc63a" + integrity sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw== "@szmarczak/http-timer@^4.0.5": version "4.0.6" @@ -5834,9 +5838,9 @@ minimatch "^9.0.0" "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": - version "7.20.1" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.1.tgz#916ecea274b0c776fec721e333e55762d3a9614b" - integrity sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw== + version "7.20.3" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.3.tgz#d5625a50b6f18244425a1359a858c73d70340778" + integrity sha512-54fjTSeSHwfan8AyHWrKbfBWiEUrNTZsUwPTDSNaaP1QDQIZbeNUg3a59E9D+375MzUw/x1vx2/0F5LBz+AeYA== dependencies: "@babel/parser" "^7.20.7" "@babel/types" "^7.20.7" @@ -5845,24 +5849,24 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.4" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" - integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== + version "7.6.6" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.6.tgz#676f89f67dc8ddaae923f70ebc5f1fa800c031a8" + integrity sha512-66BXMKb/sUWbMdBNdMvajU7i/44RkrA3z/Yt1c7R5xejt8qh84iU54yUWCtm0QwGJlDcf/gg4zd/x4mpLAlb/w== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.4.1" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" - integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== + version "7.4.3" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.3.tgz#db9ac539a2fe05cfe9e168b24f360701bde41f5f" + integrity sha512-ciwyCLeuRfxboZ4isgdNZi/tkt06m8Tw6uGbBSBgWrnnZGNXiEyM27xc/PjXGQLqlZ6ylbgHMnm7ccF9tCkOeQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.20.1" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.1.tgz#dd6f1d2411ae677dcb2db008c962598be31d6acf" - integrity sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg== + version "7.20.3" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.3.tgz#a971aa47441b28ef17884ff945d0551265a2d058" + integrity sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw== dependencies: "@babel/types" "^7.20.7" @@ -5871,7 +5875,15 @@ resolved "https://registry.yarnpkg.com/@types/big.js/-/big.js-6.1.6.tgz#3d417e758483d55345a03a087f7e0c87137ca444" integrity sha512-0r9J+Zz9rYm2hOTwiMAVkm3XFQ4u5uTK37xrQMhc9bysn/sf/okzovWMYYIBMFTn/yrEZ11pusgLEaoarTlQbA== -"@types/body-parser@*", "@types/body-parser@1.19.2": +"@types/body-parser@*": + version "1.19.4" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.4.tgz#78ad68f1f79eb851aa3634db0c7f57f6f601b462" + integrity sha512-N7UDG0/xiPQa2D/XrVJXjkWbpqHCd2sBaB32ggRF2l83RhPfamgKGF8gwwqyksS95qUS5ZYF9aF+lLPRlwI2UA== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/body-parser@1.19.2": version "1.19.2" resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g== @@ -5880,9 +5892,9 @@ "@types/node" "*" "@types/bonjour@^3.5.9": - version "3.5.10" - resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275" - integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw== + version "3.5.12" + resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.12.tgz#49badafb988e6c433ca675a5fd769b93b7649fc8" + integrity sha512-ky0kWSqXVxSqgqJvPIkgFkcn4C8MnRog308Ou8xBBIVo39OmUFy+jqNe0nPwLCDFxUpmT9EvT91YzOJgkDRcFg== dependencies: "@types/node" "*" @@ -5902,16 +5914,16 @@ "@types/responselike" "^1.0.0" "@types/color-convert@*": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/color-convert/-/color-convert-2.0.0.tgz#8f5ee6b9e863dcbee5703f5a517ffb13d3ea4e22" - integrity sha512-m7GG7IKKGuJUXvkZ1qqG3ChccdIM/qBBo913z+Xft0nKCX4hAU/IxKwZBU4cpRZ7GS5kV4vOblUkILtSShCPXQ== + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/color-convert/-/color-convert-2.0.2.tgz#a5fa5da9b866732f8bf86b01964869011e2a2356" + integrity sha512-KGRIgCxwcgazts4MXRCikPbIMzBpjfdgEZSy8TRHU/gtg+f9sOfHdtK8unPfxIoBtyd2aTTwINVLSNENlC8U8A== dependencies: "@types/color-name" "*" "@types/color-name@*": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" - integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + version "1.1.2" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.2.tgz#bdeeb6fdcb78969033767951ab0cb26c7514a658" + integrity sha512-JWO/ZyxTKk0bLuOhAavGjnwLR73rUE7qzACnU7gMeyA/gdrSHm2xJwqNPipw2MtaZUaqQ2UG/q7pP6AQiZ8mqw== "@types/color@3.0.3": version "3.0.3" @@ -5921,31 +5933,31 @@ "@types/color-convert" "*" "@types/connect-history-api-fallback@^1.3.5": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz#9fd20b3974bdc2bcd4ac6567e2e0f6885cb2cf41" - integrity sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig== + version "1.5.2" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.2.tgz#acf51e088b3bb6507f7b093bd2b0de20940179cc" + integrity sha512-gX2j9x+NzSh4zOhnRPSdPPmTepS4DfxES0AvIFv3jGv5QyeAJf6u6dY5/BAoAJU9Qq1uTvwOku8SSC2GnCRl6Q== dependencies: "@types/express-serve-static-core" "*" "@types/node" "*" "@types/connect@*": - version "3.4.35" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1" - integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ== + version "3.4.37" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.37.tgz#c66a96689fd3127c8772eb3e9e5c6028ec1a9af5" + integrity sha512-zBUSRqkfZ59OcwXon4HVxhx5oWCJmc0OtBTK05M+p0dYjgN6iTwIL2T/WbsQZrEsdnwaF9cWQ+azOnpPvIqY3Q== dependencies: "@types/node" "*" "@types/cross-spawn@^6.0.2": - version "6.0.2" - resolved "https://registry.yarnpkg.com/@types/cross-spawn/-/cross-spawn-6.0.2.tgz#168309de311cd30a2b8ae720de6475c2fbf33ac7" - integrity sha512-KuwNhp3eza+Rhu8IFI5HUXRP0LIhqH5cAjubUvGXXthh4YYBuP2ntwEX+Cz8GJoZUHlKo247wPWOfA9LYEq4cw== + version "6.0.4" + resolved "https://registry.yarnpkg.com/@types/cross-spawn/-/cross-spawn-6.0.4.tgz#e658d29e2308a01f48b7b30fd8cdf07aeb2e5a82" + integrity sha512-GGLpeThc2Bu8FBGmVn76ZU3lix17qZensEI4/MPty0aZpm2CHfgEMis31pf5X5EiudYKcPAsWciAsCALoPo5dw== dependencies: "@types/node" "*" "@types/detect-port@^1.3.0": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@types/detect-port/-/detect-port-1.3.3.tgz#124c5d4c283f48a21f80826bcf39433b3e64aa81" - integrity sha512-bV/jQlAJ/nPY3XqSatkGpu+nGzou+uSwrH1cROhn+jBFg47yaNH+blW4C7p9KhopC7QxCv/6M86s37k8dMk0Yg== + version "1.3.4" + resolved "https://registry.yarnpkg.com/@types/detect-port/-/detect-port-1.3.4.tgz#cd34ab0f26391f5b9c5c9bb4c9e370dfbf9e4d05" + integrity sha512-HveFGabu3IwATqwLelcp6UZ1MIzSFwk+qswC9luzzHufqAwhs22l7KkINDLWRfXxIPTYnSZ1DuQBEgeVPgUOSA== "@types/doctrine@^0.0.3": version "0.0.3" @@ -5953,40 +5965,40 @@ integrity sha512-w5jZ0ee+HaPOaX25X2/2oGR/7rgAQSYII7X7pp0m9KgBfMP7uKfMfTvcpl5Dj+eDBbpxKGiqE+flqDr6XTd2RA== "@types/ejs@^3.1.1": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@types/ejs/-/ejs-3.1.2.tgz#75d277b030bc11b3be38c807e10071f45ebc78d9" - integrity sha512-ZmiaE3wglXVWBM9fyVC17aGPkLo/UgaOjEiI2FXQfyczrCefORPxIe+2dVmnmk3zkVIbizjrlQzmPGhSYGXG5g== + version "3.1.4" + resolved "https://registry.yarnpkg.com/@types/ejs/-/ejs-3.1.4.tgz#b9919c89767493b6443f85994ae6be6e49011b5c" + integrity sha512-fnM/NjByiWdSRJRrmGxgqOSAnmOnsvX1QcNYk5TVyIIj+7ZqOKMb9gQa4OIl/lil2w/8TiTWV+nz3q8yqxez/w== "@types/emscripten@^1.39.6": - version "1.39.7" - resolved "https://registry.yarnpkg.com/@types/emscripten/-/emscripten-1.39.7.tgz#3025183ea56e12bf4d096aadc48ce74ca051233d" - integrity sha512-tLqYV94vuqDrXh515F/FOGtBcRMTPGvVV1LzLbtYDcQmmhtpf/gLYf+hikBbQk8MzOHNz37wpFfJbYAuSn8HqA== + version "1.39.9" + resolved "https://registry.yarnpkg.com/@types/emscripten/-/emscripten-1.39.9.tgz#cbe73a8d153fc714a2e3177fbda2d7332d45efa7" + integrity sha512-ILdWj4XYtNOqxJaW22NEQx2gJsLfV5ncxYhhGX1a1H1lXl2Ta0gUz7QOnOoF1xQbJwWDjImi8gXN9mKdIf6n9g== "@types/eslint-scope@^3.7.3": - version "3.7.4" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" - integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== + version "3.7.6" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.6.tgz#585578b368ed170e67de8aae7b93f54a1b2fdc26" + integrity sha512-zfM4ipmxVKWdxtDaJ3MP3pBurDXOCoyjvlpE3u6Qzrmw4BPbfm4/ambIeTk/r/J0iq/+2/xp0Fmt+gFvXJY2PQ== dependencies: "@types/eslint" "*" "@types/estree" "*" "@types/eslint@*": - version "8.44.0" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.0.tgz#55818eabb376e2272f77fbf5c96c43137c3c1e53" - integrity sha512-gsF+c/0XOguWgaOgvFs+xnnRqt9GwgTvIks36WpE6ueeI4KCEHHd8K/CKHqhOqrJKsYH8m27kRzQEvWXAwXUTw== + version "8.44.6" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.6.tgz#60e564551966dd255f4c01c459f0b4fb87068603" + integrity sha512-P6bY56TVmX8y9J87jHNgQh43h6VVU+6H7oN7hgvivV81K2XY8qJZ5vqPy/HdUoVIelii2kChYVzQanlswPWVFw== dependencies: "@types/estree" "*" "@types/json-schema" "*" "@types/estree@*", "@types/estree@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" - integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== + version "1.0.3" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.3.tgz#2be19e759a3dd18c79f9f436bd7363556c1a73dd" + integrity sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ== "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": - version "4.17.35" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz#c95dd4424f0d32e525d23812aa8ab8e4d3906c4f" - integrity sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg== + version "4.17.39" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.39.tgz#2107afc0a4b035e6cb00accac3bdf2d76ae408c8" + integrity sha512-BiEUfAiGCOllomsRAZOiMFP7LAnrifHpt56pc4Z7l9K6ACyN06Ns1JLMBxwkfLOjJRlSf06NwWsT7yzfpaVpyQ== dependencies: "@types/node" "*" "@types/qs" "*" @@ -5994,9 +6006,9 @@ "@types/send" "*" "@types/express@*", "@types/express@^4.17.13", "@types/express@^4.7.0": - version "4.17.17" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4" - integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q== + version "4.17.20" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.20.tgz#e7c9b40276d29e38a4e3564d7a3d65911e2aa433" + integrity sha512-rOaqlkgEvOW495xErXMsmyX3WKBInbhG5eqojXYi3cGUaLoRDlXa5d52fkfWZT963AZ3v2eZ4MbKE6WpDAGVsw== dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "^4.17.33" @@ -6008,6 +6020,14 @@ resolved "https://registry.yarnpkg.com/@types/find-cache-dir/-/find-cache-dir-3.2.1.tgz#7b959a4b9643a1e6a1a5fe49032693cc36773501" integrity sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw== +"@types/fs-extra@11.0.1": + version "11.0.1" + resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-11.0.1.tgz#f542ec47810532a8a252127e6e105f487e0a6ea5" + integrity sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA== + dependencies: + "@types/jsonfile" "*" + "@types/node" "*" + "@types/glob@^7.1.1": version "7.2.0" resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" @@ -6030,9 +6050,9 @@ integrity sha512-7N+mDtZ1pmya2RRFPPl4KYc2TRgiqCNBLUZfyrKfER+u751JgCO+C24/LzF70UmUm/zhHUbzRZ5mtfaxekQ1ZQ== "@types/graceful-fs@^4.1.3": - version "4.1.6" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" - integrity sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw== + version "4.1.8" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.8.tgz#417e461e4dc79d957dc3107f45fe4973b09c2915" + integrity sha512-NhRH7YzWq8WiNKVavKPBmtLYZHxNY19Hh+az28O/phfp68CF45pMFud+ZzJ8ewnxnC5smIdF3dqFeiSUQ5I+pw== dependencies: "@types/node" "*" @@ -6042,38 +6062,38 @@ integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg== "@types/http-cache-semantics@*": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" - integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz#a3ff232bf7d5c55f38e4e45693eda2ebb545794d" + integrity sha512-V46MYLFp08Wf2mmaBhvgjStM3tPa+2GAdy/iqoX+noX1//zje2x4XmrIU0cAwyClATsTmahbtoQ2EwP7I5WSiA== "@types/http-errors@*": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.1.tgz#20172f9578b225f6c7da63446f56d4ce108d5a65" - integrity sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ== + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.3.tgz#c54e61f79b3947d040f150abd58f71efb422ff62" + integrity sha512-pP0P/9BnCj1OVvQR2lF41EkDG/lWWnDyA203b/4Fmi2eTyORnBtcDoKDwjWQthELrBvWkMOrvSOnZ8OVlW6tXA== "@types/http-proxy@^1.17.8": - version "1.17.11" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.11.tgz#0ca21949a5588d55ac2b659b69035c84bd5da293" - integrity sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA== + version "1.17.13" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.13.tgz#dd3a4da550580eb0557d4c7128a2ff1d1a38d465" + integrity sha512-GkhdWcMNiR5QSQRYnJ+/oXzu0+7JJEPC8vkWXK351BkhjraZF+1W13CUYARUvX9+NqIU2n6YHA4iwywsc/M6Sw== dependencies: "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#fdfdd69fa16d530047d9963635bd77c71a08c068" + integrity sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ== "@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.2.tgz#394798d5f727402eb5ec99eb9618ffcd2b7645a1" + integrity sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" - integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.3.tgz#0313e2608e6d6955d195f55361ddeebd4b74c6e7" + integrity sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg== dependencies: "@types/istanbul-lib-report" "*" @@ -6095,15 +6115,22 @@ parse5 "^7.0.0" "@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.12" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" - integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== + version "7.0.14" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.14.tgz#74a97a5573980802f32c8e47b663530ab3b6b7d1" + integrity sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw== "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== +"@types/jsonfile@*": + version "6.1.3" + resolved "https://registry.yarnpkg.com/@types/jsonfile/-/jsonfile-6.1.3.tgz#683d447b413119393e913ecd414a2bc0e5d0f4b9" + integrity sha512-/yqTk2SZ1wIezK0hiRZD7RuSf4B3whFxFamB1kGStv+8zlWScTMcHanzfc0XKWs5vA1TkHeckBlOyM8jxU8nHA== + dependencies: + "@types/node" "*" + "@types/jsonwebtoken@9.0.2": version "9.0.2" resolved "https://registry.yarnpkg.com/@types/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz#9eeb56c76dd555039be2a3972218de5bd3b8d83e" @@ -6118,35 +6145,40 @@ dependencies: "@types/node" "*" -"@types/lodash@4.14.195", "@types/lodash@^4.14.167": +"@types/lodash@4.14.195": version "4.14.195" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.195.tgz#bafc975b252eb6cea78882ce8a7b6bf22a6de632" integrity sha512-Hwx9EUgdwf2GLarOjQp5ZH8ZmblzcbTBC2wtQWNKARBSxM9ezRIAUpeDTgoQRAFB0+8CNWXVA9+MaSOzOF3nPg== +"@types/lodash@^4.14.167": + version "4.14.200" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.200.tgz#435b6035c7eba9cdf1e039af8212c9e9281e7149" + integrity sha512-YI/M/4HRImtNf3pJgbF+W6FrXovqj+T+/HpENLTooK9PnkacBsDpeP3IpHab40CClUfhNmdM2WTNP2sa2dni5Q== + "@types/marked@4.0.8": version "4.0.8" resolved "https://registry.yarnpkg.com/@types/marked/-/marked-4.0.8.tgz#b316887ab3499d0a8f4c70b7bd8508f92d477955" integrity sha512-HVNzMT5QlWCOdeuBsgXP8EZzKUf0+AXzN+sLmjvaB3ZlLqO+e4u0uXrdw9ub69wBKFs+c6/pA4r9sy6cCDvImw== "@types/mdx@^2.0.0": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.5.tgz#9a85a8f70c7c4d9e695a21d5ae5c93645eda64b1" - integrity sha512-76CqzuD6Q7LC+AtbPqrvD9AqsN0k8bsYo2bM2J8pmNldP1aIPAbzUQ7QbobyXL4eLr1wK5x8FZFe8eF/ubRuBg== + version "2.0.9" + resolved "https://registry.yarnpkg.com/@types/mdx/-/mdx-2.0.9.tgz#80971e367bb884350ab5b2ce8fc06b34960170e7" + integrity sha512-OKMdj17y8Cs+k1r0XFyp59ChSOwf8ODGtMQ4mnpfz5eFDk1aO41yN3pSKGuvVzmWAkFp37seubY1tzOVpwfWwg== "@types/mime-types@^2.1.0": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@types/mime-types/-/mime-types-2.1.1.tgz#d9ba43490fa3a3df958759adf69396c3532cf2c1" - integrity sha512-vXOTGVSLR2jMw440moWTC7H19iUyLtP3Z1YTj7cSsubOICinjMxFeb/V57v9QdyyPGbbWolUFSSmSiRSn94tFw== + version "2.1.3" + resolved "https://registry.yarnpkg.com/@types/mime-types/-/mime-types-2.1.3.tgz#0688436864f87a0c8e33ca12be60cd791cc24b36" + integrity sha512-bvxCbHeeS7quxS7uOJShyoOQj/BfLabhF6mk9Rmr+2MRfW8W1yxyyL/0GTxLFTHen41GrIw4K3D4DrLouhb8vg== "@types/mime@*": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10" - integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA== + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.3.tgz#886674659ce55fe7c6c06ec5ca7c0eb276a08f91" + integrity sha512-i8MBln35l856k5iOhKk2XJ4SeAWg75mLIpZB4v6imOagKL6twsukBZGDMNhdOVk7yRFTMPpfILocMos59Q1otQ== "@types/mime@^1": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" - integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== + version "1.3.4" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.4.tgz#a4ed836e069491414bab92c31fdea9e557aca0d9" + integrity sha512-1Gjee59G25MrQGk8bsNvC6fxNiRgUlGn2wlhGf95a59DrprnnHk80FIMMFG9XHMdrfsuA119ht06QPDXA1Z7tw== "@types/minimatch@*", "@types/minimatch@^5.1.2": version "5.1.2" @@ -6154,37 +6186,60 @@ integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== "@types/node-fetch@^2.5.7", "@types/node-fetch@^2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.4.tgz#1bc3a26de814f6bf466b25aeb1473fa1afe6a660" - integrity sha512-1ZX9fcN4Rvkvgv4E6PAY5WXUFWFcRWxZa3EW83UjycOB9ljJCedb2CupIP4RZMEwF/M3eTcCihbBRgwtGbg5Rg== + version "2.6.7" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.7.tgz#a1abe2ce24228b58ad97f99480fdcf9bbc6ab16d" + integrity sha512-lX17GZVpJ/fuCjguZ5b3TjEbSENxmEk1B2z02yoXSK9WMEWRivhdSY73wWMn6bpcCDAOh6qAdktpKHIlkDk2lg== dependencies: "@types/node" "*" - form-data "^3.0.0" + form-data "^4.0.0" + +"@types/node-forge@^1.3.0": + version "1.3.8" + resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.8.tgz#044ad98354ff309a031a55a40ad122f3be1ac2bb" + integrity sha512-vGXshY9vim9CJjrpcS5raqSjEfKlJcWy2HNdgUasR66fAnVEYarrf1ULV4nfvpC1nZq/moA9qyqBcu83x+Jlrg== + dependencies: + "@types/node" "*" + +"@types/node@*", "@types/node@>=8.1.0": + version "20.8.9" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.9.tgz#646390b4fab269abce59c308fc286dcd818a2b08" + integrity sha512-UzykFsT3FhHb1h7yD4CA4YhBHq545JC0YnEz41xkipN88eKQtL6rSgocL5tbAP6Ola9Izm/Aw4Ora8He4x0BHg== + dependencies: + undici-types "~5.26.4" -"@types/node@*", "@types/node@20.4.2", "@types/node@>=8.1.0": +"@types/node@20.4.2": version "20.4.2" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.2.tgz#129cc9ae69f93824f92fac653eebfb4812ab4af9" integrity sha512-Dd0BYtWgnWJKwO1jkmTrzofjK2QXXcai0dmtzvIBhcA+RsG5h8R3xlyta0kGOZRNfL9GuRtb1knmPEhQrePCEw== "@types/node@^16.0.0": - version "16.18.38" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.38.tgz#1dcdb6c54d02b323f621213745f2e44af30c73e6" - integrity sha512-6sfo1qTulpVbkxECP+AVrHV9OoJqhzCsfTNp5NIG+enM4HyM3HvZCO798WShIXBN0+QtDIcutJCjsVYnQP5rIQ== + version "16.18.59" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.18.59.tgz#4cdbd631be6d9be266a96fb17b5d0d7ad6bbe26c" + integrity sha512-PJ1w2cNeKUEdey4LiPra0ZuxZFOGvetswE8qHRriV/sUkL5Al4tTmPV9D2+Y/TPIxTHHgxTfRjZVKWhPw/ORhQ== + +"@types/node@^18.0.0": + version "18.18.7" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.18.7.tgz#bb3a7068dc4ba421b6968f2a259298b3a4e129e8" + integrity sha512-bw+lEsxis6eqJYW8Ql6+yTqkE6RuFtsQPSe5JxXbqYRFQEER5aJA9a5UH9igqDWm3X4iLHIKOHlnAXLM4mi7uQ== + dependencies: + undici-types "~5.26.4" "@types/normalize-package-data@^2.4.0": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" - integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== + version "2.4.3" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.3.tgz#291c243e4b94dbfbc0c0ee26b7666f1d5c030e2c" + integrity sha512-ehPtgRgaULsFG8x0NeYJvmyH1hmlfsNLujHe9dQEia/7MAJYdzMSi19JtchUHjmBA6XC/75dK55mzZH+RyieSg== "@types/npmlog@^4.1.2": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@types/npmlog/-/npmlog-4.1.4.tgz#30eb872153c7ead3e8688c476054ddca004115f6" - integrity sha512-WKG4gTr8przEZBiJ5r3s8ZIAoMXNbOgQ+j/d5O4X3x6kZJRLNvyUJuUK/KoG3+8BaOHPhp2m7WC6JKKeovDSzQ== + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/npmlog/-/npmlog-4.1.5.tgz#41f1b95437f9c86cbb326bb07f0d5683f905bf4f" + integrity sha512-Fl3TEbwPoR7V1z6CMJ18whXOUkOYqF5eCkGKTir2VuevdLYUmcwj9mQdvXzuY0oagZBbsy0J7df41jn+ZcwGRA== + dependencies: + "@types/node" "*" "@types/oauth@*": - version "0.9.1" - resolved "https://registry.yarnpkg.com/@types/oauth/-/oauth-0.9.1.tgz#e17221e7f7936b0459ae7d006255dff61adca305" - integrity sha512-a1iY62/a3yhZ7qH7cNUsxoI3U/0Fe9+RnuFrpTKr+0WVOzbKlSLojShCKe20aOD1Sppv+i8Zlq0pLDuTJnwS4A== + version "0.9.3" + resolved "https://registry.yarnpkg.com/@types/oauth/-/oauth-0.9.3.tgz#4be90beb6c4a23e1a1614c966a165af1ef5e5e0d" + integrity sha512-avZiwxSz/WS6EaEjhchzXKgWtlGGYGnEVJoHuQuDLHf7gIW1Gmm9eIxOMuJ6umQNNKZkJ3Uy+C/rLzEvL3I8Sw== dependencies: "@types/node" "*" @@ -6196,9 +6251,9 @@ "@types/node" "*" "@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.1.tgz#27f7559836ad796cea31acb63163b203756a5b4e" + integrity sha512-3YmXzzPAdOTVljVMkTMBdBEvlOLg2cDQaDhnnhT3nT9uDbnJzjWhKlzb+desT12Y7tGqaN6d+AbozcKzyL36Ng== "@types/passport-google-oauth20@2.0.11": version "2.0.11" @@ -6210,40 +6265,35 @@ "@types/passport-oauth2" "*" "@types/passport-oauth2@*": - version "1.4.12" - resolved "https://registry.yarnpkg.com/@types/passport-oauth2/-/passport-oauth2-1.4.12.tgz#c2ae0ee3b16646188d8b0b6cdbc6880a0247dc5f" - integrity sha512-RZg6cYTyEGinrZn/7REYQds6zrTxoBorX1/fdaz5UHzkG8xdFE7QQxkJagCr2ETzGII58FAFDmnmbTUVMrltNA== + version "1.4.14" + resolved "https://registry.yarnpkg.com/@types/passport-oauth2/-/passport-oauth2-1.4.14.tgz#6982575b960eb7f001e28103ac3562349f1cded3" + integrity sha512-wZBvnRwqdvm35l1Jn9ebYm2Q7UtxYIdBu1PjoKXMoxJytniVjXxYJmrlDXn5fMZROWbJbnEnp1XSDANqtvMdGQ== dependencies: "@types/express" "*" "@types/oauth" "*" "@types/passport" "*" "@types/passport@*": - version "1.0.12" - resolved "https://registry.yarnpkg.com/@types/passport/-/passport-1.0.12.tgz#7dc8ab96a5e895ec13688d9e3a96920a7f42e73e" - integrity sha512-QFdJ2TiAEoXfEQSNDISJR1Tm51I78CymqcBa8imbjo6dNNu+l2huDxxbDEIoFIwOSKMkOfHEikyDuZ38WwWsmw== + version "1.0.14" + resolved "https://registry.yarnpkg.com/@types/passport/-/passport-1.0.14.tgz#7ca891b04ae08d7ca4dbf30fece7c86174a16db9" + integrity sha512-D6p2ygR2S7Cq5PO7iUaEIQu/5WrM0tONu6Lxgk0C9r3lafQIlVpWCo3V/KI9To3OqHBxcfQaOeK+8AvwW5RYmw== dependencies: "@types/express" "*" -"@types/prettier@^2.1.5": - version "2.7.3" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" - integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== - "@types/pretty-hrtime@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/pretty-hrtime/-/pretty-hrtime-1.0.1.tgz#72a26101dc567b0d68fd956cf42314556e42d601" - integrity sha512-VjID5MJb1eGKthz2qUerWT8+R4b9N+CHvGCzg9fn4kWZgaF9AhdYikQio3R7wV8YY1NsQKPaCwKz1Yff+aHNUQ== + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/pretty-hrtime/-/pretty-hrtime-1.0.2.tgz#9b6e102bc2e1eea1c1c7fadf144483ce2687f233" + integrity sha512-vyv9knII8XeW8TnXDcGH7HqG6FeR56ESN6ExM34d/U8Zvs3xuG34euV6CVyB7KEYI7Ts4lQM8b4NL72e7UadnA== "@types/prop-types@*": - version "15.7.5" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" - integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w== + version "15.7.9" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.9.tgz#b6f785caa7ea1fe4414d9df42ee0ab67f23d8a6d" + integrity sha512-n1yyPsugYNSmHgxDFjicaI2+gCNjsBck8UX9kuofAKlc0h1bL+20oSF72KeNaW2DUlesbEVCFgyV2dPGTiY42g== "@types/qs@*", "@types/qs@^6.9.5": - version "6.9.7" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" - integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + version "6.9.9" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.9.tgz#66f7b26288f6799d279edf13da7ccd40d2fa9197" + integrity sha512-wYLxw35euwqGvTDx6zfY1vokBFnsK0HNrzc6xNHchxfO2hpuRg74GbkEW7e3sSmPvj0TjCDT1VCa6OtHXnubsg== "@types/ramda@0.29.3": version "0.29.3" @@ -6253,39 +6303,39 @@ types-ramda "^0.29.4" "@types/range-parser@*": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc" - integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw== + version "1.2.6" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.6.tgz#7cb33992049fd7340d5b10c0098e104184dfcd2a" + integrity sha512-+0autS93xyXizIYiyL02FCY8N+KkKPhILhcUSA276HxzreZ16kl+cmwvV2qAM/PuCCwPXzOXOWhiPcw20uSFcA== "@types/react-dom@^16.9.14": - version "16.9.19" - resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.19.tgz#6a139c26b02dec533a7fa131f084561babb10a8f" - integrity sha512-xC8D280Bf6p0zguJ8g62jcEOKZiUbx9sIe6O3tT/lKfR87A7A6g65q13z6D5QUMIa/6yFPkNhqjF5z/VVZEYqQ== + version "16.9.21" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.21.tgz#4f937ae64f39c2766401750e069319224348306c" + integrity sha512-QdKxI502bJXRfFR8/pH0iCyt51EcPf1+hgCIZKJ9SBunj0NZpKK5j1FDoCGeGj/6ROK8gUesj41V3C64Rz2kHw== dependencies: "@types/react" "^16" "@types/react@>=16": - version "18.2.15" - resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.15.tgz#14792b35df676c20ec3cf595b262f8c615a73066" - integrity sha512-oEjE7TQt1fFTFSbf8kkNuc798ahTUzn3Le67/PWjE8MAfYAD/qB7O8hSTcromLFqHCt9bcdOg5GXMokzTjJ5SA== + version "18.2.33" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.33.tgz#055356243dc4350a9ee6c6a2c07c5cae12e38877" + integrity sha512-v+I7S+hu3PIBoVkKGpSYYpiBT1ijqEzWpzQD62/jm4K74hPpSP7FF9BnKG6+fg2+62weJYkkBWDJlZt5JO/9hg== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" csstype "^3.0.2" "@types/react@^16", "@types/react@^16.14.34": - version "16.14.43" - resolved "https://registry.yarnpkg.com/@types/react/-/react-16.14.43.tgz#bc6e7a0e99826809591d38ddf1193955de32c446" - integrity sha512-7zdjv7jvoLLQg1tTvpQsm+hyNUMT2mPlNV1+d0I8fbGhkJl82spopMyBlu4wb1dviZAxpGdk5eHu/muacknnfw== + version "16.14.50" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.14.50.tgz#ec9c30f2f0c7d9aa748949536d88e3439526a25d" + integrity sha512-7TWZ/HjhXsRK3BbhSFxTinbSft3sUXJAU3ONngT0rpcKJaIOlxkRke4bidqQTopUbEv1ApC5nlSEkIpX43MkTg== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" csstype "^3.0.2" "@types/responselike@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" - integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.2.tgz#8de1b0477fd7c12df77e50832fa51701a8414bd6" + integrity sha512-/4YQT5Kp6HxUDb4yhRkm0bJ7TbjvTddqX7PZ5hz6qV3pxSo72f/6YPRo+Mu2DU307tm9IioO69l7uAwn5XNcFA== dependencies: "@types/node" "*" @@ -6295,34 +6345,34 @@ integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== "@types/scheduler@*": - version "0.16.3" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" - integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ== + version "0.16.5" + resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.5.tgz#4751153abbf8d6199babb345a52e1eb4167d64af" + integrity sha512-s/FPdYRmZR8SjLWGMCuax7r3qCWQw9QKHzXVukAuuIJkXkDRwp+Pu5LMIVFi0Fxbav35WURicYr8u1QsoybnQw== "@types/semver@^7.3.12", "@types/semver@^7.3.4": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a" - integrity sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw== + version "7.5.4" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.4.tgz#0a41252ad431c473158b22f9bfb9a63df7541cff" + integrity sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ== "@types/send@*": - version "0.17.1" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.1.tgz#ed4932b8a2a805f1fe362a70f4e62d0ac994e301" - integrity sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q== + version "0.17.3" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.3.tgz#81b2ea5a3a18aad357405af2d643ccbe5a09020b" + integrity sha512-/7fKxvKUoETxjFUsuFlPB9YndePpxxRAOfGC/yJdc9kTjTeP5kRCTzfnE8kPUKCeyiyIZu0YQ76s50hCedI1ug== dependencies: "@types/mime" "^1" "@types/node" "*" "@types/serve-index@^1.9.1": - version "1.9.1" - resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278" - integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg== + version "1.9.3" + resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.3.tgz#af9403916eb6fbf7d6ec6f47b2a4c46eb3222cc9" + integrity sha512-4KG+yMEuvDPRrYq5fyVm/I2uqAJSAwZK9VSa+Zf+zUq9/oxSSvy3kkIqyL+jjStv6UCVi8/Aho0NHtB1Fwosrg== dependencies: "@types/express" "*" "@types/serve-static@*", "@types/serve-static@^1.13.10": - version "1.15.2" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.2.tgz#3e5419ecd1e40e7405d34093f10befb43f63381a" - integrity sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw== + version "1.15.4" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.4.tgz#44b5895a68ca637f06c229119e1c774ca88f81b2" + integrity sha512-aqqNfs1XTF0HDrFdlY//+SGUxmdSUbjeRXb5iaZc3x0/vMbYmdw9qvOgHWOyyLFxSSRnUuP5+724zBgfw8/WAw== dependencies: "@types/http-errors" "*" "@types/mime" "*" @@ -6334,58 +6384,58 @@ integrity sha512-IFQTJARgMUBF+xVd2b+hIgXWrZEjND3vJtRCvIelcFB5SIXfjV4bOHbHJ0eXKh+0COrBRc8MqteKAz/j88rE0A== "@types/sizzle@^2.3.2": - version "2.3.3" - resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.3.tgz#ff5e2f1902969d305225a047c8a0fd5c915cebef" - integrity sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ== + version "2.3.5" + resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.5.tgz#d93dd29cdcd5801d90be968073b09a6b370780e4" + integrity sha512-tAe4Q+OLFOA/AMD+0lq8ovp8t3ysxAOeaScnfNdZpUxaGl51ZMDEITxkvFl1STudQ58mz6gzVGl9VhMKhwRnZQ== "@types/sockjs@^0.3.33": - version "0.3.33" - resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f" - integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw== + version "0.3.35" + resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.35.tgz#f4a568c73d2a8071944bd6ffdca0d4e66810cd21" + integrity sha512-tIF57KB+ZvOBpAQwSaACfEu7htponHXaFzP7RfKYgsOS0NoYnn+9+jzp7bbq4fWerizI3dTB4NfAZoyeQKWJLw== dependencies: "@types/node" "*" "@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + version "2.0.2" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.2.tgz#01284dde9ef4e6d8cef6422798d9a3ad18a66f8b" + integrity sha512-g7CK9nHdwjK2n0ymT2CW698FuWJRIx+RP6embAzZ2Qi8/ilIrA1Imt2LVSeHUzKvpoi7BhmmQcXz95eS0f2JXw== "@types/tough-cookie@*", "@types/tough-cookie@^4.0.2": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.2.tgz#6286b4c7228d58ab7866d19716f3696e03a09397" - integrity sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw== + version "4.0.4" + resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.4.tgz#cf2f0c7c51b985b6afecea73eb2cd65421ecb717" + integrity sha512-95Sfz4nvMAb0Nl9DTxN3j64adfwfbBPEYq14VN7zT5J5O2M9V6iZMIIQU1U+pJyl9agHYHNCqhCXgyEtIRRa5A== "@types/unist@^2.0.0": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.7.tgz#5b06ad6894b236a1d2bd6b2f07850ca5c59cf4d6" - integrity sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g== + version "2.0.9" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.9.tgz#72e164381659a49557b0a078b28308f2c6a3e1ce" + integrity sha512-zC0iXxAv1C1ERURduJueYzkzZ2zaGyc+P2c95hgkikHPr3z8EdUZOlgEQ5X0DRmwDZn+hekycQnoeiiRVrmilQ== "@types/validator@^13.7.10": - version "13.7.17" - resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.7.17.tgz#0a6d1510395065171e3378a4afc587a3aefa7cc1" - integrity sha512-aqayTNmeWrZcvnG2MG9eGYI6b7S5fl+yKgPs6bAjOTwPS316R5SxBGKvtSExfyoJU7pIeHJfsHI0Ji41RVMkvQ== + version "13.11.5" + resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.11.5.tgz#1911964fd5556b08d3479d1ded977c06f89a44a7" + integrity sha512-xW4qsT4UIYILu+7ZrBnfQdBYniZrMLYYK3wN9M/NdeIHgBN5pZI2/8Q7UfdWIcr5RLJv/OGENsx91JIpUUoC7Q== "@types/webpack-env@^1.18.0": - version "1.18.1" - resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.18.1.tgz#49699bb508961e14a3bfb68c78cd87b296889d1d" - integrity sha512-D0HJET2/UY6k9L6y3f5BL+IDxZmPkYmPT4+qBrRdmRLYRuV0qNKizMgTvYxXZYn+36zjPeoDZAEYBCM6XB+gww== + version "1.18.3" + resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.18.3.tgz#e81f769199a5609c751f34fcc6f6095ceac7831f" + integrity sha512-v4CH6FLBCftYGFAswDhzFLjKgucXsOkIf5Mzl8ZZhEtC6oye9whFInNPKszNB9AvX7JEZMtpXxWctih6addP+Q== "@types/ws@^8.5.5": - version "8.5.5" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.5.tgz#af587964aa06682702ee6dcbc7be41a80e4b28eb" - integrity sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg== + version "8.5.8" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.8.tgz#13efec7bd439d0bdf2af93030804a94f163b1430" + integrity sha512-flUksGIQCnJd6sZ1l5dqCEG/ksaoAg/eUwiLAGTJQcfgvZJKF++Ta4bJA6A5aPSJmsr+xlseHn4KLgVlNnvPTg== dependencies: "@types/node" "*" "@types/yargs-parser@*": - version "21.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" - integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + version "21.0.2" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.2.tgz#7bd04c5da378496ef1695a1008bf8f71847a8b8b" + integrity sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw== "@types/yargs@^17.0.8": - version "17.0.24" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.24.tgz#b3ef8d50ad4aa6aecf6ddc97c580a00f5aa11902" - integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw== + version "17.0.29" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.29.tgz#06aabc72497b798c643c812a8b561537fea760cf" + integrity sha512-nacjqA3ee9zRF/++a3FUY1suHTFKZeHba2n8WeDw9cCVdmzmHpIxyzOJBcpHvvEmS8E9KqWlSnWHUkOrkhWcvA== dependencies: "@types/yargs-parser" "*" @@ -6791,7 +6841,7 @@ acorn@^7.1.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.1.0, acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0: +acorn@^8.1.0, acorn@^8.10.0, acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0: version "8.10.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== @@ -6821,13 +6871,18 @@ agent-base@6, agent-base@^6.0.2: dependencies: debug "4" +agent-base@^7.0.2: + version "7.1.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.0.tgz#536802b76bc0b34aa50195eb2442276d613e3434" + integrity sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg== + dependencies: + debug "^4.3.4" + agentkeepalive@^4.2.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.3.0.tgz#bb999ff07412653c1803b3ced35e50729830a255" - integrity sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg== + version "4.5.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923" + integrity sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew== dependencies: - debug "^4.1.0" - depd "^2.0.0" humanize-ms "^1.2.1" aggregate-error@^3.0.0: @@ -7104,14 +7159,14 @@ array-flatten@^2.1.2: integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== array-includes@^3.1.6: - version "3.1.6" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f" - integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw== + version "3.1.7" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" + integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" - get-intrinsic "^1.1.3" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" is-string "^1.0.7" array-timsort@^1.0.3: @@ -7147,25 +7202,38 @@ array-unique@^0.3.2: integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== array.prototype.flat@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2" - integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA== + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" array.prototype.flatmap@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz#1aae7903c2100433cb8261cd4ed310aab5c4a183" - integrity sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ== + version "1.3.2" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" +arraybuffer.prototype.slice@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" + integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" + arrify@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" @@ -7193,14 +7261,15 @@ assert-plus@1.0.0, assert-plus@^1.0.0: integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== assert@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-2.0.0.tgz#95fc1c616d48713510680f2eaf2d10dd22e02d32" - integrity sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A== + version "2.1.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-2.1.0.tgz#6d92a238d05dc02e7427c881fb8be81c8448b2dd" + integrity sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw== dependencies: - es6-object-assign "^1.1.0" - is-nan "^1.2.1" - object-is "^1.0.1" - util "^0.12.0" + call-bind "^1.0.2" + is-nan "^1.3.2" + object-is "^1.1.5" + object.assign "^4.1.4" + util "^0.12.5" assign-symbols@^1.0.0: version "1.0.0" @@ -7268,7 +7337,7 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@10.4.14, autoprefixer@^10.4.9: +autoprefixer@10.4.14: version "10.4.14" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.14.tgz#e28d49902f8e759dd25b153264e862df2705f79d" integrity sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ== @@ -7280,6 +7349,18 @@ autoprefixer@10.4.14, autoprefixer@^10.4.9: picocolors "^1.0.0" postcss-value-parser "^4.2.0" +autoprefixer@^10.4.9: + version "10.4.16" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.16.tgz#fad1411024d8670880bdece3970aa72e3572feb8" + integrity sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ== + dependencies: + browserslist "^4.21.10" + caniuse-lite "^1.0.30001538" + fraction.js "^4.3.6" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + available-typed-arrays@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" @@ -7295,15 +7376,6 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== -axios@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.1.3.tgz#8274250dada2edf53814ed7db644b9c2866c1e35" - integrity sha512-00tXVRwKx/FZr/IDVFt4C+f9FYairX517WoGCL6dpOntqLkZofjhu43F/Xl44UOpqa+9sLFDrG/XAnFsUYgkDA== - dependencies: - follow-redirects "^1.15.0" - form-data "^4.0.0" - proxy-from-env "^1.1.0" - axios@^0.21.4: version "0.21.4" resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" @@ -7311,10 +7383,10 @@ axios@^0.21.4: dependencies: follow-redirects "^1.14.0" -axios@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.4.0.tgz#38a7bf1224cd308de271146038b551d725f0be1f" - integrity sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA== +axios@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.5.1.tgz#11fbaa11fc35f431193a9564109c88c1f27b585f" + integrity sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A== dependencies: follow-redirects "^1.15.0" form-data "^4.0.0" @@ -7339,15 +7411,15 @@ babel-core@^7.0.0-bridge.0: resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg== -babel-jest@^29.6.1: - version "29.6.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.6.1.tgz#a7141ad1ed5ec50238f3cd36127636823111233a" - integrity sha512-qu+3bdPEQC6KZSPz+4Fyjbga5OODNcp49j6GKzG1EKbkfyJBxEYGVUmVGpwCSeGouG52R4EgYMLb6p9YeEEQ4A== +babel-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5" + integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== dependencies: - "@jest/transform" "^29.6.1" + "@jest/transform" "^29.7.0" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^29.5.0" + babel-preset-jest "^29.6.3" chalk "^4.0.0" graceful-fs "^4.2.9" slash "^3.0.0" @@ -7380,10 +7452,10 @@ babel-plugin-istanbul@6.1.1, babel-plugin-istanbul@^6.1.1: istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz#a97db437936f441ec196990c9738d4b88538618a" - integrity sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w== +babel-plugin-jest-hoist@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz#aadbe943464182a8922c3c927c3067ff40d24626" + integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" @@ -7413,14 +7485,14 @@ babel-plugin-polyfill-corejs2@^0.3.3: "@babel/helper-define-polyfill-provider" "^0.3.3" semver "^6.1.1" -babel-plugin-polyfill-corejs2@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.4.tgz#9f9a0e1cd9d645cc246a5e094db5c3aa913ccd2b" - integrity sha512-9WeK9snM1BfxB38goUEv2FLnA6ja07UMfazFHzCXUb3NyDZAwfXvQiURQ6guTTMeHcOsdknULm1PDhs4uWtKyA== +babel-plugin-polyfill-corejs2@^0.4.4, babel-plugin-polyfill-corejs2@^0.4.6: + version "0.4.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz#b2df0251d8e99f229a8e60fc4efa9a68b41c8313" + integrity sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q== dependencies: "@babel/compat-data" "^7.22.6" - "@babel/helper-define-polyfill-provider" "^0.4.1" - "@nicolo-ribaudo/semver-v6" "^6.3.3" + "@babel/helper-define-polyfill-provider" "^0.4.3" + semver "^6.3.1" babel-plugin-polyfill-corejs3@^0.6.0: version "0.6.0" @@ -7430,13 +7502,13 @@ babel-plugin-polyfill-corejs3@^0.6.0: "@babel/helper-define-polyfill-provider" "^0.3.3" core-js-compat "^3.25.1" -babel-plugin-polyfill-corejs3@^0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.2.tgz#d406c5738d298cd9c66f64a94cf8d5904ce4cc5e" - integrity sha512-Cid+Jv1BrY9ReW9lIfNlNpsI53N+FN7gE+f73zLAUbr9C52W4gKLWSByx47pfDJsEysojKArqOtOKZSVIIUTuQ== +babel-plugin-polyfill-corejs3@^0.8.2, babel-plugin-polyfill-corejs3@^0.8.5: + version "0.8.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz#25c2d20002da91fe328ff89095c85a391d6856cf" + integrity sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ== dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.1" - core-js-compat "^3.31.0" + "@babel/helper-define-polyfill-provider" "^0.4.3" + core-js-compat "^3.33.1" babel-plugin-polyfill-regenerator@^0.4.1: version "0.4.1" @@ -7445,12 +7517,12 @@ babel-plugin-polyfill-regenerator@^0.4.1: dependencies: "@babel/helper-define-polyfill-provider" "^0.3.3" -babel-plugin-polyfill-regenerator@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.1.tgz#ace7a5eced6dff7d5060c335c52064778216afd3" - integrity sha512-L8OyySuI6OSQ5hFy9O+7zFjyr4WhAfRjLIOkhQGYl+emwJkd/S4XXT1JpfrgR1jrQ1NcGiOh+yAdGlF8pnC3Jw== +babel-plugin-polyfill-regenerator@^0.5.1, babel-plugin-polyfill-regenerator@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz#d4c49e4b44614607c13fb769bcd85c72bb26a4a5" + integrity sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw== dependencies: - "@babel/helper-define-polyfill-provider" "^0.4.1" + "@babel/helper-define-polyfill-provider" "^0.4.3" babel-plugin-transform-typescript-metadata@^0.3.1: version "0.3.2" @@ -7477,12 +7549,12 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz#57bc8cc88097af7ff6a5ab59d1cd29d52a5916e2" - integrity sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg== +babel-preset-jest@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz#fa05fa510e7d493896d7b0dd2033601c840f171c" + integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== dependencies: - babel-plugin-jest-hoist "^29.5.0" + babel-plugin-jest-hoist "^29.6.3" babel-preset-current-node-syntax "^1.0.0" balanced-match@^1.0.0: @@ -7567,9 +7639,9 @@ big.js@^5.2.2: integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== bignumber.js@^9.0.0: - version "9.1.1" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.1.tgz#c4df7dc496bd849d4c9464344c1aa74228b4dac6" - integrity sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig== + version "9.1.2" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" + integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== binary-extensions@^2.0.0: version "2.2.0" @@ -7740,15 +7812,15 @@ browserify-zlib@^0.1.4: dependencies: pako "~0.2.0" -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.21.4, browserslist@^4.21.5, browserslist@^4.21.9: - version "4.21.9" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.9.tgz#e11bdd3c313d7e2a9e87e8b4b0c7872b13897635" - integrity sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg== +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.21.5, browserslist@^4.21.9, browserslist@^4.22.1: + version "4.22.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" + integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== dependencies: - caniuse-lite "^1.0.30001503" - electron-to-chromium "^1.4.431" - node-releases "^2.0.12" - update-browserslist-db "^1.0.11" + caniuse-lite "^1.0.30001541" + electron-to-chromium "^1.4.535" + node-releases "^2.0.13" + update-browserslist-db "^1.0.13" bs-logger@0.x, bs-logger@^0.2.6: version "0.2.6" @@ -7831,15 +7903,15 @@ bytes@3.1.2: integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== cacache@^17.0.0: - version "17.1.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-17.1.3.tgz#c6ac23bec56516a7c0c52020fd48b4909d7c7044" - integrity sha512-jAdjGxmPxZh0IipMdR7fK/4sDSrHMLUV0+GvVUsjwyGNKHsh79kW/otg+GkbXwl6Uzvy9wsvHOX4nUoWldeZMg== + version "17.1.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-17.1.4.tgz#b3ff381580b47e85c6e64f801101508e26604b35" + integrity sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A== dependencies: "@npmcli/fs" "^3.1.0" fs-minipass "^3.0.0" glob "^10.2.2" lru-cache "^7.7.1" - minipass "^5.0.0" + minipass "^7.0.3" minipass-collect "^1.0.2" minipass-flush "^1.0.5" minipass-pipeline "^1.2.4" @@ -7898,17 +7970,18 @@ cacheable-request@^7.0.2: responselike "^2.0.0" cachedir@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8" - integrity sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw== + version "2.4.0" + resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.4.0.tgz#7fef9cf7367233d7c88068fe6e34ed0d355a610d" + integrity sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ== -call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" call-me-maybe@^1.0.1: version "1.0.2" @@ -7967,10 +8040,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001464, caniuse-lite@^1.0.30001503: - version "1.0.30001516" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001516.tgz#621b1be7d85a8843ee7d210fd9d87b52e3daab3a" - integrity sha512-Wmec9pCBY8CWbmI4HsjBeQLqDTqV91nFVR83DnZpYyRnPI1wePDsTg0bGLPC5VU/3OIZV1fmxEea1b+tFKe86g== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001464, caniuse-lite@^1.0.30001538, caniuse-lite@^1.0.30001541: + version "1.0.30001554" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001554.tgz#ba80d88dff9acbc0cd4b7535fc30e0191c5e2e2a" + integrity sha512-A2E3U//MBwbJVzebddm1YfNp7Nud5Ip+IPn4BozBmn4KqVX7AvluoIDFWjsv5OkGnKUXQVmMSoMKLa3ScCblcQ== case-sensitive-paths-webpack-plugin@^2.4.0: version "2.4.0" @@ -8014,7 +8087,7 @@ chalk@^1.0.0, chalk@^1.1.3: strip-ansi "^3.0.0" supports-color "^2.0.0" -chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -8093,7 +8166,7 @@ cheerio@1.0.0-rc.12: parse5 "^7.0.0" parse5-htmlparser2-tree-adapter "^7.0.0" -chokidar@3.5.3, "chokidar@>=3.0.0 <4.0.0", chokidar@^3.0.0, chokidar@^3.5.1, chokidar@^3.5.3: +chokidar@3.5.3, "chokidar@>=3.0.0 <4.0.0", chokidar@^3.0.0, chokidar@^3.5.3: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -8129,9 +8202,9 @@ ci-info@^2.0.0: integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== ci-info@^3.2.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91" - integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw== + version "3.9.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== cjs-module-lexer@^1.0.0: version "1.2.3" @@ -8206,9 +8279,9 @@ cli-spinners@2.6.1: integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== cli-spinners@^2.5.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.0.tgz#5881d0ad96381e117bbe07ad91f2008fe6ffd8db" - integrity sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g== + version "2.9.1" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.1.tgz#9c0b9dad69a6d47cbb4333c14319b060ed395a35" + integrity sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ== cli-table3@^0.6.1, cli-table3@~0.6.0: version "0.6.3" @@ -8255,15 +8328,6 @@ cliui@^4.0.0: strip-ansi "^4.0.0" wrap-ansi "^2.0.0" -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - cliui@^8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" @@ -8392,11 +8456,19 @@ colord@^2.9.1: resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== -colorette@^2.0.10, colorette@^2.0.19: +colorette@^2.0.10, colorette@^2.0.20: version "2.0.20" resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== +columnify@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.6.0.tgz#6989531713c9008bb29735e61e37acf5bd553cf3" + integrity sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q== + dependencies: + strip-ansi "^6.0.1" + wcwidth "^1.0.0" + combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -8537,7 +8609,7 @@ content-type@~1.0.4, content-type@~1.0.5: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== -convert-source-map@^1.5.1, convert-source-map@^1.6.0, convert-source-map@^1.7.0: +convert-source-map@^1.5.1, convert-source-map@^1.7.0: version "1.9.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== @@ -8593,12 +8665,12 @@ copy-webpack-plugin@^10.2.4: schema-utils "^4.0.0" serialize-javascript "^6.0.0" -core-js-compat@^3.25.1, core-js-compat@^3.31.0: - version "3.31.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.31.1.tgz#5084ad1a46858df50ff89ace152441a63ba7aae0" - integrity sha512-wIDWd2s5/5aJSdpOJHfSibxNODxoGoWOBHt8JSPB41NOE94M7kuTPZCYLOlTtuoXTsBPKobpJ6T+y0SSy5L9SA== +core-js-compat@^3.25.1, core-js-compat@^3.31.0, core-js-compat@^3.33.1: + version "3.33.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.1.tgz#debe80464107d75419e00c2ee29f35982118ff84" + integrity sha512-6pYKNOgD/j/bkC5xS5IIg6bncid3rfrI42oBH1SQJbsmYPKF7rhzcFzYCcxYMmNQQ0rCEB8WqpW7QHndOggaeQ== dependencies: - browserslist "^4.21.9" + browserslist "^4.22.1" core-util-is@1.0.2: version "1.0.2" @@ -8670,13 +8742,13 @@ cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: yaml "^1.10.0" cosmiconfig@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.2.0.tgz#f7d17c56a590856cd1e7cee98734dca272b0d8fd" - integrity sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ== + version "8.3.6" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.3.6.tgz#060a2b871d66dba6c8538ea1118ba1ac16f5fae3" + integrity sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA== dependencies: - import-fresh "^3.2.1" + import-fresh "^3.3.0" js-yaml "^4.1.0" - parse-json "^5.0.0" + parse-json "^5.2.0" path-type "^4.0.0" countries-and-timezones@3.4.1: @@ -8694,6 +8766,19 @@ countup.js@2.3.2: resolved "https://registry.yarnpkg.com/countup.js/-/countup.js-2.3.2.tgz#9a91d95780be1c908d1e6feb548625f353f57988" integrity sha512-dQ7F/CmKGjaO6cDfhtEXwsKVlXIpJ89dFs8PvkaZH9jBVJ2Z8GU4iwG/qP7MgY8qwr+1skbwR6qecWWQLUzB8Q== +create-jest@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320" + integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== + dependencies: + "@jest/types" "^29.6.3" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-config "^29.7.0" + jest-util "^29.7.0" + prompts "^2.0.1" + create-require@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" @@ -8713,9 +8798,9 @@ critters@0.0.20: pretty-bytes "^5.3.0" cron-parser@^4.2.1: - version "4.8.1" - resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-4.8.1.tgz#47062ea63d21d78c10ddedb08ea4c5b6fc2750fb" - integrity sha512-jbokKWGcyU4gl6jAfX97E1gDpY12DJ1cLJZmoDzaAln/shZ+S3KBFBuA2Q6WeUN4gJf/8klnV1EfvhA2lK5IRQ== + version "4.9.0" + resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-4.9.0.tgz#0340694af3e46a0894978c6f52a6dbb5c0f11ad5" + integrity sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q== dependencies: luxon "^3.2.1" @@ -9000,9 +9085,9 @@ cytoscape-fcose@^2.1.0: cose-base "^2.2.0" cytoscape@^3.23.0: - version "3.25.0" - resolved "https://registry.yarnpkg.com/cytoscape/-/cytoscape-3.25.0.tgz#5289e9d18be0293b073bfe93f83bb95b908b2dc1" - integrity sha512-7MW3Iz57mCUo6JQCho6CmPBCbTlJr7LzyEtIkutG255HLVd4XuBg2I9BkTZLI/e4HoaOB/BiAzXuQybQ95+r9Q== + version "3.26.0" + resolved "https://registry.yarnpkg.com/cytoscape/-/cytoscape-3.26.0.tgz#b4c6961445fd51e1fd3cca83c3ffe924d9a8abc9" + integrity sha512-IV+crL+KBcrCnVVUCZW+zRRRFUZQcrtdOPXki+o4CFUWLdAEYvuZLcBSJC9EBK++suamERKzeY7roq2hdovV3w== dependencies: heap "^0.2.6" lodash "^4.17.21" @@ -9300,9 +9385,9 @@ date-fns@^1.27.2: integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== dayjs@^1.11.7: - version "1.11.9" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.9.tgz#9ca491933fadd0a60a2c19f6c237c03517d71d1a" - integrity sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA== + version "1.11.10" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0" + integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ== debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: version "2.6.9" @@ -9352,10 +9437,10 @@ decompress-response@^6.0.0: dependencies: mimic-response "^3.1.0" -dedent@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== +dedent@^1.0.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.1.tgz#4f3fc94c8b711e9bb2800d185cd6ad20f2a90aff" + integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg== deep-equal@^2.0.5: version "2.2.2" @@ -9418,16 +9503,26 @@ defer-to-connect@^2.0.0: resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== +define-data-property@^1.0.1, define-data-property@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + define-lazy-prop@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5" - integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA== + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== dependencies: + define-data-property "^1.0.1" has-property-descriptors "^1.0.0" object-keys "^1.1.1" @@ -9454,9 +9549,9 @@ define-property@^2.0.2: isobject "^3.0.1" defu@^6.1.2: - version "6.1.2" - resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.2.tgz#1217cba167410a1765ba93893c6dbac9ed9d9e5c" - integrity sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ== + version "6.1.3" + resolved "https://registry.yarnpkg.com/defu/-/defu-6.1.3.tgz#6d7f56bc61668e844f9f593ace66fd67ef1205fd" + integrity sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ== del@^6.0.0: version "6.1.1" @@ -9509,7 +9604,7 @@ denque@^2.1.0: resolved "https://registry.yarnpkg.com/denque/-/denque-2.1.0.tgz#e93e1a6569fb5e66f16a3c2a2964617d349d6ab1" integrity sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw== -depd@2.0.0, depd@^2.0.0: +depd@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== @@ -9569,10 +9664,10 @@ detect-port@^1.3.0, detect-port@^1.5.1: address "^1.0.1" debug "4" -diff-sequences@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2" - integrity sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA== +diff-sequences@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" + integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== diff@^4.0.1: version "4.0.2" @@ -9599,9 +9694,9 @@ dns-equal@^1.0.0: integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg== dns-packet@^5.2.2: - version "5.6.0" - resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.0.tgz#2202c947845c7a63c23ece58f2f70ff6ab4c2f7d" - integrity sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ== + version "5.6.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" + integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== dependencies: "@leichtgewicht/ip-codec" "^2.0.1" @@ -9708,7 +9803,7 @@ dot-case@^3.0.4: no-case "^3.0.4" tslib "^2.0.3" -dotenv-expand@10.0.0, dotenv-expand@^10.0.0: +dotenv-expand@10.0.0, dotenv-expand@^10.0.0, dotenv-expand@~10.0.0: version "10.0.0" resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-10.0.0.tgz#12605d00fb0af6d0a592e6558585784032e4ef37" integrity sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A== @@ -9723,11 +9818,6 @@ dotenv@^16.0.0, dotenv@~16.3.1: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== -dotenv@~10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" - integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== - duplexer@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" @@ -9775,10 +9865,10 @@ ejs@^3.1.7, ejs@^3.1.8: dependencies: jake "^10.8.5" -electron-to-chromium@^1.4.431: - version "1.4.461" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.461.tgz#6b14af66042732bf883ab63a4d82cac8f35eb252" - integrity sha512-1JkvV2sgEGTDXjdsaQCeSwYYuhLRphRpc+g6EHTFELJXEiznLt3/0pZ9JuAOQ5p2rI3YxKTbivtvajirIfhrEQ== +electron-to-chromium@^1.4.535: + version "1.4.567" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.567.tgz#c92e8fbc2bd15df3068d92571733a218a5413add" + integrity sha512-8KR114CAYQ4/r5EIEsOmOMqQ9j0MRbJZR3aXD/KFA8RuKzyoUB4XrUCg+l8RUGqTVQgKNIgTpjaG8YHRPAbX2w== elegant-spinner@^1.0.1: version "1.0.1" @@ -9847,7 +9937,15 @@ enhanced-resolve@^5.0.0, enhanced-resolve@^5.15.0, enhanced-resolve@^5.7.0: graceful-fs "^4.2.4" tapable "^2.2.0" -enquirer@^2.3.6, enquirer@~2.3.6: +enquirer@^2.3.6: + version "2.4.1" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" + integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== + dependencies: + ansi-colors "^4.1.1" + strip-ansi "^6.0.1" + +enquirer@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== @@ -9900,25 +9998,26 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.19.0, es-abstract@^1.20.4: - version "1.21.3" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.3.tgz#8aaa0ffc080e8a6fef6ace72631dc1ec5d47bf94" - integrity sha512-ZU4miiY1j3sGPFLJ34VJXEqhpmL+HGByCinGHv4HC+Fxl2fI2Z4yR6tl0mORnDr6PA8eihWo4LmSWDbvhALckg== +es-abstract@^1.22.1: + version "1.22.3" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" + integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== dependencies: array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.2" available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + call-bind "^1.0.5" es-set-tostringtag "^2.0.1" es-to-primitive "^1.2.1" - function.prototype.name "^1.1.5" - get-intrinsic "^1.2.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.2" get-symbol-description "^1.0.0" globalthis "^1.0.3" gopd "^1.0.1" - has "^1.0.3" has-property-descriptors "^1.0.0" has-proto "^1.0.1" has-symbols "^1.0.3" + hasown "^2.0.0" internal-slot "^1.0.5" is-array-buffer "^3.0.2" is-callable "^1.2.7" @@ -9926,20 +10025,23 @@ es-abstract@^1.19.0, es-abstract@^1.20.4: is-regex "^1.1.4" is-shared-array-buffer "^1.0.2" is-string "^1.0.7" - is-typed-array "^1.1.10" + is-typed-array "^1.1.12" is-weakref "^1.0.2" - object-inspect "^1.12.3" + object-inspect "^1.13.1" object-keys "^1.1.1" object.assign "^4.1.4" - regexp.prototype.flags "^1.5.0" + regexp.prototype.flags "^1.5.1" + safe-array-concat "^1.0.1" safe-regex-test "^1.0.0" - string.prototype.trim "^1.2.7" - string.prototype.trimend "^1.0.6" - string.prototype.trimstart "^1.0.6" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" typed-array-byte-offset "^1.0.0" typed-array-length "^1.0.4" unbox-primitive "^1.0.2" - which-typed-array "^1.1.10" + which-typed-array "^1.1.13" es-get-iterator@^1.1.3: version "1.1.3" @@ -9957,25 +10059,25 @@ es-get-iterator@^1.1.3: stop-iteration-iterator "^1.0.0" es-module-lexer@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.3.0.tgz#6be9c9e0b4543a60cd166ff6f8b4e9dae0b0c16f" - integrity sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA== + version "1.3.1" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.3.1.tgz#c1b0dd5ada807a3b3155315911f364dc4e909db1" + integrity sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q== es-set-tostringtag@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" - integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg== + version "2.0.2" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" + integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== dependencies: - get-intrinsic "^1.1.3" - has "^1.0.3" + get-intrinsic "^1.2.2" has-tostringtag "^1.0.0" + hasown "^2.0.0" es-shim-unscopables@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" - integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + version "1.0.2" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== dependencies: - has "^1.0.3" + hasown "^2.0.0" es-to-primitive@^1.2.1: version "1.2.1" @@ -9986,20 +10088,15 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -es6-object-assign@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" - integrity sha512-MEl9uirslVwqQU369iHNWZXsI8yaZYGg/D65aOgZkeyFJwHYSxilf7rQzXKI7DdDuBPrBXbfk3sl9hJhmd5AUw== - esbuild-plugin-alias@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/esbuild-plugin-alias/-/esbuild-plugin-alias-0.2.1.tgz#45a86cb941e20e7c2bc68a2bea53562172494fcb" integrity sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ== -esbuild-register@^3.4.0: - version "3.4.2" - resolved "https://registry.yarnpkg.com/esbuild-register/-/esbuild-register-3.4.2.tgz#1e39ee0a77e8f320a9790e68c64c3559620b9175" - integrity sha512-kG/XyTDyz6+YDuyfB9ZoSIOOmgyFCH+xPRtsCa8W85HLRV5Csp+o3jWVbOSHgSLfyLc5DmP+KFDNwty4mEjC+Q== +esbuild-register@^3.4.0, esbuild-register@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/esbuild-register/-/esbuild-register-3.5.0.tgz#449613fb29ab94325c722f560f800dd946dc8ea8" + integrity sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A== dependencies: debug "^4.3.4" @@ -10009,9 +10106,9 @@ esbuild-wasm@0.18.17: integrity sha512-9OHGcuRzy+I8ziF9FzjfKLWAPbvi0e/metACVg9k6bK+SI4FFxeV6PcZsz8RIVaMD4YNehw+qj6UMR3+qj/EuQ== esbuild-wasm@>=0.13.8: - version "0.18.13" - resolved "https://registry.yarnpkg.com/esbuild-wasm/-/esbuild-wasm-0.18.13.tgz#fb3714690eb95ccb34d6df7b3910f896597f71a6" - integrity sha512-aUbWtirQ2WIcsqLYu0mKm3cBzZNV17CPCTt7PYmqir7ALtCNZ+lv1wNAQnow6LnaMH9vss18mQ83g1NuZ4JiCg== + version "0.19.5" + resolved "https://registry.yarnpkg.com/esbuild-wasm/-/esbuild-wasm-0.19.5.tgz#28f4563d7e3bcbe9462813e376b2fb6024931fd9" + integrity sha512-7zmLLn2QCj93XfMmHtzrDJ1UBuOHB2CZz1ghoCEZiRajxjUvHsF40PnbzFIY/pmesqPRaEtEWii0uzsTbnAgrA== esbuild@0.18.17: version "0.18.17" @@ -10042,32 +10139,32 @@ esbuild@0.18.17: "@esbuild/win32-x64" "0.18.17" esbuild@>=0.13.8: - version "0.18.13" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.13.tgz#59160add6c3420947fe008238140ed3480baf817" - integrity sha512-vhg/WR/Oiu4oUIkVhmfcc23G6/zWuEQKFS+yiosSHe4aN6+DQRXIfeloYGibIfVhkr4wyfuVsGNLr+sQU1rWWw== + version "0.19.5" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.5.tgz#53a0e19dfbf61ba6c827d51a80813cf071239a8c" + integrity sha512-bUxalY7b1g8vNhQKdB24QDmHeY4V4tw/s6Ak5z+jJX9laP5MoQseTOMemAr0gxssjNcH0MCViG8ONI2kksvfFQ== optionalDependencies: - "@esbuild/android-arm" "0.18.13" - "@esbuild/android-arm64" "0.18.13" - "@esbuild/android-x64" "0.18.13" - "@esbuild/darwin-arm64" "0.18.13" - "@esbuild/darwin-x64" "0.18.13" - "@esbuild/freebsd-arm64" "0.18.13" - "@esbuild/freebsd-x64" "0.18.13" - "@esbuild/linux-arm" "0.18.13" - "@esbuild/linux-arm64" "0.18.13" - "@esbuild/linux-ia32" "0.18.13" - "@esbuild/linux-loong64" "0.18.13" - "@esbuild/linux-mips64el" "0.18.13" - "@esbuild/linux-ppc64" "0.18.13" - "@esbuild/linux-riscv64" "0.18.13" - "@esbuild/linux-s390x" "0.18.13" - "@esbuild/linux-x64" "0.18.13" - "@esbuild/netbsd-x64" "0.18.13" - "@esbuild/openbsd-x64" "0.18.13" - "@esbuild/sunos-x64" "0.18.13" - "@esbuild/win32-arm64" "0.18.13" - "@esbuild/win32-ia32" "0.18.13" - "@esbuild/win32-x64" "0.18.13" + "@esbuild/android-arm" "0.19.5" + "@esbuild/android-arm64" "0.19.5" + "@esbuild/android-x64" "0.19.5" + "@esbuild/darwin-arm64" "0.19.5" + "@esbuild/darwin-x64" "0.19.5" + "@esbuild/freebsd-arm64" "0.19.5" + "@esbuild/freebsd-x64" "0.19.5" + "@esbuild/linux-arm" "0.19.5" + "@esbuild/linux-arm64" "0.19.5" + "@esbuild/linux-ia32" "0.19.5" + "@esbuild/linux-loong64" "0.19.5" + "@esbuild/linux-mips64el" "0.19.5" + "@esbuild/linux-ppc64" "0.19.5" + "@esbuild/linux-riscv64" "0.19.5" + "@esbuild/linux-s390x" "0.19.5" + "@esbuild/linux-x64" "0.19.5" + "@esbuild/netbsd-x64" "0.19.5" + "@esbuild/openbsd-x64" "0.19.5" + "@esbuild/sunos-x64" "0.19.5" + "@esbuild/win32-arm64" "0.19.5" + "@esbuild/win32-ia32" "0.19.5" + "@esbuild/win32-x64" "0.19.5" esbuild@^0.17.0: version "0.17.19" @@ -10097,35 +10194,7 @@ esbuild@^0.17.0: "@esbuild/win32-ia32" "0.17.19" "@esbuild/win32-x64" "0.17.19" -esbuild@^0.18.0: - version "0.18.18" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.18.tgz#196838a905c7068d1c1653b04f2c5dfdb68ef927" - integrity sha512-UckDPWvdVJLNT0npk5AMTpVwGRQhS76rWFLmHwEtgNvWlR9sgVV1eyc/oeBtM86q9s8ABBLMmm0CwNxhVemOiw== - optionalDependencies: - "@esbuild/android-arm" "0.18.18" - "@esbuild/android-arm64" "0.18.18" - "@esbuild/android-x64" "0.18.18" - "@esbuild/darwin-arm64" "0.18.18" - "@esbuild/darwin-x64" "0.18.18" - "@esbuild/freebsd-arm64" "0.18.18" - "@esbuild/freebsd-x64" "0.18.18" - "@esbuild/linux-arm" "0.18.18" - "@esbuild/linux-arm64" "0.18.18" - "@esbuild/linux-ia32" "0.18.18" - "@esbuild/linux-loong64" "0.18.18" - "@esbuild/linux-mips64el" "0.18.18" - "@esbuild/linux-ppc64" "0.18.18" - "@esbuild/linux-riscv64" "0.18.18" - "@esbuild/linux-s390x" "0.18.18" - "@esbuild/linux-x64" "0.18.18" - "@esbuild/netbsd-x64" "0.18.18" - "@esbuild/openbsd-x64" "0.18.18" - "@esbuild/sunos-x64" "0.18.18" - "@esbuild/win32-arm64" "0.18.18" - "@esbuild/win32-ia32" "0.18.18" - "@esbuild/win32-x64" "0.18.18" - -esbuild@^0.18.10: +esbuild@^0.18.0, esbuild@^0.18.10: version "0.18.20" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6" integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA== @@ -10195,13 +10264,13 @@ eslint-config-prettier@8.6.0: integrity sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA== eslint-import-resolver-node@^0.3.7: - version "0.3.7" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz#83b375187d412324a1963d84fa664377a23eb4d7" - integrity sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA== + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== dependencies: debug "^3.2.7" - is-core-module "^2.11.0" - resolve "^1.22.1" + is-core-module "^2.13.0" + resolve "^1.22.4" eslint-module-utils@^2.7.4: version "2.8.0" @@ -10265,9 +10334,9 @@ eslint-scope@^4.0.3: estraverse "^4.1.1" eslint-scope@^7.0.0, eslint-scope@^7.1.1: - version "7.2.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.1.tgz#936821d3462675f25a18ac5fd88a67cc15b393bd" - integrity sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA== + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" @@ -10297,9 +10366,9 @@ eslint-visitor-keys@^2.0.0: integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994" - integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA== + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== eslint@8.33.0: version "8.33.0" @@ -10543,17 +10612,16 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expect@^29.0.0, expect@^29.6.1: - version "29.6.1" - resolved "https://registry.yarnpkg.com/expect/-/expect-29.6.1.tgz#64dd1c8f75e2c0b209418f2b8d36a07921adfdf1" - integrity sha512-XEdDLonERCU1n9uR56/Stx9OqojaLAQtZf9PrCHH9Hl8YXiEIka3H4NXJ3NOIBmQJTg7+j7buh34PMHfJujc8g== +expect@^29.0.0, expect@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc" + integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== dependencies: - "@jest/expect-utils" "^29.6.1" - "@types/node" "*" - jest-get-type "^29.4.3" - jest-matcher-utils "^29.6.1" - jest-message-util "^29.6.1" - jest-util "^29.6.1" + "@jest/expect-utils" "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" exponential-backoff@^3.1.1: version "3.1.1" @@ -10676,7 +10744,7 @@ fast-glob@3.2.7: merge2 "^1.3.0" micromatch "^4.0.4" -fast-glob@3.3.0, fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.7, fast-glob@^3.2.9, fast-glob@^3.3.0: +fast-glob@3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.0.tgz#7c40cb491e1e2ed5664749e87bfb516dbe8727c0" integrity sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA== @@ -10687,7 +10755,7 @@ fast-glob@3.3.0, fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.7, fast-gl merge2 "^1.3.0" micromatch "^4.0.4" -fast-glob@3.3.1: +fast-glob@3.3.1, fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.7, fast-glob@^3.2.9, fast-glob@^3.3.0: version "3.3.1" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4" integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg== @@ -10813,10 +10881,11 @@ file-system-cache@2.3.0: ramda "0.29.0" file-system-cache@^2.0.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/file-system-cache/-/file-system-cache-2.4.2.tgz#d0911c3981858033fd2e57b602cfe91984d84658" - integrity sha512-33ALMyc8nFwrb7p5+Dl0rmYUY48hHoYvFQhH7zpr08DJ68xR41PONJaYQ5XRj61CFq/hvoj680Ej/P9hoOU4eQ== + version "2.4.4" + resolved "https://registry.yarnpkg.com/file-system-cache/-/file-system-cache-2.4.4.tgz#90eb72960e3d7b72d09768d4d4262c98f8d206b6" + integrity sha512-vCYhn8pb5nlC3Gs2FFCOkmf4NEg2Ym3ulJwkmS9o6p9oRShGj6CwTMFvpgZihBlsh373NaM0XgAgDHXQIlS4LQ== dependencies: + "@types/fs-extra" "11.0.1" "@types/ramda" "0.29.3" fs-extra "11.1.1" ramda "0.29.0" @@ -10940,11 +11009,12 @@ flat-cache@^2.0.1: write "1.0.3" flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + version "3.1.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.1.1.tgz#a02a15fdec25a8f844ff7cc658f03dd99eb4609b" + integrity sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q== dependencies: - flatted "^3.1.0" + flatted "^3.2.9" + keyv "^4.5.3" rimraf "^3.0.2" flat@^5.0.2: @@ -10957,20 +11027,20 @@ flatted@^2.0.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== -flatted@^3.1.0: - version "3.2.7" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" - integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== +flatted@^3.2.9: + version "3.2.9" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" + integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== flow-parser@0.*: - version "0.212.0" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.212.0.tgz#2b15a32bf0cc15fc81818fe849752dd70cb87871" - integrity sha512-45eNySEs7n692jLN+eHQ6zvC9e1cqu9Dq1PpDHTcWRri2HFEs8is8Anmp1RcIhYxA5TZYD6RuESG2jdj6nkDJQ== + version "0.219.5" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.219.5.tgz#bff08036bd8f2aa7ebfd54a580dc418e37bc9c0e" + integrity sha512-lHx/cl2XjopBx/ma9RYhG7FGj2JLKacoBwtI3leOp8AwRDPGwu6bzJoaCMfIl/sq14KdtY5MGzd5q6nKfGzcuQ== follow-redirects@^1.0.0, follow-redirects@^1.14.0, follow-redirects@^1.15.0: - version "1.15.2" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" - integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + version "1.15.3" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a" + integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q== for-each@^0.3.3: version "0.3.3" @@ -11065,10 +11135,10 @@ forwarded@0.2.0: resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== -fraction.js@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" - integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== +fraction.js@^4.2.0, fraction.js@^4.3.6: + version "4.3.7" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" + integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== fragment-cache@^0.2.1: version "0.2.1" @@ -11123,16 +11193,16 @@ fs-minipass@^2.0.0: minipass "^3.0.0" fs-minipass@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-3.0.2.tgz#5b383858efa8c1eb8c33b39e994f7e8555b8b3a3" - integrity sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g== + version "3.0.3" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-3.0.3.tgz#79a85981c4dc120065e96f62086bf6f9dc26cc54" + integrity sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw== dependencies: - minipass "^5.0.0" + minipass "^7.0.3" fs-monkey@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.4.tgz#ee8c1b53d3fe8bb7e5d2c5c5dfc0168afdd2f747" - integrity sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ== + version "1.0.5" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.5.tgz#fe450175f0db0d7ea758102e1d84096acb925788" + integrity sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew== fs.realpath@^1.0.0: version "1.0.0" @@ -11140,31 +11210,31 @@ fs.realpath@^1.0.0: integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@^2.3.2, fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== -function.prototype.name@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" - integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== +function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - functions-have-names "^1.2.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== -functions-have-names@^1.2.2, functions-have-names@^1.2.3: +functions-have-names@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== @@ -11232,15 +11302,15 @@ get-caller-file@^2.0.5: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" - integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" + integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== dependencies: - function-bind "^1.1.1" - has "^1.0.3" + function-bind "^1.1.2" has-proto "^1.0.1" has-symbols "^1.0.3" + hasown "^2.0.0" get-nonce@^1.0.0: version "1.0.1" @@ -11309,17 +11379,17 @@ getpass@^0.1.1: assert-plus "^1.0.0" giget@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/giget/-/giget-1.1.2.tgz#f99a49cb0ff85479c8c3612cdc7ca27f2066e818" - integrity sha512-HsLoS07HiQ5oqvObOI+Qb2tyZH4Gj5nYGfF9qQcZNrPw+uEFhdXtgJr01aO2pWadGHucajYDLxxbtQkm97ON2A== + version "1.1.3" + resolved "https://registry.yarnpkg.com/giget/-/giget-1.1.3.tgz#574ed901031eafa732347a7990d84bfa6484c51a" + integrity sha512-zHuCeqtfgqgDwvXlR84UNgnJDuUHQcNI5OqWqFxxuk2BshuKbYhJWdxBsEo4PvKqoGh23lUAIvBNpChMLv7/9Q== dependencies: - colorette "^2.0.19" + colorette "^2.0.20" defu "^6.1.2" - https-proxy-agent "^5.0.1" + https-proxy-agent "^7.0.2" mri "^1.2.0" - node-fetch-native "^1.0.2" - pathe "^1.1.0" - tar "^6.1.13" + node-fetch-native "^1.4.0" + pathe "^1.1.1" + tar "^6.2.0" github-slugger@^1.0.0: version "1.5.0" @@ -11349,9 +11419,9 @@ glob-parent@^6.0.1, glob-parent@^6.0.2: is-glob "^4.0.3" glob-promise@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-6.0.3.tgz#e6b3ab02d350b3f4b3e15b57e4485986e41ba2fe" - integrity sha512-m+kxywR5j/2Z2V9zvHKfwwL5Gp7gIFEBX+deTB9w2lJB+wSuw9kcS43VfvTAMk8TXL5JCl/cCjsR+tgNVspGyA== + version "6.0.5" + resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-6.0.5.tgz#3d56331b324fd7d097b43ba9e9959e9c7e200e2c" + integrity sha512-uUzvxo60yo/vMLXZHCNAlfdM5U5A07jCnUO8xTK44Z0Vc58poGDXhDx8ju1DmPdprOORh+4Lpog64hl+AJ5piA== dependencies: "@types/glob" "^8.0.0" @@ -11378,12 +11448,12 @@ glob@7.1.4: path-is-absolute "^1.0.0" glob@^10.0.0, glob@^10.2.2: - version "10.3.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.3.tgz#8360a4ffdd6ed90df84aa8d52f21f452e86a123b" - integrity sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw== + version "10.3.10" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== dependencies: foreground-child "^3.1.0" - jackspeak "^2.0.3" + jackspeak "^2.3.5" minimatch "^9.0.1" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" path-scurry "^1.10.1" @@ -11423,17 +11493,10 @@ globals@^11.1.0, globals@^11.7.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^13.19.0: - version "13.20.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82" - integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ== - dependencies: - type-fest "^0.20.2" - -globals@^13.20.0: - version "13.21.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.21.0.tgz#163aae12f34ef502f5153cfbdd3600f36c63c571" - integrity sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg== +globals@^13.19.0, globals@^13.20.0: + version "13.23.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.23.0.tgz#ef31673c926a0976e1f61dab4dca57e0c0a8af02" + integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA== dependencies: type-fest "^0.20.2" @@ -11599,12 +11662,12 @@ handle-thing@^2.0.0: integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== handlebars@^4.7.7: - version "4.7.7" - resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" - integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== + version "4.7.8" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" + integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== dependencies: minimist "^1.2.5" - neo-async "^2.6.0" + neo-async "^2.6.2" source-map "^0.6.1" wordwrap "^1.0.0" optionalDependencies: @@ -11643,11 +11706,11 @@ has-own-prop@^2.0.0: integrity sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ== has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" + integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== dependencies: - get-intrinsic "^1.1.1" + get-intrinsic "^1.2.2" has-proto@^1.0.1: version "1.0.1" @@ -11703,11 +11766,16 @@ has-values@^1.0.0: kind-of "^4.0.0" has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + version "1.0.4" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.4.tgz#2eb2860e000011dae4f1406a86fe80e530fb2ec6" + integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== + +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== dependencies: - function-bind "^1.1.1" + function-bind "^1.1.2" hdr-histogram-js@^2.0.1: version "2.0.3" @@ -11750,6 +11818,13 @@ hosted-git-info@^6.0.0: dependencies: lru-cache "^7.5.1" +hosted-git-info@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-7.0.1.tgz#9985fcb2700467fecf7f33a4d4874e30680b5322" + integrity sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA== + dependencies: + lru-cache "^10.0.1" + hpack.js@^2.1.6: version "2.1.6" resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" @@ -11959,6 +12034,14 @@ https-proxy-agent@^4.0.0: agent-base "5" debug "4" +https-proxy-agent@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz#e2645b846b90e96c6e6f347fb5b2e41f1590b09b" + integrity sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA== + dependencies: + agent-base "^7.0.2" + debug "4" + human-signals@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" @@ -12035,9 +12118,9 @@ image-size@~0.5.0: integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ== immutable@^4.0.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.1.tgz#17988b356097ab0719e2f741d56f3ec6c317f9dc" - integrity sha512-lj9cnmB/kVS0QHsJnYKD1uo3o39nrbKxszjnqS9Fr6NB7bZzW45U6WSGBPKXDL/CvDKqDNPA4r3DoDQ8GTxo2A== + version "4.3.4" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.4.tgz#2e07b33837b4bb7662f288c244d1ced1ef65a78f" + integrity sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA== import-fresh@^2.0.0: version "2.0.0" @@ -12047,7 +12130,7 @@ import-fresh@^2.0.0: caller-path "^2.0.0" resolve-from "^3.0.0" -import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: +import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -12226,12 +12309,12 @@ inquirer@^6.2.2: through "^2.3.6" internal-slot@^1.0.4, internal-slot@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" - integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ== + version "1.0.6" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930" + integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== dependencies: - get-intrinsic "^1.2.0" - has "^1.0.3" + get-intrinsic "^1.2.2" + hasown "^2.0.0" side-channel "^1.0.4" "internmap@1 - 2": @@ -12288,7 +12371,7 @@ ipaddr.js@1.9.1: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -ipaddr.js@^2.0.1: +ipaddr.js@^2.0.1, ipaddr.js@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.1.0.tgz#2119bc447ff8c257753b196fc5f1ce08a4cdf39f" integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ== @@ -12385,12 +12468,12 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" -is-core-module@^2.11.0, is-core-module@^2.8.1: - version "2.12.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd" - integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== +is-core-module@^2.11.0, is-core-module@^2.13.0, is-core-module@^2.8.1: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: - has "^1.0.3" + hasown "^2.0.0" is-data-descriptor@^0.1.4: version "0.1.4" @@ -12534,7 +12617,7 @@ is-map@^2.0.1, is-map@^2.0.2: resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== -is-nan@^1.2.1: +is-nan@^1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== @@ -12649,16 +12732,12 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typed-array@^1.1.10, is-typed-array@^1.1.3, is-typed-array@^1.1.9: - version "1.1.10" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f" - integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A== +is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.3, is-typed-array@^1.1.9: + version "1.1.12" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" - for-each "^0.3.3" - gopd "^1.0.1" - has-tostringtag "^1.0.0" + which-typed-array "^1.1.11" is-typedarray@~1.0.0: version "1.0.0" @@ -12757,7 +12836,7 @@ istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== -istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: +istanbul-lib-instrument@^5.0.4: version "5.2.1" resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== @@ -12768,13 +12847,24 @@ istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: istanbul-lib-coverage "^3.2.0" semver "^6.3.0" +istanbul-lib-instrument@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz#71e87707e8041428732518c6fb5211761753fbdf" + integrity sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^7.5.4" + istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + version "3.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" + integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== dependencies: istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" + make-dir "^4.0.0" supports-color "^7.1.0" istanbul-lib-source-maps@^4.0.0: @@ -12787,9 +12877,9 @@ istanbul-lib-source-maps@^4.0.0: source-map "^0.6.1" istanbul-reports@^3.1.3: - version "3.1.5" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" - integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== + version "3.1.6" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.6.tgz#2544bcab4768154281a2f0870471902704ccaa1a" + integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" @@ -12799,10 +12889,10 @@ iterare@1.2.1: resolved "https://registry.yarnpkg.com/iterare/-/iterare-1.2.1.tgz#139c400ff7363690e33abffa33cbba8920f00042" integrity sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q== -jackspeak@^2.0.3: - version "2.2.1" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.2.1.tgz#655e8cf025d872c9c03d3eb63e8f0c024fef16a6" - integrity sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw== +jackspeak@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== dependencies: "@isaacs/cliui" "^8.0.2" optionalDependencies: @@ -12818,113 +12908,113 @@ jake@^10.8.5: filelist "^1.0.4" minimatch "^3.1.2" -jest-changed-files@^29.5.0: - version "29.5.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.5.0.tgz#e88786dca8bf2aa899ec4af7644e16d9dcf9b23e" - integrity sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag== +jest-changed-files@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a" + integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== dependencies: execa "^5.0.0" + jest-util "^29.7.0" p-limit "^3.1.0" -jest-circus@^29.6.1: - version "29.6.1" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.6.1.tgz#861dab37e71a89907d1c0fabc54a0019738ed824" - integrity sha512-tPbYLEiBU4MYAL2XoZme/bgfUeotpDBd81lgHLCbDZZFaGmECk0b+/xejPFtmiBP87GgP/y4jplcRpbH+fgCzQ== +jest-circus@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a" + integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== dependencies: - "@jest/environment" "^29.6.1" - "@jest/expect" "^29.6.1" - "@jest/test-result" "^29.6.1" - "@jest/types" "^29.6.1" + "@jest/environment" "^29.7.0" + "@jest/expect" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" - dedent "^0.7.0" + dedent "^1.0.0" is-generator-fn "^2.0.0" - jest-each "^29.6.1" - jest-matcher-utils "^29.6.1" - jest-message-util "^29.6.1" - jest-runtime "^29.6.1" - jest-snapshot "^29.6.1" - jest-util "^29.6.1" + jest-each "^29.7.0" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-runtime "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" p-limit "^3.1.0" - pretty-format "^29.6.1" + pretty-format "^29.7.0" pure-rand "^6.0.0" slash "^3.0.0" stack-utils "^2.0.3" jest-cli@^29.4.3: - version "29.6.1" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.6.1.tgz#99d9afa7449538221c71f358f0fdd3e9c6e89f72" - integrity sha512-607dSgTA4ODIN6go9w6xY3EYkyPFGicx51a69H7yfvt7lN53xNswEVLovq+E77VsTRi5fWprLH0yl4DJgE8Ing== + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995" + integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== dependencies: - "@jest/core" "^29.6.1" - "@jest/test-result" "^29.6.1" - "@jest/types" "^29.6.1" + "@jest/core" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" chalk "^4.0.0" + create-jest "^29.7.0" exit "^0.1.2" - graceful-fs "^4.2.9" import-local "^3.0.2" - jest-config "^29.6.1" - jest-util "^29.6.1" - jest-validate "^29.6.1" - prompts "^2.0.1" + jest-config "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" yargs "^17.3.1" -jest-config@^29.4.1, jest-config@^29.6.1: - version "29.6.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.6.1.tgz#d785344509065d53a238224c6cdc0ed8e2f2f0dd" - integrity sha512-XdjYV2fy2xYixUiV2Wc54t3Z4oxYPAELUzWnV6+mcbq0rh742X2p52pii5A3oeRzYjLnQxCsZmp0qpI6klE2cQ== +jest-config@^29.4.1, jest-config@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f" + integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== dependencies: "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.6.1" - "@jest/types" "^29.6.1" - babel-jest "^29.6.1" + "@jest/test-sequencer" "^29.7.0" + "@jest/types" "^29.6.3" + babel-jest "^29.7.0" chalk "^4.0.0" ci-info "^3.2.0" deepmerge "^4.2.2" glob "^7.1.3" graceful-fs "^4.2.9" - jest-circus "^29.6.1" - jest-environment-node "^29.6.1" - jest-get-type "^29.4.3" - jest-regex-util "^29.4.3" - jest-resolve "^29.6.1" - jest-runner "^29.6.1" - jest-util "^29.6.1" - jest-validate "^29.6.1" + jest-circus "^29.7.0" + jest-environment-node "^29.7.0" + jest-get-type "^29.6.3" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-runner "^29.7.0" + jest-util "^29.7.0" + jest-validate "^29.7.0" micromatch "^4.0.4" parse-json "^5.2.0" - pretty-format "^29.6.1" + pretty-format "^29.7.0" slash "^3.0.0" strip-json-comments "^3.1.1" -jest-diff@^29.6.1: - version "29.6.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.6.1.tgz#13df6db0a89ee6ad93c747c75c85c70ba941e545" - integrity sha512-FsNCvinvl8oVxpNLttNQX7FAq7vR+gMDGj90tiP7siWw1UdakWUGqrylpsYrpvj908IYckm5Y0Q7azNAozU1Kg== +jest-diff@^29.4.1, jest-diff@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" + integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== dependencies: chalk "^4.0.0" - diff-sequences "^29.4.3" - jest-get-type "^29.4.3" - pretty-format "^29.6.1" + diff-sequences "^29.6.3" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" -jest-docblock@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.4.3.tgz#90505aa89514a1c7dceeac1123df79e414636ea8" - integrity sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg== +jest-docblock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a" + integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== dependencies: detect-newline "^3.0.0" -jest-each@^29.6.1: - version "29.6.1" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.6.1.tgz#975058e5b8f55c6780beab8b6ab214921815c89c" - integrity sha512-n5eoj5eiTHpKQCAVcNTT7DRqeUmJ01hsAL0Q1SMiBHcBcvTKDELixQOGMCpqhbIuTcfC4kMfSnpmDqRgRJcLNQ== +jest-each@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1" + integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== dependencies: - "@jest/types" "^29.6.1" + "@jest/types" "^29.6.3" chalk "^4.0.0" - jest-get-type "^29.4.3" - jest-util "^29.6.1" - pretty-format "^29.6.1" + jest-get-type "^29.6.3" + jest-util "^29.7.0" + pretty-format "^29.7.0" jest-environment-jsdom@29.4.3: version "29.4.3" @@ -12941,96 +13031,96 @@ jest-environment-jsdom@29.4.3: jsdom "^20.0.0" jest-environment-jsdom@^29.0.0: - version "29.6.1" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.6.1.tgz#480bce658aa31589309c82ca510351fd7c683bbb" - integrity sha512-PoY+yLaHzVRhVEjcVKSfJ7wXmJW4UqPYNhR05h7u/TK0ouf6DmRNZFBL/Z00zgQMyWGMBXn69/FmOvhEJu8cIw== + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz#d206fa3551933c3fd519e5dfdb58a0f5139a837f" + integrity sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA== dependencies: - "@jest/environment" "^29.6.1" - "@jest/fake-timers" "^29.6.1" - "@jest/types" "^29.6.1" + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" "@types/jsdom" "^20.0.0" "@types/node" "*" - jest-mock "^29.6.1" - jest-util "^29.6.1" + jest-mock "^29.7.0" + jest-util "^29.7.0" jsdom "^20.0.0" -jest-environment-node@^29.6.1: - version "29.6.1" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.6.1.tgz#08a122dece39e58bc388da815a2166c58b4abec6" - integrity sha512-ZNIfAiE+foBog24W+2caIldl4Irh8Lx1PUhg/GZ0odM1d/h2qORAsejiFc7zb+SEmYPn1yDZzEDSU5PmDkmVLQ== +jest-environment-node@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" + integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== dependencies: - "@jest/environment" "^29.6.1" - "@jest/fake-timers" "^29.6.1" - "@jest/types" "^29.6.1" + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" - jest-mock "^29.6.1" - jest-util "^29.6.1" + jest-mock "^29.7.0" + jest-util "^29.7.0" -jest-get-type@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.4.3.tgz#1ab7a5207c995161100b5187159ca82dd48b3dd5" - integrity sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg== +jest-get-type@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" + integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== -jest-haste-map@^29.6.1: - version "29.6.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.6.1.tgz#62655c7a1c1b349a3206441330fb2dbdb4b63803" - integrity sha512-0m7f9PZXxOCk1gRACiVgX85knUKPKLPg4oRCjLoqIm9brTHXaorMA0JpmtmVkQiT8nmXyIVoZd/nnH1cfC33ig== +jest-haste-map@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104" + integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA== dependencies: - "@jest/types" "^29.6.1" + "@jest/types" "^29.6.3" "@types/graceful-fs" "^4.1.3" "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" graceful-fs "^4.2.9" - jest-regex-util "^29.4.3" - jest-util "^29.6.1" - jest-worker "^29.6.1" + jest-regex-util "^29.6.3" + jest-util "^29.7.0" + jest-worker "^29.7.0" micromatch "^4.0.4" walker "^1.0.8" optionalDependencies: fsevents "^2.3.2" -jest-leak-detector@^29.6.1: - version "29.6.1" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.6.1.tgz#66a902c81318e66e694df7d096a95466cb962f8e" - integrity sha512-OrxMNyZirpOEwkF3UHnIkAiZbtkBWiye+hhBweCHkVbCgyEy71Mwbb5zgeTNYWJBi1qgDVfPC1IwO9dVEeTLwQ== +jest-leak-detector@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" + integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== dependencies: - jest-get-type "^29.4.3" - pretty-format "^29.6.1" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" -jest-matcher-utils@^29.6.1: - version "29.6.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.6.1.tgz#6c60075d84655d6300c5d5128f46531848160b53" - integrity sha512-SLaztw9d2mfQQKHmJXKM0HCbl2PPVld/t9Xa6P9sgiExijviSp7TnZZpw2Fpt+OI3nwUO/slJbOfzfUMKKC5QA== +jest-matcher-utils@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" + integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== dependencies: chalk "^4.0.0" - jest-diff "^29.6.1" - jest-get-type "^29.4.3" - pretty-format "^29.6.1" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + pretty-format "^29.7.0" -jest-message-util@^29.6.1: - version "29.6.1" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.6.1.tgz#d0b21d87f117e1b9e165e24f245befd2ff34ff8d" - integrity sha512-KoAW2zAmNSd3Gk88uJ56qXUWbFk787QKmjjJVOjtGFmmGSZgDBrlIL4AfQw1xyMYPNVD7dNInfIbur9B2rd/wQ== +jest-message-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.7.0.tgz#8bc392e204e95dfe7564abbe72a404e28e51f7f3" + integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w== dependencies: "@babel/code-frame" "^7.12.13" - "@jest/types" "^29.6.1" + "@jest/types" "^29.6.3" "@types/stack-utils" "^2.0.0" chalk "^4.0.0" graceful-fs "^4.2.9" micromatch "^4.0.4" - pretty-format "^29.6.1" + pretty-format "^29.7.0" slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^29.4.3, jest-mock@^29.6.1: - version "29.6.1" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.6.1.tgz#049ee26aea8cbf54c764af649070910607316517" - integrity sha512-brovyV9HBkjXAEdRooaTQK42n8usKoSRR3gihzUpYeV/vwqgSoNfrksO7UfSACnPmxasO/8TmHM3w9Hp3G1dgw== +jest-mock@^29.4.3, jest-mock@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.7.0.tgz#4e836cf60e99c6fcfabe9f99d017f3fdd50a6347" + integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw== dependencies: - "@jest/types" "^29.6.1" + "@jest/types" "^29.6.3" "@types/node" "*" - jest-util "^29.6.1" + jest-util "^29.7.0" jest-pnp-resolver@^1.2.2: version "1.2.3" @@ -13051,152 +13141,151 @@ jest-preset-angular@13.1.1: optionalDependencies: esbuild ">=0.13.8" -jest-regex-util@^29.4.3: - version "29.4.3" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.4.3.tgz#a42616141e0cae052cfa32c169945d00c0aa0bb8" - integrity sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg== +jest-regex-util@^29.6.3: + version "29.6.3" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52" + integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== -jest-resolve-dependencies@^29.6.1: - version "29.6.1" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.6.1.tgz#b85b06670f987a62515bbf625d54a499e3d708f5" - integrity sha512-BbFvxLXtcldaFOhNMXmHRWx1nXQO5LoXiKSGQcA1LxxirYceZT6ch8KTE1bK3X31TNG/JbkI7OkS/ABexVahiw== +jest-resolve-dependencies@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428" + integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== dependencies: - jest-regex-util "^29.4.3" - jest-snapshot "^29.6.1" + jest-regex-util "^29.6.3" + jest-snapshot "^29.7.0" -jest-resolve@^29.4.1, jest-resolve@^29.6.1: - version "29.6.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.6.1.tgz#4c3324b993a85e300add2f8609f51b80ddea39ee" - integrity sha512-AeRkyS8g37UyJiP9w3mmI/VXU/q8l/IH52vj/cDAyScDcemRbSBhfX/NMYIGilQgSVwsjxrCHf3XJu4f+lxCMg== +jest-resolve@^29.4.1, jest-resolve@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30" + integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== dependencies: chalk "^4.0.0" graceful-fs "^4.2.9" - jest-haste-map "^29.6.1" + jest-haste-map "^29.7.0" jest-pnp-resolver "^1.2.2" - jest-util "^29.6.1" - jest-validate "^29.6.1" + jest-util "^29.7.0" + jest-validate "^29.7.0" resolve "^1.20.0" resolve.exports "^2.0.0" slash "^3.0.0" -jest-runner@^29.6.1: - version "29.6.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.6.1.tgz#54557087e7972d345540d622ab5bfc3d8f34688c" - integrity sha512-tw0wb2Q9yhjAQ2w8rHRDxteryyIck7gIzQE4Reu3JuOBpGp96xWgF0nY8MDdejzrLCZKDcp8JlZrBN/EtkQvPQ== +jest-runner@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e" + integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== dependencies: - "@jest/console" "^29.6.1" - "@jest/environment" "^29.6.1" - "@jest/test-result" "^29.6.1" - "@jest/transform" "^29.6.1" - "@jest/types" "^29.6.1" + "@jest/console" "^29.7.0" + "@jest/environment" "^29.7.0" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" chalk "^4.0.0" emittery "^0.13.1" graceful-fs "^4.2.9" - jest-docblock "^29.4.3" - jest-environment-node "^29.6.1" - jest-haste-map "^29.6.1" - jest-leak-detector "^29.6.1" - jest-message-util "^29.6.1" - jest-resolve "^29.6.1" - jest-runtime "^29.6.1" - jest-util "^29.6.1" - jest-watcher "^29.6.1" - jest-worker "^29.6.1" + jest-docblock "^29.7.0" + jest-environment-node "^29.7.0" + jest-haste-map "^29.7.0" + jest-leak-detector "^29.7.0" + jest-message-util "^29.7.0" + jest-resolve "^29.7.0" + jest-runtime "^29.7.0" + jest-util "^29.7.0" + jest-watcher "^29.7.0" + jest-worker "^29.7.0" p-limit "^3.1.0" source-map-support "0.5.13" -jest-runtime@^29.6.1: - version "29.6.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.6.1.tgz#8a0fc9274ef277f3d70ba19d238e64334958a0dc" - integrity sha512-D6/AYOA+Lhs5e5il8+5pSLemjtJezUr+8zx+Sn8xlmOux3XOqx4d8l/2udBea8CRPqqrzhsKUsN/gBDE/IcaPQ== - dependencies: - "@jest/environment" "^29.6.1" - "@jest/fake-timers" "^29.6.1" - "@jest/globals" "^29.6.1" - "@jest/source-map" "^29.6.0" - "@jest/test-result" "^29.6.1" - "@jest/transform" "^29.6.1" - "@jest/types" "^29.6.1" +jest-runtime@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817" + integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== + dependencies: + "@jest/environment" "^29.7.0" + "@jest/fake-timers" "^29.7.0" + "@jest/globals" "^29.7.0" + "@jest/source-map" "^29.6.3" + "@jest/test-result" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" chalk "^4.0.0" cjs-module-lexer "^1.0.0" collect-v8-coverage "^1.0.0" glob "^7.1.3" graceful-fs "^4.2.9" - jest-haste-map "^29.6.1" - jest-message-util "^29.6.1" - jest-mock "^29.6.1" - jest-regex-util "^29.4.3" - jest-resolve "^29.6.1" - jest-snapshot "^29.6.1" - jest-util "^29.6.1" + jest-haste-map "^29.7.0" + jest-message-util "^29.7.0" + jest-mock "^29.7.0" + jest-regex-util "^29.6.3" + jest-resolve "^29.7.0" + jest-snapshot "^29.7.0" + jest-util "^29.7.0" slash "^3.0.0" strip-bom "^4.0.0" -jest-snapshot@^29.6.1: - version "29.6.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.6.1.tgz#0d083cb7de716d5d5cdbe80d598ed2fbafac0239" - integrity sha512-G4UQE1QQ6OaCgfY+A0uR1W2AY0tGXUPQpoUClhWHq1Xdnx1H6JOrC2nH5lqnOEqaDgbHFgIwZ7bNq24HpB180A== +jest-snapshot@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5" + integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw== dependencies: "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" "@babel/plugin-syntax-jsx" "^7.7.2" "@babel/plugin-syntax-typescript" "^7.7.2" "@babel/types" "^7.3.3" - "@jest/expect-utils" "^29.6.1" - "@jest/transform" "^29.6.1" - "@jest/types" "^29.6.1" - "@types/prettier" "^2.1.5" + "@jest/expect-utils" "^29.7.0" + "@jest/transform" "^29.7.0" + "@jest/types" "^29.6.3" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^29.6.1" + expect "^29.7.0" graceful-fs "^4.2.9" - jest-diff "^29.6.1" - jest-get-type "^29.4.3" - jest-matcher-utils "^29.6.1" - jest-message-util "^29.6.1" - jest-util "^29.6.1" + jest-diff "^29.7.0" + jest-get-type "^29.6.3" + jest-matcher-utils "^29.7.0" + jest-message-util "^29.7.0" + jest-util "^29.7.0" natural-compare "^1.4.0" - pretty-format "^29.6.1" + pretty-format "^29.7.0" semver "^7.5.3" -jest-util@^29.0.0, jest-util@^29.4.1, jest-util@^29.4.3, jest-util@^29.6.1: - version "29.6.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.6.1.tgz#c9e29a87a6edbf1e39e6dee2b4689b8a146679cb" - integrity sha512-NRFCcjc+/uO3ijUVyNOQJluf8PtGCe/W6cix36+M3cTFgiYqFOOW5MgN4JOOcvbUhcKTYVd1CvHz/LWi8d16Mg== +jest-util@^29.0.0, jest-util@^29.4.1, jest-util@^29.4.3, jest-util@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.7.0.tgz#23c2b62bfb22be82b44de98055802ff3710fc0bc" + integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA== dependencies: - "@jest/types" "^29.6.1" + "@jest/types" "^29.6.3" "@types/node" "*" chalk "^4.0.0" ci-info "^3.2.0" graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@^29.6.1: - version "29.6.1" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.6.1.tgz#765e684af6e2c86dce950aebefbbcd4546d69f7b" - integrity sha512-r3Ds69/0KCN4vx4sYAbGL1EVpZ7MSS0vLmd3gV78O+NAx3PDQQukRU5hNHPXlyqCgFY8XUk7EuTMLugh0KzahA== +jest-validate@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c" + integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== dependencies: - "@jest/types" "^29.6.1" + "@jest/types" "^29.6.3" camelcase "^6.2.0" chalk "^4.0.0" - jest-get-type "^29.4.3" + jest-get-type "^29.6.3" leven "^3.1.0" - pretty-format "^29.6.1" + pretty-format "^29.7.0" -jest-watcher@^29.6.1: - version "29.6.1" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.6.1.tgz#7c0c43ddd52418af134c551c92c9ea31e5ec942e" - integrity sha512-d4wpjWTS7HEZPaaj8m36QiaP856JthRZkrgcIY/7ISoUWPIillrXM23WPboZVLbiwZBt4/qn2Jke84Sla6JhFA== +jest-watcher@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2" + integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== dependencies: - "@jest/test-result" "^29.6.1" - "@jest/types" "^29.6.1" + "@jest/test-result" "^29.7.0" + "@jest/types" "^29.6.3" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" emittery "^0.13.1" - jest-util "^29.6.1" + jest-util "^29.7.0" string-length "^4.0.1" jest-worker@^27.4.5: @@ -13208,13 +13297,13 @@ jest-worker@^27.4.5: merge-stream "^2.0.0" supports-color "^8.0.0" -jest-worker@^29.4.3, jest-worker@^29.6.1: - version "29.6.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.6.1.tgz#64b015f0e985ef3a8ad049b61fe92b3db74a5319" - integrity sha512-U+Wrbca7S8ZAxAe9L6nb6g8kPdia5hj32Puu5iOqBCMTMWFHXuK6dOV2IFrpedbTV8fjMFLdWNttQTBL6u2MRA== +jest-worker@^29.4.3, jest-worker@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a" + integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw== dependencies: "@types/node" "*" - jest-util "^29.6.1" + jest-util "^29.7.0" merge-stream "^2.0.0" supports-color "^8.0.0" @@ -13229,9 +13318,9 @@ jest@29.4.3: jest-cli "^29.4.3" jiti@^1.18.2: - version "1.19.1" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.19.1.tgz#fa99e4b76a23053e0e7cde098efe1704a14c16f1" - integrity sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg== + version "1.20.0" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.20.0.tgz#2d823b5852ee8963585c8dd8b7992ffc1ae83b42" + integrity sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA== js-levenshtein@~1.1.6: version "1.1.6" @@ -13239,9 +13328,9 @@ js-levenshtein@~1.1.6: integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== js-sdsl@^4.1.4: - version "4.4.1" - resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.1.tgz#9e3c7b566d8d9a7e1fe8fc26d00b5ab0f8918ab3" - integrity sha512-6Gsx8R0RucyePbWqPssR8DyfuXmLBooYN5cZFZKjHGnQuaf7pEzhtpceagJxVu4LqhYY5EYA7nko3FmeHZ1KbA== + version "4.4.2" + resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.4.2.tgz#2e3c031b1f47d3aca8b775532e3ebb0818e7f847" + integrity sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w== js-sha256@0.9.0, js-sha256@^0.9.0: version "0.9.0" @@ -13445,9 +13534,9 @@ json5@^2.1.2, json5@^2.2.2, json5@^2.2.3: integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== jsonc-eslint-parser@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/jsonc-eslint-parser/-/jsonc-eslint-parser-2.3.0.tgz#7c2de97d01bff7227cbef2f25d1025d42a36198b" - integrity sha512-9xZPKVYp9DxnM3sd1yAsh/d59iIaswDkai8oTxbursfKYbg/ibjX0IzFt35+VZ8iEW453TVTXztnRvYUQlAfUQ== + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.0.tgz#74ded53f9d716e8d0671bd167bf5391f452d5461" + integrity sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg== dependencies: acorn "^8.5.0" eslint-visitor-keys "^3.0.0" @@ -13551,23 +13640,23 @@ karma-source-map-support@1.4.0: source-map-support "^0.5.5" katex@^0.16.0: - version "0.16.8" - resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.8.tgz#89b453f40e8557f423f31a1009e9298dd99d5ceb" - integrity sha512-ftuDnJbcbOckGY11OO+zg3OofESlbR5DRl2cmN8HeWeeFIV7wTXvAOx8kEjZjobhA+9wh2fbKeO6cdcA9Mnovg== + version "0.16.9" + resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.9.tgz#bc62d8f7abfea6e181250f85a56e4ef292dcb1fa" + integrity sha512-fsSYjWS0EEOwvy81j3vRA8TEAhQhKiqO+FQaKWp0m39qwOzHVBgAUBIXWj1pB+O2W3fIpNa6Y9KSKCVbfPhyAQ== dependencies: commander "^8.3.0" -keyv@^4.0.0: - version "4.5.3" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.3.tgz#00873d2b046df737963157bd04f294ca818c9c25" - integrity sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug== +keyv@^4.0.0, keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== dependencies: json-buffer "3.0.1" khroma@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/khroma/-/khroma-2.0.0.tgz#7577de98aed9f36c7a474c4d453d94c0d6c6588b" - integrity sha512-2J8rDNlQWbtiNYThZRvmMv5yt44ZakX+Tz5ZIp/mN1pt4snn+m030Va5Z4v8xA0cQFDXBwO/8i42xL4QPsVk3g== + version "2.1.0" + resolved "https://registry.yarnpkg.com/khroma/-/khroma-2.1.0.tgz#45f2ce94ce231a437cf5b63c2e886e6eb42bbbb1" + integrity sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw== kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" @@ -13604,12 +13693,12 @@ klona@^2.0.4, klona@^2.0.5: integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== launch-editor@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.0.tgz#4c0c1a6ac126c572bd9ff9a30da1d2cae66defd7" - integrity sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ== + version "2.6.1" + resolved "https://registry.yarnpkg.com/launch-editor/-/launch-editor-2.6.1.tgz#f259c9ef95cbc9425620bbbd14b468fcdb4ffe3c" + integrity sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw== dependencies: picocolors "^1.0.0" - shell-quote "^1.7.3" + shell-quote "^1.8.1" layout-base@^1.0.0: version "1.0.2" @@ -13688,9 +13777,9 @@ levn@^0.4.1: type-check "~0.4.0" libphonenumber-js@^1.10.14: - version "1.10.37" - resolved "https://registry.yarnpkg.com/libphonenumber-js/-/libphonenumber-js-1.10.37.tgz#185264130c9375f17d0c487a288223294579929c" - integrity sha512-Z10PCaOCiAxbUxLyR31DNeeNugSVP6iv/m7UrSKS5JHziEMApJtgku4e9Q69pzzSC9LnQiM09sqsGf2ticZnMw== + version "1.10.48" + resolved "https://registry.yarnpkg.com/libphonenumber-js/-/libphonenumber-js-1.10.48.tgz#3c426b4aa21dfe3210bfbda47d208acffa3631bf" + integrity sha512-Vvcgt4+o8+puIBJZLdMshPYx9nRN3/kTT7HPtOyfYrSQuN9PGBF1KUv0g07fjNzt4E4GuA7FnsLb+WeAMzyRQg== license-webpack-plugin@4.0.2, license-webpack-plugin@^4.0.2: version "4.0.2" @@ -13931,6 +14020,11 @@ lru-cache@6.0.0, lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +lru-cache@^10.0.1, "lru-cache@^9.1.1 || ^10.0.0": + version "10.0.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.1.tgz#0a3be479df549cca0e5d693ac402ff19537a6b7a" + integrity sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g== + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -13943,15 +14037,10 @@ lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== -"lru-cache@^9.1.1 || ^10.0.0": - version "10.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.0.0.tgz#b9e2a6a72a129d81ab317202d93c7691df727e61" - integrity sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw== - luxon@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.3.0.tgz#d73ab5b5d2b49a461c47cedbc7e73309b4805b48" - integrity sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg== + version "3.4.3" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.4.3.tgz#8ddf0358a9492267ffec6a13675fbaab5551315d" + integrity sha512-tFWBiv3h7z+T/tDaoxA8rqTxy1CHV6gHS//QdaH4pulbq/JuBSGgQspQQqcgnwdAx6pNI7cmvz5Sv/addzHmUg== magic-string@0.30.0: version "0.30.0" @@ -13968,9 +14057,9 @@ magic-string@0.30.1: "@jridgewell/sourcemap-codec" "^1.4.15" magic-string@~0.30.2: - version "0.30.2" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.2.tgz#dcf04aad3d0d1314bc743d076c50feb29b3c7aca" - integrity sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug== + version "0.30.5" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9" + integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA== dependencies: "@jridgewell/sourcemap-codec" "^1.4.15" @@ -13982,13 +14071,20 @@ make-dir@^2.0.0, make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.0, make-dir@^3.0.2: +make-dir@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== dependencies: semver "^6.0.0" +make-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" + integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== + dependencies: + semver "^7.5.3" + make-error@1.x, make-error@^1.1.1: version "1.3.6" resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" @@ -14047,9 +14143,9 @@ map-visit@^1.0.0: object-visit "^1.0.0" markdown-to-jsx@^7.1.8: - version "7.2.1" - resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-7.2.1.tgz#87061fd3176ad926ef3d99493e5c57f6335e0c51" - integrity sha512-9HrdzBAo0+sFz9ZYAGT5fB8ilzTW+q6lPocRxrIesMO+aB40V9MgFfbfMXxlGjf22OpRy+IXlvVaQenicdpgbg== + version "7.3.2" + resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-7.3.2.tgz#f286b4d112dad3028acc1e77dfe1f653b347e131" + integrity sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q== marked@4.2.12: version "4.2.12" @@ -14277,11 +14373,11 @@ minipass-collect@^1.0.2: minipass "^3.0.0" minipass-fetch@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-3.0.3.tgz#d9df70085609864331b533c960fd4ffaa78d15ce" - integrity sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ== + version "3.0.4" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-3.0.4.tgz#4d4d9b9f34053af6c6e597a64be8e66e42bf45b7" + integrity sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg== dependencies: - minipass "^5.0.0" + minipass "^7.0.3" minipass-sized "^1.0.3" minizlib "^2.1.2" optionalDependencies: @@ -14328,10 +14424,10 @@ minipass@^5.0.0: resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": - version "7.0.2" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.2.tgz#58a82b7d81c7010da5bd4b2c0c85ac4b4ec5131e" - integrity sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA== +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.3: + version "7.0.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" + integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== minizlib@^2.1.1, minizlib@^2.1.2: version "2.1.2" @@ -14421,9 +14517,9 @@ msgpackr-extract@^3.0.2: "@msgpackr-extract/msgpackr-extract-win32-x64" "3.0.2" msgpackr@^1.5.2: - version "1.9.5" - resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.9.5.tgz#ac548c5f4546db895e84e46d39d813be961dc527" - integrity sha512-/IJ3cFSN6Ci3eG2wLhbFEL6GT63yEaoN/R5My2QkV6zro+OJaVRLPlwvxY7EtHYSmDlQpk8stvOQTL2qJFkDRg== + version "1.9.9" + resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.9.9.tgz#ec71e37beb8729280847f683cb0a340eb35ce70f" + integrity sha512-sbn6mioS2w0lq1O6PpGtsv6Gy8roWM+o3o4Sqjd6DudrL/nOugY+KyJUimoWzHnf9OkO0T6broHFnYE/R05t9A== optionalDependencies: msgpackr-extract "^3.0.2" @@ -14504,7 +14600,7 @@ negotiator@0.6.3, negotiator@^0.6.3: resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== -neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.2: +neo-async@^2.5.0, neo-async@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== @@ -14583,7 +14679,7 @@ node-abort-controller@^3.0.1: resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-3.1.1.tgz#a94377e964a9a37ac3976d848cb5c765833b8548" integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ== -node-addon-api@^3.0.0, node-addon-api@^3.2.1: +node-addon-api@^3.0.0: version "3.2.1" resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== @@ -14595,15 +14691,15 @@ node-dir@^0.1.17: dependencies: minimatch "^3.0.2" -node-fetch-native@^1.0.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.2.0.tgz#13ec6df98f33168958dbfb6945f10aedf42e7ea8" - integrity sha512-5IAMBTl9p6PaAjYCnMv5FmqIF6GcZnawAVnzaCG0rX2aYZJ4CxEkZNtVPuTRug7fL7wyM5BQYTlAzcyMPi6oTQ== +node-fetch-native@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/node-fetch-native/-/node-fetch-native-1.4.0.tgz#fbe8ac033cb6aa44bd106b5e4fd2b6277ba70fa1" + integrity sha512-F5kfEj95kX8tkDhUCYdV8dg3/8Olx/94zB8+ZNthFs6Bz31UpUi8Xh40TN3thLwXgrwXry1pEg9lJ++tLWTcqA== node-fetch@^2.0.0, node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7: - version "2.6.12" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.12.tgz#02eb8e22074018e3d5a83016649d04df0e348fba" - integrity sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g== + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== dependencies: whatwg-url "^5.0.0" @@ -14622,10 +14718,10 @@ node-gyp-build-optional-packages@5.0.7: resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz#5d2632bbde0ab2f6e22f1bbac2199b07244ae0b3" integrity sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w== -node-gyp-build@^4.2.2, node-gyp-build@^4.3.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" - integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== +node-gyp-build@^4.2.2: + version "4.6.1" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.1.tgz#24b6d075e5e391b8d5539d98c7fc5c210cac8a3e" + integrity sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ== node-gyp@^9.0.0: version "9.4.0" @@ -14649,12 +14745,12 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== -node-machine-id@1.1.12, node-machine-id@^1.1.12: +node-machine-id@1.1.12: version "1.1.12" resolved "https://registry.yarnpkg.com/node-machine-id/-/node-machine-id-1.1.12.tgz#37904eee1e59b320bb9c5d6c0a59f3b469cb6267" integrity sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ== -node-releases@^2.0.12: +node-releases@^2.0.13: version "2.0.13" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== @@ -14714,9 +14810,9 @@ npm-bundled@^3.0.0: npm-normalize-package-bin "^3.0.0" npm-install-checks@^6.0.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-6.1.1.tgz#b459b621634d06546664207fde16810815808db1" - integrity sha512-dH3GmQL4vsPtld59cOn8uY0iOqRmqKvV+DLGwNXV/Q7MDgD2QfOADWd/mFXcIE5LVhYYGjA3baz6W9JneqnuCw== + version "6.3.0" + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-6.3.0.tgz#046552d8920e801fa9f919cad569545d60e826fe" + integrity sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw== dependencies: semver "^7.1.1" @@ -14735,6 +14831,16 @@ npm-package-arg@10.1.0, npm-package-arg@^10.0.0: semver "^7.3.5" validate-npm-package-name "^5.0.0" +npm-package-arg@11.0.1: + version "11.0.1" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-11.0.1.tgz#f208b0022c29240a1c532a449bdde3f0a4708ebc" + integrity sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ== + dependencies: + hosted-git-info "^7.0.0" + proc-log "^3.0.0" + semver "^7.3.5" + validate-npm-package-name "^5.0.0" + npm-packlist@^7.0.0: version "7.0.4" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-7.0.4.tgz#033bf74110eb74daf2910dc75144411999c5ff32" @@ -14742,7 +14848,7 @@ npm-packlist@^7.0.0: dependencies: ignore-walk "^6.0.0" -npm-pick-manifest@8.0.1, npm-pick-manifest@^8.0.0: +npm-pick-manifest@8.0.1: version "8.0.1" resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz#c6acd97d1ad4c5dbb80eac7b386b03ffeb289e5f" integrity sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA== @@ -14752,6 +14858,16 @@ npm-pick-manifest@8.0.1, npm-pick-manifest@^8.0.0: npm-package-arg "^10.0.0" semver "^7.3.5" +npm-pick-manifest@^8.0.0: + version "8.0.2" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-8.0.2.tgz#2159778d9c7360420c925c1a2287b5a884c713aa" + integrity sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg== + dependencies: + npm-install-checks "^6.0.0" + npm-normalize-package-bin "^3.0.0" + npm-package-arg "^10.0.0" + semver "^7.3.5" + npm-registry-fetch@^14.0.0: version "14.0.5" resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz#fe7169957ba4986a4853a650278ee02e568d115d" @@ -14816,45 +14932,29 @@ nwsapi@^2.2.0, nwsapi@^2.2.2: resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.7.tgz#738e0707d3128cb750dddcfe90e4610482df0f30" integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== -nx-cloud@16.3.0: - version "16.3.0" - resolved "https://registry.yarnpkg.com/nx-cloud/-/nx-cloud-16.3.0.tgz#f916c0be1d7eb5d017d542fea349e09893502ee9" - integrity sha512-hmNgpeLO4v4WDSWa8YhwX+q+9ohIyY8iqxlWyIKixWzQH2XfRgYFjOLH4IDLGOlKa3hg7MB6+4+75cK9CfSmKw== - dependencies: - "@nrwl/nx-cloud" "16.3.0" - axios "1.1.3" - chalk "^4.1.0" - dotenv "~10.0.0" - fs-extra "^11.1.0" - node-machine-id "^1.1.12" - open "~8.4.0" - strip-json-comments "^3.1.1" - tar "6.1.11" - yargs-parser ">=21.1.1" - -nx@16.7.4: - version "16.7.4" - resolved "https://registry.yarnpkg.com/nx/-/nx-16.7.4.tgz#355cfe9187822fa29676b88da1673a09acab990e" - integrity sha512-L0Cbikk5kO+IBH0UQ2BOAut5ndeHXBlACKzjOPOCluY8WYh2sxWYt9/N/juFBN3XXRX7ionTr1PhWUzNE0Mzqw== +nx@17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/nx/-/nx-17.0.2.tgz#bbc941f9e8ddc886902605f414cda41a21e4cc77" + integrity sha512-utk9ufxLlRd210nEV6cKjMLVK0gup2ZMlNT41lLgUX/gp3Q59G1NkyLo3o29DxBh3AhNJ9q5MKgybmzDNdpudA== dependencies: - "@nrwl/tao" "16.7.4" - "@parcel/watcher" "2.0.4" + "@nrwl/tao" "17.0.2" "@yarnpkg/lockfile" "^1.1.0" "@yarnpkg/parsers" "3.0.0-rc.46" "@zkochan/js-yaml" "0.0.6" - axios "^1.0.0" + axios "^1.5.1" chalk "^4.1.0" cli-cursor "3.1.0" cli-spinners "2.6.1" - cliui "^7.0.2" + cliui "^8.0.1" dotenv "~16.3.1" + dotenv-expand "~10.0.0" enquirer "~2.3.6" - fast-glob "3.2.7" figures "3.2.0" flat "^5.0.2" fs-extra "^11.1.0" glob "7.1.4" ignore "^5.0.4" + jest-diff "^29.4.1" js-yaml "4.1.0" jsonc-parser "3.2.0" lines-and-columns "~2.0.3" @@ -14873,16 +14973,16 @@ nx@16.7.4: yargs "^17.6.2" yargs-parser "21.1.1" optionalDependencies: - "@nx/nx-darwin-arm64" "16.7.4" - "@nx/nx-darwin-x64" "16.7.4" - "@nx/nx-freebsd-x64" "16.7.4" - "@nx/nx-linux-arm-gnueabihf" "16.7.4" - "@nx/nx-linux-arm64-gnu" "16.7.4" - "@nx/nx-linux-arm64-musl" "16.7.4" - "@nx/nx-linux-x64-gnu" "16.7.4" - "@nx/nx-linux-x64-musl" "16.7.4" - "@nx/nx-win32-arm64-msvc" "16.7.4" - "@nx/nx-win32-x64-msvc" "16.7.4" + "@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" oauth@0.9.x: version "0.9.15" @@ -14903,12 +15003,12 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.12.3, object-inspect@^1.9.0: - version "1.12.3" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" - integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== +object-inspect@^1.13.1, object-inspect@^1.9.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== -object-is@^1.0.1, object-is@^1.1.5: +object-is@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== @@ -14951,13 +15051,13 @@ object.pick@^1.3.0: isobject "^3.0.1" object.values@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d" - integrity sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw== + version "1.1.7" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" + integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" @@ -15002,7 +15102,7 @@ onetime@^5.1.0, onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" -open@8.4.2, open@^8.0.4, open@^8.0.9, open@^8.4.0, open@~8.4.0: +open@8.4.2, open@^8.0.4, open@^8.0.9, open@^8.4.0: version "8.4.2" resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== @@ -15048,6 +15148,20 @@ optionator@^0.9.1: prelude-ls "^1.2.1" type-check "^0.4.0" +ora@5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.3.0.tgz#fb832899d3a1372fe71c8b2c534bbfe74961bb6f" + integrity sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g== + dependencies: + bl "^4.0.3" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + log-symbols "^4.0.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + ora@5.4.1, ora@^5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" @@ -15437,7 +15551,7 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -pathe@^1.1.0: +pathe@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.1.tgz#1dd31d382b974ba69809adc9a7a347e65d84829a" integrity sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q== @@ -15841,19 +15955,10 @@ postcss@8.4.27: picocolors "^1.0.0" source-map-js "^1.0.2" -postcss@^8.2.14, postcss@^8.4.14, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.24: - version "8.4.26" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.26.tgz#1bc62ab19f8e1e5463d98cf74af39702a00a9e94" - integrity sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw== - dependencies: - nanoid "^3.3.6" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -postcss@^8.4.26: - version "8.4.28" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.28.tgz#c6cc681ed00109072816e1557f889ef51cf950a5" - integrity sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw== +postcss@^8.2.14, postcss@^8.4.14, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.24, postcss@^8.4.26: + version "8.4.31" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== dependencies: nanoid "^3.3.6" picocolors "^1.0.0" @@ -15897,12 +16002,12 @@ pretty-error@^4.0.0: lodash "^4.17.20" renderkid "^3.0.0" -pretty-format@^29.0.0, pretty-format@^29.6.1: - version "29.6.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.6.1.tgz#ec838c288850b7c4f9090b867c2d4f4edbfb0f3e" - integrity sha512-7jRj+yXO0W7e4/tSJKoR7HRIHLPPjtNaUGG2xxKQnGvPNRkgWcQ0AZX6P4KBRJN4FcTBWb3sa7DVUJmocYuoog== +pretty-format@^29.0.0, pretty-format@^29.7.0: + version "29.7.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" + integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== dependencies: - "@jest/schemas" "^29.6.0" + "@jest/schemas" "^29.6.3" ansi-styles "^5.0.0" react-is "^18.0.0" @@ -15991,7 +16096,7 @@ prr@~1.0.1: resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== -psl@^1.1.28, psl@^1.1.33: +psl@^1.1.33: version "1.9.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== @@ -16048,16 +16153,16 @@ puppeteer-core@^2.1.1: ws "^6.1.0" pure-rand@^6.0.0: - version "6.0.2" - resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.2.tgz#a9c2ddcae9b68d736a8163036f088a2781c8b306" - integrity sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ== + version "6.0.4" + resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.4.tgz#50b737f6a925468679bff00ad20eade53f37d5c7" + integrity sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA== -pvtsutils@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.3.2.tgz#9f8570d132cdd3c27ab7d51a2799239bf8d8d5de" - integrity sha512-+Ipe2iNUyrZz+8K/2IOo+kKikdtfhRKzNpQbruF2URmqPtoqAs8g3xS7TJvFF2GcPXjh7DkqMnpVveRFq4PgEQ== +pvtsutils@^1.3.2, pvtsutils@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/pvtsutils/-/pvtsutils-1.3.5.tgz#b8705b437b7b134cd7fd858f025a23456f1ce910" + integrity sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA== dependencies: - tslib "^2.4.0" + tslib "^2.6.1" pvutils@^1.1.3: version "1.1.3" @@ -16071,7 +16176,7 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" -qs@^6.10.0, qs@^6.11.0, qs@^6.4.0: +qs@^6.10.0, qs@^6.11.0, qs@^6.11.2, qs@^6.4.0: version "6.11.2" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9" integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== @@ -16289,9 +16394,9 @@ recast@^0.21.0: tslib "^2.0.1" recast@^0.23.1: - version "0.23.3" - resolved "https://registry.yarnpkg.com/recast/-/recast-0.23.3.tgz#f205d1f46b2c6f730de413ab18f96c166263d85f" - integrity sha512-HbCVFh2ANP6a09nzD4lx7XthsxMOJWKX5pIcUwtLrmeEIl3I0DwjCoVXDE0Aobk+7k/mS3H50FK4iuYArpcT6Q== + version "0.23.4" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.23.4.tgz#ca1bac7bfd3011ea5a28dfecb5df678559fb1ddf" + integrity sha512-qtEDqIZGVcSZCHniWwZWbRy79Dc6Wp3kT/UmDA2RJKBPg7+7k51aQBZirHmUGn5uvHf2rg8DkjizrN26k61ATw== dependencies: assert "^2.0.0" ast-types "^0.16.1" @@ -16339,9 +16444,9 @@ reflect-metadata@0.1.13, reflect-metadata@^0.1.2: integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== regenerate-unicode-properties@^10.1.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" - integrity sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ== + version "10.1.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" + integrity sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q== dependencies: regenerate "^1.4.2" @@ -16355,10 +16460,15 @@ regenerator-runtime@^0.13.11: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== -regenerator-transform@^0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56" - integrity sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg== +regenerator-runtime@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" + integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== + +regenerator-transform@^0.15.2: + version "0.15.2" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" + integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== dependencies: "@babel/runtime" "^7.8.4" @@ -16375,14 +16485,14 @@ regex-parser@^2.2.11: resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58" integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q== -regexp.prototype.flags@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz#fe7ce25e7e4cca8db37b6634c8a2c7009199b9cb" - integrity sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA== +regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" + integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== dependencies: call-bind "^1.0.2" define-properties "^1.2.0" - functions-have-names "^1.2.3" + set-function-name "^2.0.0" regexpp@^2.0.1: version "2.0.1" @@ -16553,7 +16663,7 @@ resolve.exports@^2.0.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== -resolve@1.22.2, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.8.1: +resolve@1.22.2: version "1.22.2" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== @@ -16562,6 +16672,15 @@ resolve@1.22.2, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0 path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.4, resolve@^1.8.1: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + responselike@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" @@ -16640,9 +16759,9 @@ robust-predicates@^3.0.0: integrity sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg== rollup@^3.25.2: - version "3.28.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.28.0.tgz#a3c70004b01934760c0cb8df717c7a1d932389a2" - integrity sha512-d7zhvo1OUY2SXSM6pfNjgD5+d0Nz87CUp4mt8l/GgVP3oBsPwzNvSzyu1me6BSG9JIgWNTVcafIXBIyM8yQ3yw== + version "3.29.4" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.4.tgz#4d70c0f9834146df8705bfb69a9a19c9e1109981" + integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw== optionalDependencies: fsevents "~2.3.2" @@ -16670,6 +16789,16 @@ rxjs@7.5.6, rxjs@7.8.1, rxjs@^6.3.3, rxjs@^6.4.0, rxjs@^6.5.3, rxjs@^7.5.5, rxjs dependencies: tslib "^2.1.0" +safe-array-concat@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" + integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + isarray "^2.0.5" + safe-buffer@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" @@ -16736,15 +16865,20 @@ sass@1.64.1: source-map-js ">=0.6.2 <2.0.0" sass@^1.42.1: - version "1.63.6" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.63.6.tgz#481610e612902e0c31c46b46cf2dad66943283ea" - integrity sha512-MJuxGMHzaOW7ipp+1KdELtqKbfAWbH7OLIdoSMnVe3EXPMTmxTmlaZDCTsgIpPCs3w99lLo9/zDKkOrJuT5byw== + version "1.69.5" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.69.5.tgz#23e18d1c757a35f2e52cc81871060b9ad653dfde" + integrity sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" source-map-js ">=0.6.2 <2.0.0" -sax@^1.2.4, sax@~1.2.4: +sax@^1.2.4: + version "1.3.0" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.3.0.tgz#a5dbe77db3be05c9d1ee7785dbd3ea9de51593d0" + integrity sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA== + +sax@~1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -16805,10 +16939,11 @@ select@^1.1.2: integrity sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA== selfsigned@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.1.1.tgz#18a7613d714c0cd3385c48af0075abf3f266af61" - integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ== + version "2.4.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" + integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== dependencies: + "@types/node-forge" "^1.3.0" node-forge "^1" semver-dsl@^1.0.1: @@ -16830,7 +16965,7 @@ semver@7.5.3: dependencies: lru-cache "^6.0.0" -semver@7.5.4, semver@7.x, semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3: +semver@7.5.4, semver@7.x, semver@^7.0.0, semver@^7.1.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.3, semver@^7.5.4: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== @@ -16912,6 +17047,25 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +set-function-name@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== + dependencies: + define-data-property "^1.0.1" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.0" + set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" @@ -16963,7 +17117,7 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@^1.7.3: +shell-quote@^1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== @@ -17000,17 +17154,19 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== signal-exit@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.0.2.tgz#ff55bb1d9ff2114c13b400688fa544ac63c36967" - integrity sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q== + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== sigstore@^1.3.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/sigstore/-/sigstore-1.7.0.tgz#9186e6c8ce1ab0cba5d97b414212d40f0a01564e" - integrity sha512-KP7QULhWdlu3hlp+jw2EvgWKlOGOY9McLj/jrchLjHNlNPK0KWIwF919cbmOp6QiKXLmPijR2qH/5KYWlbtG9Q== + version "1.9.0" + resolved "https://registry.yarnpkg.com/sigstore/-/sigstore-1.9.0.tgz#1e7ad8933aa99b75c6898ddd0eeebc3eb0d59875" + integrity sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A== dependencies: - "@sigstore/protobuf-specs" "^0.1.0" - "@sigstore/tuf" "^1.0.1" + "@sigstore/bundle" "^1.1.0" + "@sigstore/protobuf-specs" "^0.2.0" + "@sigstore/sign" "^1.0.0" + "@sigstore/tuf" "^1.0.3" make-fetch-happen "^11.0.1" simple-cbor@^0.4.1: @@ -17202,7 +17358,7 @@ source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, sourc resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@0.7.4, source-map@^0.7.3: +source-map@0.7.4, source-map@^0.7.3, source-map@^0.7.4: version "0.7.4" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== @@ -17239,9 +17395,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.13" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz#7189a474c46f8d47c7b0da4b987bb45e908bd2d5" - integrity sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w== + version "3.0.16" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz#a14f64e0954f6e25cc6587bd4f392522db0d998f" + integrity sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw== spdy-transport@^3.0.0: version "3.0.0" @@ -17274,9 +17430,9 @@ split-string@^3.0.1, split-string@^3.0.2: extend-shallow "^3.0.0" sprintf-js@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" - integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== + version "1.1.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== sprintf-js@~1.0.2: version "1.0.3" @@ -17284,9 +17440,9 @@ sprintf-js@~1.0.2: integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== sshpk@^1.14.1: - version "1.17.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" - integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== + version "1.18.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.18.0.tgz#1663e55cddf4d688b86a46b77f0d5fe363aba028" + integrity sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ== dependencies: asn1 "~0.2.3" assert-plus "^1.0.0" @@ -17299,11 +17455,11 @@ sshpk@^1.14.1: tweetnacl "~0.14.0" ssri@^10.0.0: - version "10.0.4" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.4.tgz#5a20af378be586df139ddb2dfb3bf992cf0daba6" - integrity sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ== + version "10.0.5" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.5.tgz#e49efcd6e36385196cb515d3a2ad6c3f0265ef8c" + integrity sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A== dependencies: - minipass "^5.0.0" + minipass "^7.0.3" stack-utils@^2.0.3: version "2.0.6" @@ -17416,32 +17572,32 @@ string-width@^5.0.1, string-width@^5.1.2: emoji-regex "^9.2.2" strip-ansi "^7.0.1" -string.prototype.trim@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533" - integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg== +string.prototype.trim@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string.prototype.trimend@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533" - integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ== +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" -string.prototype.trimstart@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4" - integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA== +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.4" + define-properties "^1.2.0" + es-abstract "^1.22.1" string_decoder@^1.1.1: version "1.3.0" @@ -17692,22 +17848,10 @@ tar-stream@^2.1.4, tar-stream@~2.2.0: inherits "^2.0.3" readable-stream "^3.1.1" -tar@6.1.11: - version "6.1.11" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" - integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^3.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -tar@^6.1.11, tar@^6.1.13, tar@^6.1.2: - version "6.1.15" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.15.tgz#c9738b0b98845a3b344d334b8fa3041aaba53a69" - integrity sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A== +tar@^6.1.11, tar@^6.1.2, tar@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.0.tgz#b14ce49a79cb1cd23bc9b016302dea5474493f73" + integrity sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ== dependencies: chownr "^2.0.0" fs-minipass "^2.0.0" @@ -17716,10 +17860,10 @@ tar@^6.1.11, tar@^6.1.13, tar@^6.1.2: mkdirp "^1.0.3" yallist "^4.0.0" -telejson@^7.0.3: - version "7.1.0" - resolved "https://registry.yarnpkg.com/telejson/-/telejson-7.1.0.tgz#1ef7a0dd57eeb52cde933126f61bcc296c170f52" - integrity sha512-jFJO4P5gPebZAERPkJsqMAQ0IMA1Hi0AoSfxpnUaV6j6R2SZqlpkbS20U6dEUtA3RUYt2Ak/mTlkQzHH9Rv/hA== +telejson@^7.0.3, telejson@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/telejson/-/telejson-7.2.0.tgz#3994f6c9a8f8d7f2dba9be2c7c5bbb447e876f32" + integrity sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ== dependencies: memoizerific "^1.11.3" @@ -17768,9 +17912,9 @@ terser@5.19.2: source-map-support "~0.5.20" terser@^5.10.0, terser@^5.16.8: - version "5.19.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.19.0.tgz#7b3137b01226bdd179978207b9c8148754a6da9c" - integrity sha512-JpcpGOQLOXm2jsomozdMDpd5f8ZHh1rR48OFgWUH3QsyZcfPgv2qDCYbcDEAYNd4OZRj2bWYKpwdll/udZCk/Q== + version "5.22.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.22.0.tgz#4f18103f84c5c9437aafb7a14918273310a8a49d" + integrity sha512-hHZVLgRA2z4NWcN6aS5rQDc+7Dcy58HOf2zbYwmFcQ+ua3h6eEFf5lIDKTzbWwlazPyOZsFQO8V80/IjVNExEw== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -17881,9 +18025,9 @@ to-regex@^3.0.1, to-regex@^3.0.2: safe-regex "^1.1.0" tocbot@^4.20.1: - version "4.21.1" - resolved "https://registry.yarnpkg.com/tocbot/-/tocbot-4.21.1.tgz#7b667bef1c3ea1a07e4f400b742aa71e7e7e5ba0" - integrity sha512-IfajhBTeg0HlMXu1f+VMbPef05QpDTsZ9X2Yn1+8npdaXsXg/+wrm9Ze1WG5OS1UDC3qJ5EQN/XOZ3gfXjPFCw== + version "4.21.2" + resolved "https://registry.yarnpkg.com/tocbot/-/tocbot-4.21.2.tgz#7ae513d73dddb80f126724160bd6f72bf8638edb" + integrity sha512-R5Muhi/TUu4i4snWVrMgNoXyJm2f8sJfdgIkQvqb+cuIXQEIMAiWGWgCgYXHqX4+XiS/Bnm7IYZ9Zy6NVe6lhw== toidentifier@1.0.1: version "1.0.1" @@ -17897,7 +18041,7 @@ tough-cookie-file-store@^2.0.3: dependencies: tough-cookie "^4.0.0" -tough-cookie@^4.0.0, tough-cookie@^4.1.2: +tough-cookie@^4.0.0, tough-cookie@^4.1.2, tough-cookie@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== @@ -17907,14 +18051,6 @@ tough-cookie@^4.0.0, tough-cookie@^4.1.2: universalify "^0.2.0" url-parse "^1.5.3" -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - tr46@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" @@ -17973,14 +18109,15 @@ ts-jest@^29.0.0: yargs-parser "^21.0.1" ts-loader@^9.3.1: - version "9.4.4" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.4.4.tgz#6ceaf4d58dcc6979f84125335904920884b7cee4" - integrity sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w== + version "9.5.0" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.5.0.tgz#f0a51dda37cc4d8e43e6cb14edebbc599b0c3aa2" + integrity sha512-LLlB/pkB4q9mW2yLdFMnK3dEHbrBjeZTYguaaIfusyojBgAGf5kF+O6KcWqiGzWqHk0LBsoolrp4VftEURhybg== dependencies: chalk "^4.1.0" enhanced-resolve "^5.0.0" micromatch "^4.0.0" semver "^7.3.4" + source-map "^0.7.4" ts-node@10.9.1, ts-node@^10.8.2: version "10.9.1" @@ -18048,7 +18185,7 @@ tslib@2.3.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== -tslib@2.6.0, tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0: +tslib@2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.0.tgz#b295854684dbda164e181d259a22cd779dcd7bc3" integrity sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA== @@ -18063,6 +18200,11 @@ tslib@^1.10.0, tslib@^1.13.0, tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0, tslib@^2.6.1, tslib@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" + integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" @@ -18158,6 +18300,25 @@ type-is@^1.6.4, type-is@~1.6.18: media-typer "0.3.0" mime-types "~2.1.24" +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" + +typed-array-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" + integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + typed-array-byte-offset@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" @@ -18189,13 +18350,13 @@ typedarray@^0.0.6: integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== types-ramda@^0.29.4: - version "0.29.4" - resolved "https://registry.yarnpkg.com/types-ramda/-/types-ramda-0.29.4.tgz#8d9b51df2e550a05cedab541cc75dcd72972c625" - integrity sha512-XO/820iRsCDwqLjE8XE+b57cVGPyk1h+U9lBGpDWvbEky+NQChvHVwaKM05WnW1c5z3EVQh8NhXFmh2E/1YazQ== + version "0.29.5" + resolved "https://registry.yarnpkg.com/types-ramda/-/types-ramda-0.29.5.tgz#1cb0488d39eb72723a8f95af9b6dfe483e4f34a7" + integrity sha512-u+bAYXHDPJR+amB0qMrMU/NXRB2PG8QqpO2v6j7yK/0mPZhlaaZj++ynYjnVpkPEpCkZEGxNpWY3X7qyLCGE3w== dependencies: ts-toolbelt "^9.6.0" -typescript@5.1.6: +typescript@5.1.6, typescript@~5.1.3: version "5.1.6" resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274" integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA== @@ -18232,6 +18393,11 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + unfetch@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" @@ -18336,11 +18502,11 @@ unpipe@1.0.0, unpipe@~1.0.0: integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== unplugin@^1.3.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-1.4.0.tgz#b771373aa1bc664f50a044ee8009bd3a7aa04d85" - integrity sha512-5x4eIEL6WgbzqGtF9UV8VEC/ehKptPXDS6L2b0mv4FRMkJxRtjaJfOWDd6a8+kYbqsjklix7yWP0N3SUepjXcg== + version "1.5.0" + resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-1.5.0.tgz#8938ae84defe62afc7757df9ca05d27160f6c20c" + integrity sha512-9ZdRwbh/4gcm1JTOkp9lAkIDrtOyOxgHmY7cjuwI8L/2RTikMcVG25GsZwNAgRuap3iDw2jeq7eoqtAsz5rW3A== dependencies: - acorn "^8.9.0" + acorn "^8.10.0" chokidar "^3.5.3" webpack-sources "^3.2.3" webpack-virtual-modules "^0.5.0" @@ -18358,10 +18524,10 @@ untildify@^4.0.0: resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== -update-browserslist-db@^1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" - integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== dependencies: escalade "^3.1.1" picocolors "^1.0.0" @@ -18392,12 +18558,12 @@ url-parse@^1.5.3: requires-port "^1.0.0" url@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.1.tgz#26f90f615427eca1b9f4d6a28288c147e2302a32" - integrity sha512-rWS3H04/+mzzJkv0eZ7vEDGiQbgquI1fGfOad6zKvgYQi1SzMmhl7c/DdRGxhaWrVH6z0qWITo8rpnxK/RfEhA== + version "0.11.3" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.3.tgz#6f495f4b935de40ce4a0a52faee8954244f3d3ad" + integrity sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw== dependencies: punycode "^1.4.1" - qs "^6.11.0" + qs "^6.11.2" use-callback-ref@^1.3.0: version "1.3.0" @@ -18431,7 +18597,7 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -util@^0.12.0, util@^0.12.4: +util@^0.12.4, util@^0.12.5: version "0.12.5" resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== @@ -18452,12 +18618,12 @@ utils-merge@1.0.1, utils-merge@1.x.x, utils-merge@^1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@9.0.0, uuid@^9.0.0: +uuid@9.0.0: version "9.0.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== -uuid@9.0.1: +uuid@9.0.1, uuid@^9.0.0: version "9.0.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== @@ -18478,13 +18644,13 @@ v8-compile-cache@2.3.0: integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== v8-to-istanbul@^9.0.1: - version "9.1.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265" - integrity sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA== + version "9.1.3" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz#ea456604101cd18005ac2cae3cdd1aa058a6306b" + integrity sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg== dependencies: "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" + convert-source-map "^2.0.0" validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: version "3.0.4" @@ -18502,9 +18668,9 @@ validate-npm-package-name@^5.0.0: builtins "^5.0.0" validator@^13.7.0: - version "13.9.0" - resolved "https://registry.yarnpkg.com/validator/-/validator-13.9.0.tgz#33e7b85b604f3bbce9bb1a05d5c3e22e1c2ff855" - integrity sha512-B+dGG8U3fdtM0/aNK4/X8CXq/EcxU2WPrPEkJGslb47qyHsxmbggTWK0yEA4qnYVNF+nxNlN88o14hIcPmSIEA== + version "13.11.0" + resolved "https://registry.yarnpkg.com/validator/-/validator-13.11.0.tgz#23ab3fd59290c61248364eabf4067f04955fbb1b" + integrity sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ== vary@^1, vary@~1.1.2: version "1.1.2" @@ -18574,7 +18740,7 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" -wcwidth@^1.0.1: +wcwidth@^1.0.0, wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== @@ -18673,7 +18839,7 @@ webpack-hot-middleware@^2.25.1: html-entities "^2.1.0" strip-ansi "^6.0.0" -webpack-merge@5.9.0, webpack-merge@^5.8.0: +webpack-merge@5.9.0: version "5.9.0" resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.9.0.tgz#dc160a1c4cf512ceca515cc231669e9ddb133826" integrity sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg== @@ -18681,6 +18847,15 @@ webpack-merge@5.9.0, webpack-merge@^5.8.0: clone-deep "^4.0.1" wildcard "^2.0.0" +webpack-merge@^5.8.0: + version "5.10.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" + integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== + dependencies: + clone-deep "^4.0.1" + flat "^5.0.2" + wildcard "^2.0.0" + webpack-node-externals@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz#1a3407c158d547a9feb4229a9e3385b7b60c9917" @@ -18704,9 +18879,9 @@ webpack-virtual-modules@^0.5.0: integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw== webpack@5, webpack@^5.80.0: - version "5.88.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.88.1.tgz#21eba01e81bd5edff1968aea726e2fbfd557d3f8" - integrity sha512-FROX3TxQnC/ox4N+3xQoWZzvGXSuscxR32rbzjpXgEzWudJFEJBpdlkkob2ylrv5yzzufD1zph1OoFsLtm6stQ== + version "5.89.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.89.0.tgz#56b8bf9a34356e93a6625770006490bf3a7f32dc" + integrity sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^1.0.0" @@ -18852,17 +19027,16 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== -which-typed-array@^1.1.10, which-typed-array@^1.1.2, which-typed-array@^1.1.9: - version "1.1.10" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.10.tgz#74baa2789991905c2076abb317103b866c64e69e" - integrity sha512-uxoA5vLUfRPdjCuJ1h5LlYdmTLbYfums398v3WLkM+i/Wltl2/XyZpQWKbN++ck5L64SR/grOHqtXCUKmlZPNA== +which-typed-array@^1.1.11, which-typed-array@^1.1.13, which-typed-array@^1.1.2, which-typed-array@^1.1.9: + version "1.1.13" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== dependencies: available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + call-bind "^1.0.4" for-each "^0.3.3" gopd "^1.0.1" has-tostringtag "^1.0.0" - is-typed-array "^1.1.10" which@^1.2.9: version "1.3.1" @@ -18905,9 +19079,9 @@ wildcard@^2.0.0: integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== wordwrap@^1.0.0: version "1.0.0" @@ -18990,9 +19164,9 @@ ws@^7.4.6: integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== ws@^8.11.0, ws@^8.13.0, ws@^8.2.3: - version "8.13.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" - integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== + version "8.14.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.14.2.tgz#6c249a806eb2db7a20d26d51e7709eab7b2e6c7f" + integrity sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g== xliff-simple-merge@~1.0.1: version "1.0.2" @@ -19075,7 +19249,7 @@ yaml@^1.10.0, yaml@^1.7.2: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yargs-parser@21.1.1, yargs-parser@>=21.1.1, yargs-parser@^21.0.1, yargs-parser@^21.1.1: +yargs-parser@21.1.1, yargs-parser@^21.0.1, yargs-parser@^21.1.1: version "21.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== From e4ec5f213e8be1e5e56fbc8a73c465eac26f8d74 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 26 Oct 2023 19:36:34 +0200 Subject: [PATCH 080/194] Feature/extend personal finance tools pages 20231026 (#2547) * Improve wording (vs) * Improve breadcrumb (vs) * Add Beanvest * Add Wealthica * Update locales --- apps/api/src/assets/sitemap.xml | 32 + .../product-page-template.html | 29 +- .../personal-finance-tools/products.ts | 25 + .../products/beanvest-page.component.ts | 31 + .../products/wealthica-page.component.ts | 31 + apps/client/src/locales/messages.de.xlf | 2502 +++++++++------- apps/client/src/locales/messages.es.xlf | 2502 +++++++++------- apps/client/src/locales/messages.fr.xlf | 2502 +++++++++------- apps/client/src/locales/messages.it.xlf | 2502 +++++++++------- apps/client/src/locales/messages.nl.xlf | 2502 +++++++++------- apps/client/src/locales/messages.pt.xlf | 2502 +++++++++------- apps/client/src/locales/messages.tr.xlf | 2546 +++++++++------- apps/client/src/locales/messages.xlf | 2570 ++++++++++------- 13 files changed, 12055 insertions(+), 8221 deletions(-) create mode 100644 apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts create mode 100644 apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts diff --git a/apps/api/src/assets/sitemap.xml b/apps/api/src/assets/sitemap.xml index 2a3650752..20673ed8a 100644 --- a/apps/api/src/assets/sitemap.xml +++ b/apps/api/src/assets/sitemap.xml @@ -58,6 +58,10 @@ https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-altoo ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-beanvest + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-capmon ${currentDate}T00:00:00+00:00 @@ -166,6 +170,10 @@ https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-utluna ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-wealthica + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-yeekatee ${currentDate}T00:00:00+00:00 @@ -312,6 +320,10 @@ https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-altoo ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-beanvest + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-capmon ${currentDate}T00:00:00+00:00 @@ -420,6 +432,10 @@ https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-utluna ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-wealthica + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-yeekatee ${currentDate}T00:00:00+00:00 @@ -594,6 +610,10 @@ https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-altoo ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-beanvest + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-campmon ${currentDate}T00:00:00+00:00 @@ -702,6 +722,10 @@ https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-utluna ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-wealthica + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-yeekatee ${currentDate}T00:00:00+00:00 @@ -722,6 +746,10 @@ https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-altoo ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-beanvest + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-capmon ${currentDate}T00:00:00+00:00 @@ -830,6 +858,10 @@ https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-utluna ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-wealthica + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-yeekatee ${currentDate}T00:00:00+00:00 diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html b/apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html index b58bb79d4..0522915f5 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html +++ b/apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -35,15 +35,19 @@ its capabilities, security, and user experience.

    - Let’s dive deeper into the detailed comparison table below to gain a - thorough understanding of how Ghostfolio positions itself relative - to {{ product2.name }}. We will explore various aspects such as - features, data privacy, pricing, and more, allowing you to make a - well-informed choice for your personal requirements. + Let’s dive deeper into the detailed Ghostfolio vs {{ product2.name + }} comparison table below to gain a thorough understanding of how + Ghostfolio positions itself relative to {{ product2.name }}. We will + explore various aspects such as features, data privacy, pricing, and + more, allowing you to make a well-informed choice for your personal + requirements.

    + @@ -197,12 +201,13 @@

    - Please note that the information provided is based on our - independent research and analysis. This website is not affiliated - with {{ product2.name }} 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 + Please note that the information provided in the Ghostfolio vs {{ + product2.name }} comparison table is based on our independent + research and analysis. This website is not affiliated with {{ + product2.name }} 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.

    @@ -291,7 +296,7 @@ aria-current="page" class="active breadcrumb-item text-truncate" > - {{ product2.name }} + Ghostfolio vs {{ product2.name }} diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products.ts index 15850f324..660f49086 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products.ts @@ -1,6 +1,7 @@ import { Product } from '@ghostfolio/common/interfaces'; import { AltooPageComponent } from './products/altoo-page.component'; +import { BeanvestPageComponent } from './products/beanvest-page.component'; import { CapMonPageComponent } from './products/capmon-page.component'; import { CopilotMoneyPageComponent } from './products/copilot-money-page.component'; import { DeltaPageComponent } from './products/delta-page.component'; @@ -28,6 +29,7 @@ import { StocklePageComponent } from './products/stockle-page.component'; import { StockMarketEyePageComponent } from './products/stockmarketeye-page.component'; import { SumioPageComponent } from './products/sumio-page.component'; import { UtlunaPageComponent } from './products/utluna-page.component'; +import { WealthicaPageComponent } from './products/wealthica-page.component'; import { YeekateePageComponent } from './products/yeekatee-page.component'; export const products: Product[] = [ @@ -63,6 +65,17 @@ export const products: Product[] = [ origin: $localize`Switzerland`, slogan: 'Simplicity for Complex Wealth' }, + { + component: BeanvestPageComponent, + founded: 2020, + hasFreePlan: true, + hasSelfHostingAbility: false, + key: 'beanvest', + name: 'Beanvest', + origin: $localize`France`, + pricingPerYear: '$100', + slogan: 'Stock Portfolio Tracker for Smart Investors' + }, { component: CapMonPageComponent, founded: 2022, @@ -353,6 +366,18 @@ export const products: Product[] = [ slogan: 'Your Portfolio. Revealed.', useAnonymously: true }, + { + component: WealthicaPageComponent, + founded: 2015, + hasFreePlan: true, + hasSelfHostingAbility: false, + key: 'wealthica', + languages: ['English', 'Français'], + name: 'Wealthica', + origin: $localize`Canada`, + pricingPerYear: '$50', + slogan: 'See all your investments in one place' + }, { component: YeekateePageComponent, founded: 2021, diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts new file mode 100644 index 000000000..83c4e374e --- /dev/null +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts @@ -0,0 +1,31 @@ +import { CommonModule } from '@angular/common'; +import { Component } from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; +import { RouterModule } from '@angular/router'; + +import { products } from '../products'; + +@Component({ + host: { class: 'page' }, + imports: [CommonModule, MatButtonModule, RouterModule], + selector: 'gf-beanvest-page', + standalone: true, + styleUrls: ['../product-page-template.scss'], + templateUrl: '../product-page-template.html' +}) +export class BeanvestPageComponent { + public product1 = products.find(({ key }) => { + return key === 'ghostfolio'; + }); + + public product2 = products.find(({ key }) => { + return key === 'beanvest'; + }); + + public routerLinkAbout = ['/' + $localize`about`]; + public routerLinkFeatures = ['/' + $localize`features`]; + public routerLinkResourcesPersonalFinanceTools = [ + '/' + $localize`resources`, + 'personal-finance-tools' + ]; +} diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts new file mode 100644 index 000000000..91e576692 --- /dev/null +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts @@ -0,0 +1,31 @@ +import { CommonModule } from '@angular/common'; +import { Component } from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; +import { RouterModule } from '@angular/router'; + +import { products } from '../products'; + +@Component({ + host: { class: 'page' }, + imports: [CommonModule, MatButtonModule, RouterModule], + selector: 'gf-wealthica-page', + standalone: true, + styleUrls: ['../product-page-template.scss'], + templateUrl: '../product-page-template.html' +}) +export class WealthicaPageComponent { + public product1 = products.find(({ key }) => { + return key === 'ghostfolio'; + }); + + public product2 = products.find(({ key }) => { + return key === 'wealthica'; + }); + + public routerLinkAbout = ['/' + $localize`about`]; + public routerLinkFeatures = ['/' + $localize`features`]; + public routerLinkResourcesPersonalFinanceTools = [ + '/' + $localize`resources`, + 'personal-finance-tools' + ]; +} diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index ee154df54..5f20705fe 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -124,6 +124,10 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html 33 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 183 + apps/client/src/app/components/admin-platform/admin-platform.component.html 30 @@ -438,7 +442,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 225 + 261 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -458,7 +462,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 97 + 96 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -482,7 +486,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 232 + 268 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -502,7 +506,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 104 + 103 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -854,119 +858,127 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 183 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 183 @@ -1364,7 +1376,7 @@ Sektoren apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 155 + 159 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1380,7 +1392,7 @@ Länder apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 165 + 169 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1924,7 +1936,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 32 + 31 @@ -1940,7 +1952,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 46 + 45 @@ -1948,7 +1960,7 @@ Konto ID apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 91 + 90 @@ -2324,11 +2336,11 @@ Kommentar apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 212 + 248 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 74 + 73 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2344,7 +2356,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 116 + 120 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 189 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2704,7 +2720,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + 129 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 202 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2720,7 +2740,7 @@ Sektor apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 140 + 144 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2732,7 +2752,7 @@ Land apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 149 + 153 apps/client/src/app/components/admin-users/admin-users.html @@ -3304,7 +3324,7 @@ Symbol Zuordnung apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 190 + 226 @@ -4372,7 +4392,7 @@ Scraper Konfiguration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 201 + 237 @@ -4404,119 +4424,127 @@ Gegründet apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 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 @@ -4524,119 +4552,127 @@ Ursprung apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 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 @@ -4644,119 +4680,127 @@ Region apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 77 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 77 @@ -4764,119 +4808,127 @@ Verfügbar in apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 82,84 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 @@ -4884,1747 +4936,1867 @@ ✅ Ja apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 - - - ❌ No - ❌ Nein apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 + + + ❌ No + ❌ Nein apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 @@ -6632,119 +6804,127 @@ ❌ Nein apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 113,114 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 @@ -6752,119 +6932,127 @@ Self-Hosting apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 118,120 @@ -6872,119 +7060,127 @@ Anonyme Nutzung apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 145,147 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 @@ -6992,119 +7188,127 @@ Kostenlose Nutzung apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 164,166 @@ -7112,119 +7316,127 @@ Hinweise apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 195 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 195 @@ -7232,119 +7444,127 @@ Mit Ghostfolio kannst du dein Vermögen einfach überwachen, analysieren und visualisieren. apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,223 @@ -7352,119 +7572,127 @@ Tools für persönliche Finanzen apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 292 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 @@ -8198,6 +8426,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 26 @@ -8306,6 +8538,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts 26 @@ -8390,6 +8626,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 25 @@ -8498,6 +8738,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts 25 @@ -8718,6 +8962,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 28 @@ -8826,6 +9074,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts 28 @@ -8986,6 +9238,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 8 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. @@ -9106,6 +9366,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 13,25 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. @@ -9226,125 +9494,141 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 26,36 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + - - Let’s dive deeper into the detailed comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Wir möchten uns in der untenstehenden Vergleichstabelle ein detailliertes Bild davon machen, wie Ghostfolio im Vergleich zu positioniert ist. Wir werden dabei verschiedene Aspekte wie Funktionen, Datenschutz, Preise und weiteres untersuchen, damit du eine gut informierte Entscheidung für deine persönlichen Anforderungen treffen kannst. + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Wir möchten uns in der untenstehenden Ghostfolio vs Vergleichstabelle ein detailliertes Bild davon machen, wie Ghostfolio im Vergleich zu positioniert ist. Wir werden dabei verschiedene Aspekte wie Funktionen, Datenschutz, Preise und weiteres untersuchen, damit du eine gut informierte Entscheidung für deine persönlichen Anforderungen treffen kannst. + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,44 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,44 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 @@ -9352,119 +9636,127 @@ Ab / Jahr apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 184,186 @@ -9472,119 +9764,127 @@ Ab / Jahr apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 189,190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 @@ -9599,124 +9899,132 @@ 13 - - Please note that the information provided 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. - Bitte beachte, dass die bereitgestellten Informationen auf unserer unabhängigen Recherche und Analyse beruhen. Diese Webseite steht in keiner Verbindung zu oder einem anderen im Vergleich erwähnten Produkt. Da sich die Landschaft der Personal Finance Tools ständig weiterentwickelt, ist es wichtig, alle spezifischen Details oder Änderungen direkt auf der jeweiligen Produktseite zu überprüfen. Brauchen die Daten eine Auffrischung? Unterstütze uns bei der Pflege der aktuellen Daten auf GitHub. + + 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. + Bitte beachte, dass die bereitgestellten Ghostfolio vs Informationen auf unserer unabhängigen Recherche und Analyse beruhen. Diese Webseite steht in keiner Verbindung zu oder einem anderen im Vergleich erwähnten Produkt. Da sich die Landschaft der Personal Finance Tools ständig weiterentwickelt, ist es wichtig, alle spezifischen Details oder Änderungen direkt auf der jeweiligen Produktseite zu überprüfen. Brauchen die Daten eine Auffrischung? Unterstütze uns bei der Pflege der aktuellen Daten auf GitHub. + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 203,213 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 203,213 @@ -9724,119 +10032,127 @@ Bereit, deine Investitionen auf ein neues Levelzu bringen? apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 216,219 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 @@ -9844,119 +10160,127 @@ Jetzt loslegen apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 225,227 @@ -9964,23 +10288,23 @@ Schweiz apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 51 + 53 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 63 + 65 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 351 + 364 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 362 + 387 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 363 + 388 @@ -9988,15 +10312,15 @@ Weltweit apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 53 + 55 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 193 + 206 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 294 + 307 @@ -10004,35 +10328,35 @@ Vereinigte Staaten von Amerika apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 82 + 95 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 116 + 129 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 126 + 139 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 179 + 192 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 204 + 217 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 206 + 219 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 270 + 283 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 281 + 294 @@ -10040,7 +10364,7 @@ Belgien apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 94 + 107 @@ -10048,31 +10372,31 @@ Deutschland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 71 + 84 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 105 + 118 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 148 + 161 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 158 + 171 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 168 + 181 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 191 + 204 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 226 + 239 @@ -10080,7 +10404,7 @@ Österreich apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 136 + 149 @@ -10088,7 +10412,7 @@ Italien apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 237 + 250 @@ -10096,7 +10420,7 @@ Niederlande apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 247 + 260 @@ -10104,7 +10428,7 @@ Thailand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 259 + 272 @@ -10112,7 +10436,7 @@ Neuseeland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 292 + 305 @@ -10120,11 +10444,11 @@ Tschechische Republik apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 303 + 316 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 340 + 353 @@ -10264,11 +10588,15 @@ Frankreich apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 314 + 75 + + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 327 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 330 + 343 @@ -10312,7 +10640,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 184 + 220 @@ -10360,7 +10688,7 @@ Finnland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 322 + 335 @@ -10463,6 +10791,142 @@ 29,31 + + Ghostfolio vs comparison table + Ghostfolio vs Vergleichstabelle + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + + Canada + Kanada + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 377 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 6c69f769d..7cfb1e1d8 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -125,6 +125,10 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html 33 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 183 + apps/client/src/app/components/admin-platform/admin-platform.component.html 30 @@ -439,7 +443,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 225 + 261 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -459,7 +463,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 97 + 96 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -483,7 +487,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 232 + 268 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -503,7 +507,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 104 + 103 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -855,119 +859,127 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 183 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 183 @@ -1362,7 +1374,7 @@ Sectores apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 155 + 159 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1378,7 +1390,7 @@ Países apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 165 + 169 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1922,7 +1934,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 32 + 31 @@ -1938,7 +1950,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 46 + 45 @@ -1946,7 +1958,7 @@ ID cuenta apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 91 + 90 @@ -2322,11 +2334,11 @@ Nota apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 212 + 248 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 74 + 73 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2342,7 +2354,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 116 + 120 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 189 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2690,7 +2706,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + 129 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 202 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2746,7 +2766,7 @@ Sector apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 140 + 144 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2758,7 +2778,7 @@ País apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 149 + 153 apps/client/src/app/components/admin-users/admin-users.html @@ -3302,7 +3322,7 @@ Mapeo de símbolos apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 190 + 226 @@ -4370,7 +4390,7 @@ Scraper Configuration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 201 + 237 @@ -4402,119 +4422,127 @@ Founded apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 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 @@ -4522,119 +4550,127 @@ Origin apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 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 @@ -4642,119 +4678,127 @@ Region apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 77 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 77 @@ -4762,119 +4806,127 @@ Available in apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 82,84 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 @@ -4882,1747 +4934,1867 @@ ✅ Yes apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 - - - ❌ No - ❌ No apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 + + + ❌ No + ❌ No apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 @@ -6630,119 +6802,127 @@ ❌ No apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 113,114 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 @@ -6750,119 +6930,127 @@ Self-Hosting apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 118,120 @@ -6870,119 +7058,127 @@ Use anonymously apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 145,147 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 @@ -6990,119 +7186,127 @@ Free Plan apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 164,166 @@ -7110,119 +7314,127 @@ Notes apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 195 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 195 @@ -7230,119 +7442,127 @@ Effortlessly track, analyze, and visualize your wealth with Ghostfolio. apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,223 @@ -7350,119 +7570,127 @@ Personal Finance Tools apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 292 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 @@ -8196,6 +8424,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 26 @@ -8304,6 +8536,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts 26 @@ -8388,6 +8624,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 25 @@ -8496,6 +8736,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts 25 @@ -8716,6 +8960,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 28 @@ -8824,6 +9072,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts 28 @@ -8984,6 +9236,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 8 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. @@ -9104,6 +9364,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 13,25 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. @@ -9224,125 +9492,141 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 26,36 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + - - Let’s dive deeper into the detailed comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Let’s dive deeper into the detailed comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,44 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,44 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 @@ -9350,119 +9634,127 @@ Starting from / year apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 184,186 @@ -9470,119 +9762,127 @@ Starting from / year apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 189,190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 @@ -9597,124 +9897,132 @@ 13 - - Please note that the information provided 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. - Please note that the information provided 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. + + 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. + 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 + 203,213 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 203,213 @@ -9722,119 +10030,127 @@ Ready to take your investments to the next level? apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 216,219 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 @@ -9842,119 +10158,127 @@ Get Started apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 225,227 @@ -9962,23 +10286,23 @@ Switzerland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 51 + 53 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 63 + 65 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 351 + 364 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 362 + 387 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 363 + 388 @@ -9986,15 +10310,15 @@ Global apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 53 + 55 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 193 + 206 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 294 + 307 @@ -10002,35 +10326,35 @@ United States apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 82 + 95 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 116 + 129 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 126 + 139 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 179 + 192 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 204 + 217 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 206 + 219 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 270 + 283 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 281 + 294 @@ -10038,7 +10362,7 @@ Belgium apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 94 + 107 @@ -10046,31 +10370,31 @@ Germany apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 71 + 84 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 105 + 118 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 148 + 161 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 158 + 171 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 168 + 181 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 191 + 204 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 226 + 239 @@ -10078,7 +10402,7 @@ Austria apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 136 + 149 @@ -10086,7 +10410,7 @@ Italy apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 237 + 250 @@ -10094,7 +10418,7 @@ Netherlands apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 247 + 260 @@ -10102,7 +10426,7 @@ Thailand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 259 + 272 @@ -10110,7 +10434,7 @@ New Zealand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 292 + 305 @@ -10118,11 +10442,11 @@ Czech Republic apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 303 + 316 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 340 + 353 @@ -10262,11 +10586,15 @@ France apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 314 + 75 + + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 327 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 330 + 343 @@ -10310,7 +10638,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 184 + 220 @@ -10358,7 +10686,7 @@ Finland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 322 + 335 @@ -10461,6 +10789,142 @@ 29,31 + + Ghostfolio vs comparison table + Ghostfolio vs comparison table + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + + Canada + Canada + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 377 + + diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index d23ca7b67..06235673c 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -90,7 +90,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 46 + 45 @@ -136,6 +136,10 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html 33 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 183 + apps/client/src/app/components/admin-platform/admin-platform.component.html 30 @@ -218,7 +222,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 32 + 31 @@ -490,7 +494,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 225 + 261 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -510,7 +514,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 97 + 96 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -534,7 +538,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 232 + 268 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -554,7 +558,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 104 + 103 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -578,7 +582,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 116 + 120 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 189 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -598,7 +606,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + 129 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 202 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -706,7 +718,7 @@ Secteur apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 140 + 144 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -718,7 +730,7 @@ Pays apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 149 + 153 apps/client/src/app/components/admin-users/admin-users.html @@ -734,7 +746,7 @@ Secteurs apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 155 + 159 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -750,7 +762,7 @@ Pays apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 165 + 169 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -762,7 +774,7 @@ Équivalence de Symboles apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 190 + 226 @@ -770,11 +782,11 @@ Note apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 212 + 248 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 74 + 73 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1134,119 +1146,127 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 183 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 183 @@ -2225,7 +2245,7 @@ ID du compte apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 91 + 90 @@ -4369,7 +4389,7 @@ Scraper Configuration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 201 + 237 @@ -4401,119 +4421,127 @@ Founded apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 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 @@ -4521,119 +4549,127 @@ Origin apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 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 @@ -4641,119 +4677,127 @@ Region apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 77 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 77 @@ -4761,119 +4805,127 @@ Available in apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 82,84 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 @@ -4881,1747 +4933,1867 @@ ✅ Yes apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 - - - ❌ No - ❌ No apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 + + + ❌ No + ❌ No apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 @@ -6629,119 +6801,127 @@ ❌ No apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 113,114 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 @@ -6749,119 +6929,127 @@ Self-Hosting apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 118,120 @@ -6869,119 +7057,127 @@ Use anonymously apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 145,147 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 @@ -6989,119 +7185,127 @@ Free Plan apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 164,166 @@ -7109,119 +7313,127 @@ Notes apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 195 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 195 @@ -7229,119 +7441,127 @@ Effortlessly track, analyze, and visualize your wealth with Ghostfolio. apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,223 @@ -7349,119 +7569,127 @@ Personal Finance Tools apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 292 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 @@ -8195,6 +8423,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 26 @@ -8303,6 +8535,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts 26 @@ -8387,6 +8623,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 25 @@ -8495,6 +8735,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts 25 @@ -8715,6 +8959,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 28 @@ -8823,6 +9071,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts 28 @@ -8983,6 +9235,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 8 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. @@ -9103,6 +9363,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 13,25 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. @@ -9223,125 +9491,141 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 26,36 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + - - Let’s dive deeper into the detailed comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Let’s dive deeper into the detailed comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,44 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,44 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 @@ -9349,119 +9633,127 @@ Starting from / year apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 184,186 @@ -9469,119 +9761,127 @@ Starting from / year apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 189,190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 @@ -9596,124 +9896,132 @@ 13 - - Please note that the information provided 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. - Please note that the information provided 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. + + 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. + 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 + 203,213 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 203,213 @@ -9721,119 +10029,127 @@ Ready to take your investments to the next level? apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 216,219 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 @@ -9841,119 +10157,127 @@ Get Started apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 225,227 @@ -9961,23 +10285,23 @@ Switzerland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 51 + 53 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 63 + 65 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 351 + 364 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 362 + 387 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 363 + 388 @@ -9985,15 +10309,15 @@ Global apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 53 + 55 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 193 + 206 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 294 + 307 @@ -10001,35 +10325,35 @@ United States apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 82 + 95 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 116 + 129 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 126 + 139 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 179 + 192 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 204 + 217 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 206 + 219 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 270 + 283 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 281 + 294 @@ -10037,7 +10361,7 @@ Belgium apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 94 + 107 @@ -10045,31 +10369,31 @@ Germany apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 71 + 84 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 105 + 118 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 148 + 161 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 158 + 171 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 168 + 181 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 191 + 204 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 226 + 239 @@ -10077,7 +10401,7 @@ Austria apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 136 + 149 @@ -10085,7 +10409,7 @@ Italy apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 237 + 250 @@ -10093,7 +10417,7 @@ Netherlands apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 247 + 260 @@ -10101,7 +10425,7 @@ Thailand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 259 + 272 @@ -10109,7 +10433,7 @@ New Zealand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 292 + 305 @@ -10117,11 +10441,11 @@ Czech Republic apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 303 + 316 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 340 + 353 @@ -10261,11 +10585,15 @@ France apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 314 + 75 + + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 327 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 330 + 343 @@ -10309,7 +10637,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 184 + 220 @@ -10357,7 +10685,7 @@ Finland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 322 + 335 @@ -10460,6 +10788,142 @@ 29,31 + + Ghostfolio vs comparison table + Ghostfolio vs comparison table + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + + Canada + Canada + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 377 + + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index f0c00a7f7..9e64e2f11 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -125,6 +125,10 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html 33 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 183 + apps/client/src/app/components/admin-platform/admin-platform.component.html 30 @@ -439,7 +443,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 225 + 261 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -459,7 +463,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 97 + 96 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -483,7 +487,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 232 + 268 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -503,7 +507,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 104 + 103 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -855,119 +859,127 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 183 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 183 @@ -1362,7 +1374,7 @@ Settori apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 155 + 159 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1378,7 +1390,7 @@ Paesi apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 165 + 169 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1922,7 +1934,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 32 + 31 @@ -1938,7 +1950,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 46 + 45 @@ -1946,7 +1958,7 @@ ID account apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 91 + 90 @@ -2322,11 +2334,11 @@ Nota apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 212 + 248 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 74 + 73 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2342,7 +2354,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 116 + 120 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 189 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2690,7 +2706,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + 129 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 202 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2746,7 +2766,7 @@ Settore apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 140 + 144 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2758,7 +2778,7 @@ Paese apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 149 + 153 apps/client/src/app/components/admin-users/admin-users.html @@ -3302,7 +3322,7 @@ Mappatura dei simboli apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 190 + 226 @@ -4370,7 +4390,7 @@ Configurazione dello scraper apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 201 + 237 @@ -4402,119 +4422,127 @@ Fondato apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 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 @@ -4522,119 +4550,127 @@ Origine apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 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 @@ -4642,119 +4678,127 @@ Regione apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 77 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 77 @@ -4762,119 +4806,127 @@ Disponibile in apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 82,84 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 @@ -4882,1747 +4934,1867 @@ ✅ Si apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 - - - ❌ No - ❌ No apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 + + + ❌ No + ❌ No apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 @@ -6630,119 +6802,127 @@ ❌ No apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 113,114 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 @@ -6750,119 +6930,127 @@ Self-hosting apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 118,120 @@ -6870,119 +7058,127 @@ Usalo in modo anonimo apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 145,147 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 @@ -6990,119 +7186,127 @@ Piano gratuito apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 164,166 @@ -7110,119 +7314,127 @@ Note apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 195 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 195 @@ -7230,119 +7442,127 @@ Monitora, analizza e visualizza facilmente la tua ricchezza con Ghostfolio. apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,223 @@ -7350,119 +7570,127 @@ Strumenti di finanza personale apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 292 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 @@ -8196,6 +8424,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 26 @@ -8304,6 +8536,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts 26 @@ -8388,6 +8624,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 25 @@ -8496,6 +8736,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts 25 @@ -8716,6 +8960,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 28 @@ -8824,6 +9072,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts 28 @@ -8984,6 +9236,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 8 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. @@ -9104,6 +9364,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 13,25 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. @@ -9224,125 +9492,141 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 26,36 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + - - Let’s dive deeper into the detailed comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Analizziamo nel dettaglio la tabella di confronto qui sotto per comprendere a fondo come Ghostfolio si posiziona rispetto a . Esploreremo vari aspetti come le caratteristiche, la privacy dei dati, il prezzo e altro ancora, permettendoti di fare una scelta ben informata per le tue esigenze personali. + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Analizziamo nel dettaglio la tabella di confronto qui sotto per comprendere a fondo come Ghostfolio si posiziona rispetto a . Esploreremo vari aspetti come le caratteristiche, la privacy dei dati, il prezzo e altro ancora, permettendoti di fare una scelta ben informata per le tue esigenze personali. + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,44 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,44 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 @@ -9350,119 +9634,127 @@ A partire da / anno apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 184,186 @@ -9470,119 +9762,127 @@ A partire da / anno apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 189,190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 @@ -9597,124 +9897,132 @@ 13 - - Please note that the information provided 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. - Nota bene: le informazioni fornite si basano sulle nostre ricerche e analisi indipendenti. Questo sito web non è affiliato con o a qualsiasi altro prodotto citato nel confronto. Poiché il panorama degli strumenti di finanza personale si evolve, è essenziale verificare qualsiasi dettaglio o modifica specifica direttamente nella pagina del prodotto in questione. I dati hanno bisogno di essere aggiornati? Aiutaci a mantenere i dati accurati su GitHub. + + 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. + Nota bene: le informazioni fornite si basano sulle nostre ricerche e analisi indipendenti. Questo sito web non è affiliato con o a qualsiasi altro prodotto citato nel confronto. Poiché il panorama degli strumenti di finanza personale si evolve, è essenziale verificare qualsiasi dettaglio o modifica specifica direttamente nella pagina del prodotto in questione. I dati hanno bisogno di essere aggiornati? Aiutaci a mantenere i dati accurati su GitHub. + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 203,213 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 203,213 @@ -9722,119 +10030,127 @@ Sei pronto a portare il tuo investimento al livello successivo? apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 216,219 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 @@ -9842,119 +10158,127 @@ Inizia apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 225,227 @@ -9962,23 +10286,23 @@ Svizzera apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 51 + 53 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 63 + 65 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 351 + 364 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 362 + 387 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 363 + 388 @@ -9986,15 +10310,15 @@ Globale apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 53 + 55 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 193 + 206 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 294 + 307 @@ -10002,35 +10326,35 @@ Stati Uniti apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 82 + 95 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 116 + 129 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 126 + 139 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 179 + 192 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 204 + 217 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 206 + 219 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 270 + 283 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 281 + 294 @@ -10038,7 +10362,7 @@ Belgio apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 94 + 107 @@ -10046,31 +10370,31 @@ Germania apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 71 + 84 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 105 + 118 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 148 + 161 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 158 + 171 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 168 + 181 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 191 + 204 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 226 + 239 @@ -10078,7 +10402,7 @@ Austria apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 136 + 149 @@ -10086,7 +10410,7 @@ Italia apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 237 + 250 @@ -10094,7 +10418,7 @@ Paesi Bassi apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 247 + 260 @@ -10102,7 +10426,7 @@ Thailandia apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 259 + 272 @@ -10110,7 +10434,7 @@ Nuova Zelanda apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 292 + 305 @@ -10118,11 +10442,11 @@ Repubblica Ceca apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 303 + 316 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 340 + 353 @@ -10262,11 +10586,15 @@ France apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 314 + 75 + + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 327 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 330 + 343 @@ -10310,7 +10638,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 184 + 220 @@ -10358,7 +10686,7 @@ Finland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 322 + 335 @@ -10461,6 +10789,142 @@ 29,31 + + Ghostfolio vs comparison table + Ghostfolio vs comparison table + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + + Canada + Canada + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 377 + + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index b75791ec2..43f865db6 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -124,6 +124,10 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html 33 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 183 + apps/client/src/app/components/admin-platform/admin-platform.component.html 30 @@ -438,7 +442,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 225 + 261 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -458,7 +462,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 97 + 96 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -482,7 +486,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 232 + 268 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -502,7 +506,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 104 + 103 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -854,119 +858,127 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 183 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 183 @@ -1361,7 +1373,7 @@ Sectoren apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 155 + 159 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1377,7 +1389,7 @@ Landen apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 165 + 169 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1921,7 +1933,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 32 + 31 @@ -1937,7 +1949,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 46 + 45 @@ -1945,7 +1957,7 @@ Rekening-ID apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 91 + 90 @@ -2321,11 +2333,11 @@ Opmerking apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 212 + 248 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 74 + 73 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -2341,7 +2353,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 116 + 120 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 189 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2689,7 +2705,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + 129 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 202 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2745,7 +2765,7 @@ Sector apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 140 + 144 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2757,7 +2777,7 @@ Land apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 149 + 153 apps/client/src/app/components/admin-users/admin-users.html @@ -3301,7 +3321,7 @@ Symbool toewijzen apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 190 + 226 @@ -4369,7 +4389,7 @@ Scraper instellingen apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 201 + 237 @@ -4401,119 +4421,127 @@ Opgericht apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 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 @@ -4521,119 +4549,127 @@ Oorsprong apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 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 @@ -4641,119 +4677,127 @@ Regio apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 77 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 77 @@ -4761,119 +4805,127 @@ Beschikbaar in apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 82,84 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 @@ -4881,1747 +4933,1867 @@ ✅ Wel apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 - - - ❌ No - ❌ Geen apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 + + + ❌ No + ❌ Geen apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 @@ -6629,119 +6801,127 @@ ❌ Geen apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 113,114 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 @@ -6749,119 +6929,127 @@ Zelf hosten apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 118,120 @@ -6869,119 +7057,127 @@ Gebruik anoniem apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 145,147 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 @@ -6989,119 +7185,127 @@ Gratis abonnement apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 164,166 @@ -7109,119 +7313,127 @@ Notities apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 195 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 195 @@ -7229,119 +7441,127 @@ Volg, analyseer en visualiseer moeiteloos je vermogen met Ghostfolio. apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,223 @@ -7349,119 +7569,127 @@ Tools voor persoonlijke financiën apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 292 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 @@ -8195,6 +8423,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 26 @@ -8303,6 +8535,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts 26 @@ -8387,6 +8623,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 25 @@ -8495,6 +8735,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts 25 @@ -8715,6 +8959,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 28 @@ -8823,6 +9071,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts 28 @@ -8983,6 +9235,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 8 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. @@ -9103,6 +9363,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 13,25 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. @@ -9223,125 +9491,141 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 26,36 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + - - Let’s dive deeper into the detailed comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Laten we eens dieper duiken in de gedetailleerde vergelijkingstabel hieronder om een beter begrip te krijgen hoe Ghostfolio zichzelf positioneert ten opzichte van . We gaan in op verschillende aspecten zoals functies, gegevensprivacy, prijzen en meer, zodat je een weloverwogen keuze kunt maken voor jouw persoonlijke behoeften. + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Laten we eens dieper duiken in de gedetailleerde vergelijkingstabel hieronder om een beter begrip te krijgen hoe Ghostfolio zichzelf positioneert ten opzichte van . We gaan in op verschillende aspecten zoals functies, gegevensprivacy, prijzen en meer, zodat je een weloverwogen keuze kunt maken voor jouw persoonlijke behoeften. + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,44 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,44 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 @@ -9349,119 +9633,127 @@ Vanaf / jaar apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 184,186 @@ -9469,119 +9761,127 @@ Vanaf / jaar apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 189,190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 @@ -9596,124 +9896,132 @@ 13 - - Please note that the information provided 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. - Houd er rekening mee dat de verstrekte informatie gebaseerd is op ons onafhankelijk onderzoek en analyse. Deze website is niet gelieerd aan of een ander product dat in de vergelijking wordt genoemd. Aangezien het landschap van tools voor persoonlijke financiën evolueert, is het essentieel om specifieke details of wijzigingen rechtstreeks op de betreffende productpagina te controleren. Hebben je gegevens een opfrisbeurt nodig? Help ons nauwkeurige gegevens te onderhouden over GitHub. + + 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. + Houd er rekening mee dat de verstrekte informatie gebaseerd is op ons onafhankelijk onderzoek en analyse. Deze website is niet gelieerd aan of een ander product dat in de vergelijking wordt genoemd. Aangezien het landschap van tools voor persoonlijke financiën evolueert, is het essentieel om specifieke details of wijzigingen rechtstreeks op de betreffende productpagina te controleren. Hebben je gegevens een opfrisbeurt nodig? Help ons nauwkeurige gegevens te onderhouden over GitHub. + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 203,213 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 203,213 @@ -9721,119 +10029,127 @@ Klaar om je investeringen naar een hoger niveau te brengen? apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 216,219 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 @@ -9841,119 +10157,127 @@ Aan de slag apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 225,227 @@ -9961,23 +10285,23 @@ Zwitserland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 51 + 53 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 63 + 65 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 351 + 364 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 362 + 387 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 363 + 388 @@ -9985,15 +10309,15 @@ Wereldwijd apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 53 + 55 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 193 + 206 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 294 + 307 @@ -10001,35 +10325,35 @@ Verenigde Staten apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 82 + 95 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 116 + 129 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 126 + 139 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 179 + 192 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 204 + 217 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 206 + 219 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 270 + 283 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 281 + 294 @@ -10037,7 +10361,7 @@ België apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 94 + 107 @@ -10045,31 +10369,31 @@ Duitsland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 71 + 84 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 105 + 118 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 148 + 161 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 158 + 171 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 168 + 181 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 191 + 204 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 226 + 239 @@ -10077,7 +10401,7 @@ Oostenrijk apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 136 + 149 @@ -10085,7 +10409,7 @@ Italië apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 237 + 250 @@ -10093,7 +10417,7 @@ Nederland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 247 + 260 @@ -10101,7 +10425,7 @@ Thailand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 259 + 272 @@ -10109,7 +10433,7 @@ Nieuw-Zeeland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 292 + 305 @@ -10117,11 +10441,11 @@ Tsjechië apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 303 + 316 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 340 + 353 @@ -10261,11 +10585,15 @@ France apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 314 + 75 + + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 327 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 330 + 343 @@ -10309,7 +10637,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 184 + 220 @@ -10357,7 +10685,7 @@ Finland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 322 + 335 @@ -10460,6 +10788,142 @@ 29,31 + + Ghostfolio vs comparison table + Ghostfolio vs comparison table + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + + Canada + Canada + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 377 + + diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 9c2e54ca4..eb902fd6d 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -90,7 +90,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 46 + 45 @@ -136,6 +136,10 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html 33 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 183 + apps/client/src/app/components/admin-platform/admin-platform.component.html 30 @@ -218,7 +222,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 32 + 31 @@ -490,7 +494,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 225 + 261 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -510,7 +514,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 97 + 96 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -534,7 +538,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 232 + 268 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -554,7 +558,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 104 + 103 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -578,7 +582,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 116 + 120 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 189 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -598,7 +606,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + 129 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 202 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1014,119 +1026,127 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 183 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 183 @@ -1645,7 +1665,7 @@ Setor apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 140 + 144 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1657,7 +1677,7 @@ País apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 149 + 153 apps/client/src/app/components/admin-users/admin-users.html @@ -1673,7 +1693,7 @@ Setores apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 155 + 159 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1689,7 +1709,7 @@ Países apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 165 + 169 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -2185,7 +2205,7 @@ ID da Conta apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 91 + 90 @@ -2445,11 +2465,11 @@ Nota apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 212 + 248 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 74 + 73 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -3289,7 +3309,7 @@ Mapeamento de Símbolo apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 190 + 226 @@ -4369,7 +4389,7 @@ Scraper Configuration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 201 + 237 @@ -4401,119 +4421,127 @@ Founded apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 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 @@ -4521,119 +4549,127 @@ Origin apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 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 @@ -4641,119 +4677,127 @@ Region apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 77 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 77 @@ -4761,119 +4805,127 @@ Available in apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 82,84 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 @@ -4881,1747 +4933,1867 @@ ✅ Yes apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 - - - ❌ No - ❌ No apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 176 + + + ❌ No + ❌ No apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 @@ -6629,119 +6801,127 @@ ❌ No apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 113,114 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 @@ -6749,119 +6929,127 @@ Self-Hosting apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 118,120 @@ -6869,119 +7057,127 @@ Use anonymously apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 145,147 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 @@ -6989,119 +7185,127 @@ Free Plan apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 164,166 @@ -7109,119 +7313,127 @@ Notes apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 195 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 195 @@ -7229,119 +7441,127 @@ Effortlessly track, analyze, and visualize your wealth with Ghostfolio. apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,223 @@ -7349,119 +7569,127 @@ Personal Finance Tools apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 292 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 @@ -8195,6 +8423,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 26 @@ -8303,6 +8535,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts 26 @@ -8387,6 +8623,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 25 @@ -8495,6 +8735,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts 25 @@ -8715,6 +8959,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 28 @@ -8823,6 +9071,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts 28 @@ -8983,6 +9235,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 8 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. @@ -9103,6 +9363,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 13,25 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. @@ -9223,125 +9491,141 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 26,36 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + - - Let’s dive deeper into the detailed comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Let’s dive deeper into the detailed comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,44 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,44 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 @@ -9349,119 +9633,127 @@ Starting from / year apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 184,186 @@ -9469,119 +9761,127 @@ Starting from / year apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 189,190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 @@ -9596,124 +9896,132 @@ 13 - - Please note that the information provided 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. - Please note that the information provided 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. + + 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. + 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 + 203,213 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 203,213 @@ -9721,119 +10029,127 @@ Ready to take your investments to the next level? apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 216,219 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 @@ -9841,119 +10157,127 @@ Get Started apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 225,227 @@ -9961,23 +10285,23 @@ Switzerland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 51 + 53 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 63 + 65 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 351 + 364 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 362 + 387 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 363 + 388 @@ -9985,15 +10309,15 @@ Global apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 53 + 55 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 193 + 206 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 294 + 307 @@ -10001,35 +10325,35 @@ United States apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 82 + 95 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 116 + 129 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 126 + 139 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 179 + 192 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 204 + 217 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 206 + 219 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 270 + 283 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 281 + 294 @@ -10037,7 +10361,7 @@ Belgium apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 94 + 107 @@ -10045,31 +10369,31 @@ Germany apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 71 + 84 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 105 + 118 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 148 + 161 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 158 + 171 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 168 + 181 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 191 + 204 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 226 + 239 @@ -10077,7 +10401,7 @@ Austria apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 136 + 149 @@ -10085,7 +10409,7 @@ Italy apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 237 + 250 @@ -10093,7 +10417,7 @@ Netherlands apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 247 + 260 @@ -10101,7 +10425,7 @@ Thailand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 259 + 272 @@ -10109,7 +10433,7 @@ New Zealand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 292 + 305 @@ -10117,11 +10441,11 @@ Czech Republic apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 303 + 316 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 340 + 353 @@ -10261,11 +10585,15 @@ France apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 314 + 75 + + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 327 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 330 + 343 @@ -10309,7 +10637,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 184 + 220 @@ -10357,7 +10685,7 @@ Finland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 322 + 335 @@ -10460,6 +10788,142 @@ 29,31 + + Ghostfolio vs comparison table + Ghostfolio vs comparison table + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + + Canada + Canada + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 377 + + diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index e34df640b..83a2a892f 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -80,6 +80,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 25 @@ -188,6 +192,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts 25 @@ -264,6 +272,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 26 @@ -372,6 +384,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts 26 @@ -592,6 +608,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 28 @@ -700,6 +720,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts 28 @@ -922,119 +946,127 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 183 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 183 @@ -1174,7 +1206,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 32 + 31 @@ -1198,7 +1230,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 46 + 45 @@ -1244,6 +1276,10 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html 33 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 183 + apps/client/src/app/components/admin-platform/admin-platform.component.html 30 @@ -1582,7 +1618,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 225 + 261 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -1602,7 +1638,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 97 + 96 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -1626,7 +1662,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 232 + 268 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -1646,7 +1682,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 104 + 103 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1694,7 +1730,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 116 + 120 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 189 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1714,7 +1754,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + 129 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 202 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1830,7 +1874,7 @@ Sektör apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 140 + 144 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1842,7 +1886,7 @@ Ülke apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 149 + 153 apps/client/src/app/components/admin-users/admin-users.html @@ -1858,7 +1902,7 @@ Sektörler apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 155 + 159 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1874,7 +1918,7 @@ Ülkeler apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 165 + 169 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1886,7 +1930,7 @@ Sembol Eşleştirme apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 190 + 226 @@ -1894,7 +1938,7 @@ Veri Toplayıcı Yapılandırması apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 201 + 237 @@ -1902,11 +1946,11 @@ Not apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 212 + 248 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 74 + 73 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -3233,7 +3277,7 @@ Account ID apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 91 + 90 @@ -5011,6 +5055,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 8 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. @@ -5131,6 +5183,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 13,25 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. @@ -5251,2353 +5311,2521 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 26,36 - - - Let’s dive deeper into the detailed comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. - Let’s dive deeper into the detailed comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 26,36 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 26,36 + + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 - - - Founded - Founded apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 37,44 + + + Founded + Founded apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 - - - Origin - Origin apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 67 + + + Origin + Origin apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 - - - Region - Region apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 72 + + + Region + Region apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 - - - Available in - Available in apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 77 + + + Available in + Available in apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 - - - ✅ Yes - ✅ Yes apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 82,84 + + + ✅ Yes + ✅ Yes apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 176 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 176 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 176 + + + ❌ No + ❌ No apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 - - - ❌ No - ❌ No apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 @@ -7605,119 +7833,127 @@ ❌ No apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 113,114 @@ -7725,119 +7961,127 @@ Self-Hosting apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 118,120 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 @@ -7845,119 +8089,127 @@ Use anonymously apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 145,147 @@ -7965,119 +8217,127 @@ Free Plan apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 164,166 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 @@ -8085,119 +8345,127 @@ Starting from / year apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 184,186 @@ -8205,119 +8473,127 @@ Starting from / year apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 189,190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 @@ -8325,239 +8601,255 @@ Notes apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 195 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 195 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 195 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 + + + 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. + 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 - 191 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 203,213 - - - Please note that the information provided 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. - Please note that the information provided 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 - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 @@ -8565,119 +8857,127 @@ Ready to take your investments to the next level? apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 216,219 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 @@ -8685,119 +8985,127 @@ Effortlessly track, analyze, and visualize your wealth with Ghostfolio. apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,223 @@ -8805,119 +9113,127 @@ Get Started apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 225,227 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 @@ -8925,119 +9241,127 @@ Personal Finance Tools apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 292 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 292 @@ -9045,23 +9369,23 @@ Switzerland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 51 + 53 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 63 + 65 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 351 + 364 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 362 + 387 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 363 + 388 @@ -9069,15 +9393,15 @@ Global apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 53 + 55 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 193 + 206 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 294 + 307 @@ -9085,35 +9409,35 @@ United States apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 82 + 95 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 116 + 129 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 126 + 139 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 179 + 192 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 204 + 217 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 206 + 219 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 270 + 283 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 281 + 294 @@ -9121,7 +9445,7 @@ Belgium apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 94 + 107 @@ -9129,31 +9453,31 @@ Germany apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 71 + 84 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 105 + 118 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 148 + 161 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 158 + 171 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 168 + 181 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 191 + 204 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 226 + 239 @@ -9161,7 +9485,7 @@ Austria apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 136 + 149 @@ -9169,7 +9493,7 @@ Italy apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 237 + 250 @@ -9177,7 +9501,7 @@ Netherlands apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 247 + 260 @@ -9185,7 +9509,7 @@ Thailand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 259 + 272 @@ -9193,7 +9517,7 @@ New Zealand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 292 + 305 @@ -9201,11 +9525,11 @@ Czech Republic apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 303 + 316 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 340 + 353 @@ -10261,11 +10585,15 @@ France apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 314 + 75 + + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 327 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 330 + 343 @@ -10309,7 +10637,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 184 + 220 @@ -10357,7 +10685,7 @@ Finland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 322 + 335 @@ -10460,6 +10788,142 @@ 29,31 + + Ghostfolio vs comparison table + Ghostfolio vs comparison table + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + + Canada + Canada + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 377 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index faad8e131..a2a294d3d 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -80,6 +80,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 25 @@ -188,6 +192,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts 25 @@ -262,6 +270,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 26 @@ -370,6 +382,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts 26 @@ -584,6 +600,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 28 @@ -692,6 +712,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts 28 @@ -904,119 +928,127 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 179 + 183 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 183 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 183 @@ -1146,7 +1178,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 32 + 31 @@ -1168,7 +1200,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 46 + 45 @@ -1212,6 +1244,10 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html 33 + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 183 + apps/client/src/app/components/admin-platform/admin-platform.component.html 30 @@ -1528,7 +1564,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 225 + 261 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -1548,7 +1584,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 97 + 96 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -1571,7 +1607,7 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 232 + 268 apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html @@ -1591,7 +1627,7 @@ apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 104 + 103 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -1634,7 +1670,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 116 + 120 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 189 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1653,7 +1693,11 @@ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 125 + 129 + + + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 202 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1758,7 +1802,7 @@ Sector apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 140 + 144 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1769,7 +1813,7 @@ Country apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 149 + 153 apps/client/src/app/components/admin-users/admin-users.html @@ -1784,7 +1828,7 @@ Sectors apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 155 + 159 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1799,7 +1843,7 @@ Countries apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 165 + 169 apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html @@ -1810,25 +1854,25 @@ Symbol Mapping apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 190 + 226 Scraper Configuration apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 201 + 237 Note apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 212 + 248 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 74 + 73 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -3020,7 +3064,7 @@ Account ID apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html - 91 + 90 @@ -4663,6 +4707,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 8 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. @@ -4782,6 +4834,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 13,25 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. @@ -4901,3931 +4961,4195 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 26,36 - - - Let’s dive deeper into the detailed comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 26,36 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 26,36 + + + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 37,43 + 37,44 - - - Founded apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 37,44 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 37,44 + + + Founded apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 63 + 67 - - - Origin apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 67 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 67 + + + Origin apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 68 + 72 - - - Region apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 72 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 72 + + + Region apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 73 + 77 - - - Available in apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 77 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 77 + + + Available in apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 78,80 + 82,84 - - - ✅ Yes apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 82,84 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 82,84 + + + ✅ Yes apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 100 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 104 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 107 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 111 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 121 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 125 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 132 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 136 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 146 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 150 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 169 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 153 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 176 + + + ❌ No apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 165 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 172 + 106 - - - ❌ No apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 106 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 102 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 129 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 125 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 140 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 136 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 152 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 148 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 159 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 155 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 171 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 167 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 178 + + + ❌ No apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 174 + 113,114 - - - ❌ No apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 113,114 + + + Self-Hosting apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 109,110 + 118,120 - - - Self-Hosting apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 118,120 + + + Use anonymously apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 114,116 + 145,147 - - - Use anonymously apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 145,147 + + + Free Plan apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 141,143 + 164,166 - - - Free Plan apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 164,166 + + + Starting from / year apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 160,162 + 184,186 - - - Starting from / year apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 184,186 + + + Starting from / year apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 180,182 + 189,190 - - - Starting from / year apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 189,190 + + + Notes apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 185,186 + 195 - - - Notes apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 195 + + + 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 - 191 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 191 + 203,213 - - - Please note that the information provided 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 - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 199,208 + 203,213 Ready to take your investments to the next level? apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 216,219 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 211,214 + 216,219 Effortlessly track, analyze, and visualize your wealth with Ghostfolio. apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 215,218 + 220,223 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,223 Get Started apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 225,227 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220,222 + 225,227 Personal Finance Tools apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 287 + 292 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 292 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 292 Switzerland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 51 + 53 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 63 + 65 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 351 + 364 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 362 + 387 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 363 + 388 Global apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 53 + 55 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 193 + 206 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 294 + 307 United States apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 82 + 95 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 116 + 129 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 126 + 139 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 179 + 192 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 204 + 217 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 206 + 219 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 270 + 283 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 281 + 294 Belgium apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 94 + 107 Germany apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 71 + 84 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 105 + 118 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 148 + 161 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 158 + 171 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 168 + 181 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 191 + 204 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 226 + 239 Austria apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 136 + 149 Italy apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 237 + 250 Netherlands apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 247 + 260 Thailand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 259 + 272 New Zealand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 292 + 305 Czech Republic apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 303 + 316 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 340 + 353 @@ -9697,11 +10021,15 @@ France apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 314 + 75 + + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 327 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 330 + 343 @@ -9743,7 +10071,7 @@ Benchmark apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 184 + 220 @@ -9811,7 +10139,7 @@ Finland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 322 + 335 @@ -9888,6 +10216,140 @@ 29,31 + + Ghostfolio vs comparison table + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + + + + Canada + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 377 + + From de2255f9ba550d9fd6776094ac81b58d28e10a27 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 26 Oct 2023 19:38:44 +0200 Subject: [PATCH 081/194] Release 2.15.0 (#2548) --- CHANGELOG.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 70bfb1fec..ec59301fa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ 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.15.0 - 2023-10-26 ### Added diff --git a/package.json b/package.json index 38975a3ba..f2f98fcd4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.14.0", + "version": "2.15.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From 7804c6879dd6dc347737f1b879d770510d81838e Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 28 Oct 2023 11:24:50 +0200 Subject: [PATCH 082/194] Clean up (#2543) --- apps/client/src/app/components/home-holdings/home-holdings.html | 2 +- apps/client/src/app/pages/portfolio/analysis/analysis-page.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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 5cac8cb3f..79828f6b7 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 @@
    -
    +

    Analysis

    -
    +
    Date: Sat, 28 Oct 2023 15:07:15 +0200 Subject: [PATCH 083/194] Add translation for product slogan (#2554) --- .../middlewares/html-template.middleware.ts | 34 +++++++++++-------- apps/client/src/app/pages/i18n/i18n-page.html | 1 + apps/client/src/locales/messages.de.xlf | 8 +++++ apps/client/src/locales/messages.es.xlf | 8 +++++ apps/client/src/locales/messages.fr.xlf | 8 +++++ apps/client/src/locales/messages.it.xlf | 8 +++++ apps/client/src/locales/messages.nl.xlf | 8 +++++ apps/client/src/locales/messages.pt.xlf | 8 +++++ apps/client/src/locales/messages.tr.xlf | 8 +++++ apps/client/src/locales/messages.xlf | 7 ++++ 10 files changed, 83 insertions(+), 15 deletions(-) diff --git a/apps/api/src/middlewares/html-template.middleware.ts b/apps/api/src/middlewares/html-template.middleware.ts index f0358eca6..24b8cf01b 100644 --- a/apps/api/src/middlewares/html-template.middleware.ts +++ b/apps/api/src/middlewares/html-template.middleware.ts @@ -12,13 +12,12 @@ import { DATE_FORMAT, interpolate } from '@ghostfolio/common/helper'; import { format } from 'date-fns'; import { NextFunction, Request, Response } from 'express'; -const title = 'Ghostfolio – Open Source Wealth Management Software'; -const titleShort = 'Ghostfolio'; - const i18nService = new I18nService(); let indexHtmlMap: { [languageCode: string]: string } = {}; +const title = 'Ghostfolio'; + try { indexHtmlMap = SUPPORTED_LANGUAGE_CODES.reduce( (map, languageCode) => ({ @@ -35,47 +34,47 @@ try { const locales = { '/de/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt': { featureGraphicPath: 'assets/images/blog/ghostfolio-x-sackgeld.png', - title: `Ghostfolio auf Sackgeld.com vorgestellt - ${titleShort}` + title: `Ghostfolio auf Sackgeld.com vorgestellt - ${title}` }, '/en/blog/2022/08/500-stars-on-github': { featureGraphicPath: 'assets/images/blog/500-stars-on-github.jpg', - title: `500 Stars - ${titleShort}` + title: `500 Stars - ${title}` }, '/en/blog/2022/10/hacktoberfest-2022': { featureGraphicPath: 'assets/images/blog/hacktoberfest-2022.png', - title: `Hacktoberfest 2022 - ${titleShort}` + title: `Hacktoberfest 2022 - ${title}` }, '/en/blog/2022/12/the-importance-of-tracking-your-personal-finances': { featureGraphicPath: 'assets/images/blog/20221226.jpg', - title: `The importance of tracking your personal finances - ${titleShort}` + title: `The importance of tracking your personal finances - ${title}` }, '/en/blog/2023/02/ghostfolio-meets-umbrel': { featureGraphicPath: 'assets/images/blog/ghostfolio-x-umbrel.png', - title: `Ghostfolio meets Umbrel - ${titleShort}` + title: `Ghostfolio meets Umbrel - ${title}` }, '/en/blog/2023/03/ghostfolio-reaches-1000-stars-on-github': { featureGraphicPath: 'assets/images/blog/1000-stars-on-github.jpg', - title: `Ghostfolio reaches 1’000 Stars on GitHub - ${titleShort}` + title: `Ghostfolio reaches 1’000 Stars on GitHub - ${title}` }, '/en/blog/2023/05/unlock-your-financial-potential-with-ghostfolio': { featureGraphicPath: 'assets/images/blog/20230520.jpg', - title: `Unlock your Financial Potential with Ghostfolio - ${titleShort}` + title: `Unlock your Financial Potential with Ghostfolio - ${title}` }, '/en/blog/2023/07/exploring-the-path-to-fire': { featureGraphicPath: 'assets/images/blog/20230701.jpg', - title: `Exploring the Path to FIRE - ${titleShort}` + title: `Exploring the Path to FIRE - ${title}` }, '/en/blog/2023/08/ghostfolio-joins-oss-friends': { featureGraphicPath: 'assets/images/blog/ghostfolio-joins-oss-friends.png', - title: `Ghostfolio joins OSS Friends - ${titleShort}` + title: `Ghostfolio joins OSS Friends - ${title}` }, '/en/blog/2023/09/ghostfolio-2': { featureGraphicPath: 'assets/images/blog/ghostfolio-2.jpg', - title: `Announcing Ghostfolio 2.0 - ${titleShort}` + title: `Announcing Ghostfolio 2.0 - ${title}` }, '/en/blog/2023/09/hacktoberfest-2023': { featureGraphicPath: 'assets/images/blog/hacktoberfest-2023.png', - title: `Hacktoberfest 2023 - ${titleShort}` + title: `Hacktoberfest 2023 - ${title}` } }; @@ -128,7 +127,12 @@ export const HtmlTemplateMiddleware = async ( }), featureGraphicPath: locales[path]?.featureGraphicPath ?? 'assets/cover.png', - title: locales[path]?.title ?? title + title: + locales[path]?.title ?? + `${title} – ${i18nService.getTranslation({ + languageCode, + id: 'slogan' + })}` }); return response.send(indexHtml); diff --git a/apps/client/src/app/pages/i18n/i18n-page.html b/apps/client/src/app/pages/i18n/i18n-page.html index 1ace8e297..eb9dc64af 100644 --- a/apps/client/src/app/pages/i18n/i18n-page.html +++ b/apps/client/src/app/pages/i18n/i18n-page.html @@ -5,6 +5,7 @@ Ghostfolio is a personal finance dashboard to keep track of your assets like stocks, ETFs or cryptocurrencies across multiple platforms. +
  • Open Source Wealth Management Software
  • diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 5f20705fe..936199796 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -10927,6 +10927,14 @@ 377 + + Open Source Wealth Management Software + Open Source Software für die Vermögensverwaltung + + apps/client/src/app/pages/i18n/i18n-page.html + 8 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 7cfb1e1d8..6bded3858 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -10925,6 +10925,14 @@ 377 + + Open Source Wealth Management Software + Open Source Wealth Management Software + + apps/client/src/app/pages/i18n/i18n-page.html + 8 + + diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 06235673c..a08331a1c 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -10924,6 +10924,14 @@ 377 + + Open Source Wealth Management Software + Open Source Wealth Management Software + + apps/client/src/app/pages/i18n/i18n-page.html + 8 + + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 9e64e2f11..109ce7b86 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -10925,6 +10925,14 @@ 377 + + Open Source Wealth Management Software + Open Source Wealth Management Software + + apps/client/src/app/pages/i18n/i18n-page.html + 8 + + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 43f865db6..6282b17fe 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -10924,6 +10924,14 @@ 377 + + Open Source Wealth Management Software + Open Source Wealth Management Software + + apps/client/src/app/pages/i18n/i18n-page.html + 8 + + diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index eb902fd6d..c9695f7fb 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -10924,6 +10924,14 @@ 377 + + Open Source Wealth Management Software + Open Source Wealth Management Software + + apps/client/src/app/pages/i18n/i18n-page.html + 8 + + diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 83a2a892f..fa18a47b1 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -10924,6 +10924,14 @@ 377 + + Open Source Wealth Management Software + Open Source Wealth Management Software + + apps/client/src/app/pages/i18n/i18n-page.html + 8 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index a2a294d3d..9133cd9bf 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -10350,6 +10350,13 @@ 377 + + Open Source Wealth Management Software + + apps/client/src/app/pages/i18n/i18n-page.html + 8 + + From 20cefaba19bd56021754494f891b3eb7d851fad5 Mon Sep 17 00:00:00 2001 From: Ajay <97356092+iajaymk@users.noreply.github.com> Date: Sat, 28 Oct 2023 18:39:01 +0530 Subject: [PATCH 084/194] Improve usability and validation in cash balance transfer (#2552) * Improve usability and validation in cash balance transfer * Update changelog --------- Co-authored-by: Thomas <4159106+dtslvr@users.noreply.github.com> --- CHANGELOG.md | 6 +++ .../api/src/app/account/account.controller.ts | 38 ++++++++++++------- .../accounts-table.component.html | 1 + .../pages/accounts/accounts-page.component.ts | 14 +++++-- .../transfer-balance-dialog.component.ts | 32 +++++++++++++--- 5 files changed, 67 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ec59301fa..c3ff6246f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ 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 + +### Changed + +- Improved the usability and validation in the cash balance transfer from one to another account + ## 2.15.0 - 2023-10-26 ### Added diff --git a/apps/api/src/app/account/account.controller.ts b/apps/api/src/app/account/account.controller.ts index 4666e5084..e141dc11f 100644 --- a/apps/api/src/app/account/account.controller.ts +++ b/apps/api/src/app/account/account.controller.ts @@ -190,36 +190,46 @@ export class AccountController { this.request.user.id ); - const currentAccountIds = accountsOfUser.map(({ id }) => { - return id; + const accountFrom = accountsOfUser.find(({ id }) => { + return id === accountIdFrom; }); - if ( - ![accountIdFrom, accountIdTo].every((accountId) => { - return currentAccountIds.includes(accountId); - }) - ) { + const accountTo = accountsOfUser.find(({ id }) => { + return id === accountIdTo; + }); + + if (!accountFrom || !accountTo) { throw new HttpException( getReasonPhrase(StatusCodes.NOT_FOUND), StatusCodes.NOT_FOUND ); } - const { currency } = accountsOfUser.find(({ id }) => { - return id === accountIdFrom; - }); + if (accountFrom.id === accountTo.id) { + throw new HttpException( + getReasonPhrase(StatusCodes.BAD_REQUEST), + StatusCodes.BAD_REQUEST + ); + } + + if (accountFrom.balance < balance) { + throw new HttpException( + getReasonPhrase(StatusCodes.BAD_REQUEST), + StatusCodes.BAD_REQUEST + ); + } await this.accountService.updateAccountBalance({ - currency, - accountId: accountIdFrom, + accountId: accountFrom.id, amount: -balance, + currency: accountFrom.currency, userId: this.request.user.id }); await this.accountService.updateAccountBalance({ - currency, - accountId: accountIdTo, + accountId: accountTo.id, amount: balance, + currency: accountFrom.currency, userId: this.request.user.id }); } diff --git a/apps/client/src/app/components/accounts-table/accounts-table.component.html b/apps/client/src/app/components/accounts-table/accounts-table.component.html index bfe5a667a..991ab7454 100644 --- a/apps/client/src/app/components/accounts-table/accounts-table.component.html +++ b/apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -2,6 +2,7 @@
    diff --git a/apps/client/src/index.html b/apps/client/src/index.html index eabc42f94..47f2c3d1a 100644 --- a/apps/client/src/index.html +++ b/apps/client/src/index.html @@ -6,10 +6,7 @@ - + apps/client/src/app/components/accounts-table/accounts-table.component.html - 104 + 105 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -122,7 +122,7 @@ Name apps/client/src/app/components/accounts-table/accounts-table.component.html - 33 + 34 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -166,7 +166,7 @@ Gesamt apps/client/src/app/components/accounts-table/accounts-table.component.html - 49 + 50 libs/ui/src/lib/activities-table/activities-table.component.html @@ -178,11 +178,11 @@ Wert apps/client/src/app/components/accounts-table/accounts-table.component.html - 156 + 157 apps/client/src/app/components/accounts-table/accounts-table.component.html - 191 + 192 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -234,7 +234,7 @@ Bearbeiten apps/client/src/app/components/accounts-table/accounts-table.component.html - 257 + 258 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -254,7 +254,7 @@ Löschen apps/client/src/app/components/accounts-table/accounts-table.component.html - 265 + 266 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -1904,7 +1904,7 @@ Währung apps/client/src/app/components/accounts-table/accounts-table.component.html - 59 + 60 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -1932,7 +1932,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 121 + 122 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1948,7 +1948,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 76 + 77 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -10628,7 +10628,7 @@ Cash-Bestand Transfer apps/client/src/app/components/accounts-table/accounts-table.component.html - 8 + 9 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -10932,7 +10932,23 @@ Open Source Software für die Vermögensverwaltung apps/client/src/app/pages/i18n/i18n-page.html - 8 + 12 + + + + Oops, transfer cash balance has failed. + Oops, transfer cash balance has failed. + + apps/client/src/app/pages/accounts/accounts-page.component.ts + 305 + + + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + aktie, app, asset, dashboard, etf, finanzen, kryptowährung, management, performance, portfolio, software, trading, vermögen, web3 + + apps/client/src/app/pages/i18n/i18n-page.html + 8,11 diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 6bded3858..ff2131bff 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -95,7 +95,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 104 + 105 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -123,7 +123,7 @@ Nombre apps/client/src/app/components/accounts-table/accounts-table.component.html - 33 + 34 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -167,7 +167,7 @@ Total apps/client/src/app/components/accounts-table/accounts-table.component.html - 49 + 50 libs/ui/src/lib/activities-table/activities-table.component.html @@ -179,11 +179,11 @@ Valor apps/client/src/app/components/accounts-table/accounts-table.component.html - 156 + 157 apps/client/src/app/components/accounts-table/accounts-table.component.html - 191 + 192 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -235,7 +235,7 @@ Edita apps/client/src/app/components/accounts-table/accounts-table.component.html - 257 + 258 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -255,7 +255,7 @@ Elimina apps/client/src/app/components/accounts-table/accounts-table.component.html - 265 + 266 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -1902,7 +1902,7 @@ Divisa base apps/client/src/app/components/accounts-table/accounts-table.component.html - 59 + 60 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -1930,7 +1930,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 121 + 122 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1946,7 +1946,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 76 + 77 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -10626,7 +10626,7 @@ Transfer Cash Balance apps/client/src/app/components/accounts-table/accounts-table.component.html - 8 + 9 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -10930,7 +10930,23 @@ Open Source Wealth Management Software apps/client/src/app/pages/i18n/i18n-page.html - 8 + 12 + + + + Oops, transfer cash balance has failed. + Oops, transfer cash balance has failed. + + apps/client/src/app/pages/accounts/accounts-page.component.ts + 305 + + + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + + apps/client/src/app/pages/i18n/i18n-page.html + 8,11 diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index a08331a1c..37331e210 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -86,7 +86,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 76 + 77 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -106,7 +106,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 104 + 105 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -134,7 +134,7 @@ Nom apps/client/src/app/components/accounts-table/accounts-table.component.html - 33 + 34 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -178,7 +178,7 @@ Total apps/client/src/app/components/accounts-table/accounts-table.component.html - 49 + 50 libs/ui/src/lib/activities-table/activities-table.component.html @@ -190,7 +190,7 @@ Devise apps/client/src/app/components/accounts-table/accounts-table.component.html - 59 + 60 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -218,7 +218,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 121 + 122 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -230,11 +230,11 @@ Valeur apps/client/src/app/components/accounts-table/accounts-table.component.html - 156 + 157 apps/client/src/app/components/accounts-table/accounts-table.component.html - 191 + 192 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -286,7 +286,7 @@ Modifier apps/client/src/app/components/accounts-table/accounts-table.component.html - 257 + 258 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -306,7 +306,7 @@ Supprimer apps/client/src/app/components/accounts-table/accounts-table.component.html - 265 + 266 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -10625,7 +10625,7 @@ Transfer Cash Balance apps/client/src/app/components/accounts-table/accounts-table.component.html - 8 + 9 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -10929,7 +10929,23 @@ Open Source Wealth Management Software apps/client/src/app/pages/i18n/i18n-page.html - 8 + 12 + + + + Oops, transfer cash balance has failed. + Oops, transfer cash balance has failed. + + apps/client/src/app/pages/accounts/accounts-page.component.ts + 305 + + + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + + apps/client/src/app/pages/i18n/i18n-page.html + 8,11 diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 109ce7b86..344f04bb9 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -95,7 +95,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 104 + 105 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -123,7 +123,7 @@ Nome apps/client/src/app/components/accounts-table/accounts-table.component.html - 33 + 34 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -167,7 +167,7 @@ Totale apps/client/src/app/components/accounts-table/accounts-table.component.html - 49 + 50 libs/ui/src/lib/activities-table/activities-table.component.html @@ -179,11 +179,11 @@ Valore apps/client/src/app/components/accounts-table/accounts-table.component.html - 156 + 157 apps/client/src/app/components/accounts-table/accounts-table.component.html - 191 + 192 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -235,7 +235,7 @@ Modifica apps/client/src/app/components/accounts-table/accounts-table.component.html - 257 + 258 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -255,7 +255,7 @@ Elimina apps/client/src/app/components/accounts-table/accounts-table.component.html - 265 + 266 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -1902,7 +1902,7 @@ Valuta apps/client/src/app/components/accounts-table/accounts-table.component.html - 59 + 60 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -1930,7 +1930,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 121 + 122 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1946,7 +1946,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 76 + 77 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -10626,7 +10626,7 @@ Transfer Cash Balance apps/client/src/app/components/accounts-table/accounts-table.component.html - 8 + 9 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -10930,7 +10930,23 @@ Open Source Wealth Management Software apps/client/src/app/pages/i18n/i18n-page.html - 8 + 12 + + + + Oops, transfer cash balance has failed. + Oops, transfer cash balance has failed. + + apps/client/src/app/pages/accounts/accounts-page.component.ts + 305 + + + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + + apps/client/src/app/pages/i18n/i18n-page.html + 8,11 diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 6282b17fe..8af35a715 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -94,7 +94,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 104 + 105 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -122,7 +122,7 @@ Naam apps/client/src/app/components/accounts-table/accounts-table.component.html - 33 + 34 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -166,7 +166,7 @@ Totaal apps/client/src/app/components/accounts-table/accounts-table.component.html - 49 + 50 libs/ui/src/lib/activities-table/activities-table.component.html @@ -178,11 +178,11 @@ Waarde apps/client/src/app/components/accounts-table/accounts-table.component.html - 156 + 157 apps/client/src/app/components/accounts-table/accounts-table.component.html - 191 + 192 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -234,7 +234,7 @@ Bewerken apps/client/src/app/components/accounts-table/accounts-table.component.html - 257 + 258 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -254,7 +254,7 @@ Verwijderen apps/client/src/app/components/accounts-table/accounts-table.component.html - 265 + 266 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -1901,7 +1901,7 @@ Valuta apps/client/src/app/components/accounts-table/accounts-table.component.html - 59 + 60 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -1929,7 +1929,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 121 + 122 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1945,7 +1945,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 76 + 77 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -10625,7 +10625,7 @@ Transfer Cash Balance apps/client/src/app/components/accounts-table/accounts-table.component.html - 8 + 9 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -10929,7 +10929,23 @@ Open Source Wealth Management Software apps/client/src/app/pages/i18n/i18n-page.html - 8 + 12 + + + + Oops, transfer cash balance has failed. + Oops, transfer cash balance has failed. + + apps/client/src/app/pages/accounts/accounts-page.component.ts + 305 + + + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + + apps/client/src/app/pages/i18n/i18n-page.html + 8,11 diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index c9695f7fb..8cdb648a5 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -86,7 +86,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 76 + 77 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -106,7 +106,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 104 + 105 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -134,7 +134,7 @@ Nome apps/client/src/app/components/accounts-table/accounts-table.component.html - 33 + 34 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -178,7 +178,7 @@ Total apps/client/src/app/components/accounts-table/accounts-table.component.html - 49 + 50 libs/ui/src/lib/activities-table/activities-table.component.html @@ -190,7 +190,7 @@ Moeda apps/client/src/app/components/accounts-table/accounts-table.component.html - 59 + 60 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -218,7 +218,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 121 + 122 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -230,11 +230,11 @@ Valor apps/client/src/app/components/accounts-table/accounts-table.component.html - 156 + 157 apps/client/src/app/components/accounts-table/accounts-table.component.html - 191 + 192 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -286,7 +286,7 @@ Editar apps/client/src/app/components/accounts-table/accounts-table.component.html - 257 + 258 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -306,7 +306,7 @@ Eliminar apps/client/src/app/components/accounts-table/accounts-table.component.html - 265 + 266 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -10625,7 +10625,7 @@ Transfer Cash Balance apps/client/src/app/components/accounts-table/accounts-table.component.html - 8 + 9 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -10929,7 +10929,23 @@ Open Source Wealth Management Software apps/client/src/app/pages/i18n/i18n-page.html - 8 + 12 + + + + Oops, transfer cash balance has failed. + Oops, transfer cash balance has failed. + + apps/client/src/app/pages/accounts/accounts-page.component.ts + 305 + + + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + + apps/client/src/app/pages/i18n/i18n-page.html + 8,11 diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index fa18a47b1..10774ba8e 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -1202,7 +1202,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 121 + 122 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1226,7 +1226,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 76 + 77 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1246,7 +1246,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 104 + 105 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -1274,7 +1274,7 @@ Ad apps/client/src/app/components/accounts-table/accounts-table.component.html - 33 + 34 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -1318,7 +1318,7 @@ Toplam apps/client/src/app/components/accounts-table/accounts-table.component.html - 49 + 50 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1330,7 +1330,7 @@ Para Birimi apps/client/src/app/components/accounts-table/accounts-table.component.html - 59 + 60 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -1354,11 +1354,11 @@ Değer apps/client/src/app/components/accounts-table/accounts-table.component.html - 156 + 157 apps/client/src/app/components/accounts-table/accounts-table.component.html - 191 + 192 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -1410,7 +1410,7 @@ Düzenle apps/client/src/app/components/accounts-table/accounts-table.component.html - 257 + 258 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -1430,7 +1430,7 @@ Sil apps/client/src/app/components/accounts-table/accounts-table.component.html - 265 + 266 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -10625,7 +10625,7 @@ Transfer Cash Balance apps/client/src/app/components/accounts-table/accounts-table.component.html - 8 + 9 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -10929,7 +10929,23 @@ Open Source Wealth Management Software apps/client/src/app/pages/i18n/i18n-page.html - 8 + 12 + + + + Oops, transfer cash balance has failed. + Oops, transfer cash balance has failed. + + apps/client/src/app/pages/accounts/accounts-page.component.ts + 305 + + + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + + apps/client/src/app/pages/i18n/i18n-page.html + 8,11 diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 9133cd9bf..e8ab49a0f 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -1174,7 +1174,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 121 + 122 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1196,7 +1196,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 76 + 77 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -1215,7 +1215,7 @@ apps/client/src/app/components/accounts-table/accounts-table.component.html - 104 + 105 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -1242,7 +1242,7 @@ Name apps/client/src/app/components/accounts-table/accounts-table.component.html - 33 + 34 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -1285,7 +1285,7 @@ Total apps/client/src/app/components/accounts-table/accounts-table.component.html - 49 + 50 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1296,7 +1296,7 @@ Currency apps/client/src/app/components/accounts-table/accounts-table.component.html - 59 + 60 apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -1319,11 +1319,11 @@ Value apps/client/src/app/components/accounts-table/accounts-table.component.html - 156 + 157 apps/client/src/app/components/accounts-table/accounts-table.component.html - 191 + 192 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -1374,7 +1374,7 @@ Edit apps/client/src/app/components/accounts-table/accounts-table.component.html - 257 + 258 apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -1393,7 +1393,7 @@ Delete apps/client/src/app/components/accounts-table/accounts-table.component.html - 265 + 266 apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -10103,7 +10103,7 @@ Transfer Cash Balance apps/client/src/app/components/accounts-table/accounts-table.component.html - 8 + 9 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -10354,7 +10354,21 @@ Open Source Wealth Management Software apps/client/src/app/pages/i18n/i18n-page.html - 8 + 12 + + + + Oops, transfer cash balance has failed. + + apps/client/src/app/pages/accounts/accounts-page.component.ts + 305 + + + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + + apps/client/src/app/pages/i18n/i18n-page.html + 8,11 From 409ddc90cec50abdccafffc762e97c1998ee6e98 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 28 Oct 2023 20:46:13 +0200 Subject: [PATCH 086/194] Feature/improve language localization for german 20231028 (#2556) * Improve localization * Update changelog --- CHANGELOG.md | 1 + .../pages/accounts/accounts-page.component.ts | 2 +- apps/client/src/locales/messages.de.xlf | 16 ++++++++-------- apps/client/src/locales/messages.es.xlf | 16 ++++++++-------- apps/client/src/locales/messages.fr.xlf | 16 ++++++++-------- apps/client/src/locales/messages.it.xlf | 16 ++++++++-------- apps/client/src/locales/messages.nl.xlf | 16 ++++++++-------- apps/client/src/locales/messages.pt.xlf | 16 ++++++++-------- apps/client/src/locales/messages.tr.xlf | 16 ++++++++-------- apps/client/src/locales/messages.xlf | 14 +++++++------- 10 files changed, 65 insertions(+), 64 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e2be15252..4c8bbf690 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the usability and validation in the cash balance transfer from one to another account - Improved the localized meta data (keywords) in `html` files +- Improved the language localization for German (`de`) ## 2.15.0 - 2023-10-26 diff --git a/apps/client/src/app/pages/accounts/accounts-page.component.ts b/apps/client/src/app/pages/accounts/accounts-page.component.ts index b0a3d512e..93d3ee181 100644 --- a/apps/client/src/app/pages/accounts/accounts-page.component.ts +++ b/apps/client/src/app/pages/accounts/accounts-page.component.ts @@ -302,7 +302,7 @@ export class AccountsPageComponent implements OnDestroy, OnInit { }) .pipe( catchError(() => { - alert($localize`Oops, transfer cash balance has failed.`); + alert($localize`Oops, cash balance transfer has failed.`); return EMPTY; }), diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index fd4d81d10..502e58a82 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -10935,14 +10935,6 @@ 12 - - Oops, transfer cash balance has failed. - Oops, transfer cash balance has failed. - - apps/client/src/app/pages/accounts/accounts-page.component.ts - 305 - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 aktie, app, asset, dashboard, etf, finanzen, kryptowährung, management, performance, portfolio, software, trading, vermögen, web3 @@ -10951,6 +10943,14 @@ 8,11 + + Oops, cash balance transfer has failed. + Ups, der Cash-Bestand Transfer ist fehlgeschlagen. + + apps/client/src/app/pages/accounts/accounts-page.component.ts + 305 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index ff2131bff..89fed1723 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -10933,14 +10933,6 @@ 12 - - Oops, transfer cash balance has failed. - Oops, transfer cash balance has failed. - - apps/client/src/app/pages/accounts/accounts-page.component.ts - 305 - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 @@ -10949,6 +10941,14 @@ 8,11 + + Oops, cash balance transfer has failed. + Oops, cash balance transfer has failed. + + apps/client/src/app/pages/accounts/accounts-page.component.ts + 305 + + diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 37331e210..a4324444b 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -10932,14 +10932,6 @@ 12 - - Oops, transfer cash balance has failed. - Oops, transfer cash balance has failed. - - apps/client/src/app/pages/accounts/accounts-page.component.ts - 305 - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 @@ -10948,6 +10940,14 @@ 8,11 + + Oops, cash balance transfer has failed. + Oops, cash balance transfer has failed. + + apps/client/src/app/pages/accounts/accounts-page.component.ts + 305 + + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 344f04bb9..998afb261 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -10933,14 +10933,6 @@ 12 - - Oops, transfer cash balance has failed. - Oops, transfer cash balance has failed. - - apps/client/src/app/pages/accounts/accounts-page.component.ts - 305 - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 @@ -10949,6 +10941,14 @@ 8,11 + + Oops, cash balance transfer has failed. + Oops, cash balance transfer has failed. + + apps/client/src/app/pages/accounts/accounts-page.component.ts + 305 + + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 8af35a715..f7751d125 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -10932,14 +10932,6 @@ 12 - - Oops, transfer cash balance has failed. - Oops, transfer cash balance has failed. - - apps/client/src/app/pages/accounts/accounts-page.component.ts - 305 - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 @@ -10948,6 +10940,14 @@ 8,11 + + Oops, cash balance transfer has failed. + Oops, cash balance transfer has failed. + + apps/client/src/app/pages/accounts/accounts-page.component.ts + 305 + + diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 8cdb648a5..5b6e083a8 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -10932,14 +10932,6 @@ 12 - - Oops, transfer cash balance has failed. - Oops, transfer cash balance has failed. - - apps/client/src/app/pages/accounts/accounts-page.component.ts - 305 - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 @@ -10948,6 +10940,14 @@ 8,11 + + Oops, cash balance transfer has failed. + Oops, cash balance transfer has failed. + + apps/client/src/app/pages/accounts/accounts-page.component.ts + 305 + + diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 10774ba8e..08763406b 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -10932,14 +10932,6 @@ 12 - - Oops, transfer cash balance has failed. - Oops, transfer cash balance has failed. - - apps/client/src/app/pages/accounts/accounts-page.component.ts - 305 - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 @@ -10948,6 +10940,14 @@ 8,11 + + Oops, cash balance transfer has failed. + Oops, cash balance transfer has failed. + + apps/client/src/app/pages/accounts/accounts-page.component.ts + 305 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index e8ab49a0f..7ba7a64ac 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -10357,13 +10357,6 @@ 12 - - Oops, transfer cash balance has failed. - - apps/client/src/app/pages/accounts/accounts-page.component.ts - 305 - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 @@ -10371,6 +10364,13 @@ 8,11 + + Oops, cash balance transfer has failed. + + apps/client/src/app/pages/accounts/accounts-page.component.ts + 305 + + From 16f1b16e41702ce793586afe5ddf1e9627c394b2 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 28 Oct 2023 20:46:44 +0200 Subject: [PATCH 087/194] Feature/change checkboxes to slide toggles in admin control panel (#2551) * Change checkboxes to slide toggles * Update changelog --- CHANGELOG.md | 1 + .../admin-overview/admin-overview.component.ts | 14 +++++++------- .../components/admin-overview/admin-overview.html | 10 ++++++---- .../admin-overview/admin-overview.module.ts | 4 ++-- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c8bbf690..3f21cec7a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Improved the usability and validation in the cash balance transfer from one to another account +- Changed the checkboxes to slide toggles in the overview of the admin control panel - Improved the localized meta data (keywords) in `html` files - Improved the language localization for German (`de`) diff --git a/apps/client/src/app/components/admin-overview/admin-overview.component.ts b/apps/client/src/app/components/admin-overview/admin-overview.component.ts index 97573cdbe..6c4c72f70 100644 --- a/apps/client/src/app/components/admin-overview/admin-overview.component.ts +++ b/apps/client/src/app/components/admin-overview/admin-overview.component.ts @@ -1,5 +1,5 @@ import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; -import { MatCheckboxChange } from '@angular/material/checkbox'; +import { MatSlideToggleChange } from '@angular/material/slide-toggle'; import { AdminService } from '@ghostfolio/client/services/admin.service'; import { CacheService } from '@ghostfolio/client/services/cache.service'; import { DataService } from '@ghostfolio/client/services/data.service'; @@ -169,17 +169,17 @@ export class AdminOverviewComponent implements OnDestroy, OnInit { } } - public onReadOnlyModeChange(aEvent: MatCheckboxChange) { + public onEnableUserSignupModeChange(aEvent: MatSlideToggleChange) { this.putAdminSetting({ - key: PROPERTY_IS_READ_ONLY_MODE, - value: aEvent.checked ? true : undefined + key: PROPERTY_IS_USER_SIGNUP_ENABLED, + value: aEvent.checked ? undefined : false }); } - public onEnableUserSignupModeChange(aEvent: MatCheckboxChange) { + public onReadOnlyModeChange(aEvent: MatSlideToggleChange) { this.putAdminSetting({ - key: PROPERTY_IS_USER_SIGNUP_ENABLED, - value: aEvent.checked ? undefined : false + key: PROPERTY_IS_READ_ONLY_MODE, + value: aEvent.checked ? true : undefined }); } diff --git a/apps/client/src/app/components/admin-overview/admin-overview.html b/apps/client/src/app/components/admin-overview/admin-overview.html index 47f27dd40..40ae7a150 100644 --- a/apps/client/src/app/components/admin-overview/admin-overview.html +++ b/apps/client/src/app/components/admin-overview/admin-overview.html @@ -81,21 +81,23 @@
    User Signup
    - + >
    Read-only Mode
    - + >
    diff --git a/apps/client/src/app/components/admin-overview/admin-overview.module.ts b/apps/client/src/app/components/admin-overview/admin-overview.module.ts index 899fb09ae..fed4b84df 100644 --- a/apps/client/src/app/components/admin-overview/admin-overview.module.ts +++ b/apps/client/src/app/components/admin-overview/admin-overview.module.ts @@ -3,8 +3,8 @@ import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; import { MatCardModule } from '@angular/material/card'; -import { MatCheckboxModule } from '@angular/material/checkbox'; import { MatSelectModule } from '@angular/material/select'; +import { MatSlideToggleModule } from '@angular/material/slide-toggle'; import { CacheService } from '@ghostfolio/client/services/cache.service'; import { GfValueModule } from '@ghostfolio/ui/value'; @@ -18,9 +18,9 @@ import { AdminOverviewComponent } from './admin-overview.component'; FormsModule, GfValueModule, MatButtonModule, - MatCheckboxModule, MatCardModule, MatSelectModule, + MatSlideToggleModule, ReactiveFormsModule ], providers: [CacheService], From a7baad10d109d666a80d93b1f98eff3338e580bd Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 28 Oct 2023 21:08:44 +0200 Subject: [PATCH 088/194] Feature/improve import of historical market data (#2559) * Improve historical market data import * Update changelog --- CHANGELOG.md | 2 ++ apps/api/src/app/admin/admin.controller.ts | 7 +++++-- .../src/app/admin/update-market-data.dto.ts | 6 +++--- .../market-data-detail-dialog.component.ts | 12 ++++++++--- .../asset-profile-dialog.component.ts | 6 +++--- apps/client/src/app/services/admin.service.ts | 20 ------------------- 6 files changed, 22 insertions(+), 31 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f21cec7a..a9b5dc8d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the usability and validation in the cash balance transfer from one to another account - Changed the checkboxes to slide toggles in the overview of the admin control panel +- Switched from the deprecated (`PUT`) to the new endpoint (`POST`) to manage historical market data in the asset profile details dialog of the admin control panel +- Improved the date parsing in the import historical market data of the admin control panel - Improved the localized meta data (keywords) in `html` files - Improved the language localization for German (`de`) diff --git a/apps/api/src/app/admin/admin.controller.ts b/apps/api/src/app/admin/admin.controller.ts index a19b17d4a..e277e77e4 100644 --- a/apps/api/src/app/admin/admin.controller.ts +++ b/apps/api/src/app/admin/admin.controller.ts @@ -7,7 +7,10 @@ import { GATHER_ASSET_PROFILE_PROCESS, GATHER_ASSET_PROFILE_PROCESS_OPTIONS } from '@ghostfolio/common/config'; -import { getAssetProfileIdentifier } from '@ghostfolio/common/helper'; +import { + getAssetProfileIdentifier, + resetHours +} from '@ghostfolio/common/helper'; import { AdminData, AdminMarketData, @@ -331,9 +334,9 @@ export class AdminController { const dataBulkUpdate: Prisma.MarketDataUpdateInput[] = data.marketData.map( ({ date, marketPrice }) => ({ dataSource, - date, marketPrice, symbol, + date: resetHours(parseISO(date)), state: 'CLOSE' }) ); diff --git a/apps/api/src/app/admin/update-market-data.dto.ts b/apps/api/src/app/admin/update-market-data.dto.ts index c0463de31..c2a6de11e 100644 --- a/apps/api/src/app/admin/update-market-data.dto.ts +++ b/apps/api/src/app/admin/update-market-data.dto.ts @@ -1,9 +1,9 @@ -import { IsDate, IsNumber, IsOptional } from 'class-validator'; +import { IsISO8601, IsNumber, IsOptional } from 'class-validator'; export class UpdateMarketDataDto { - @IsDate() + @IsISO8601() @IsOptional() - date?: Date; + date?: string; @IsNumber() marketPrice: number; diff --git a/apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.component.ts b/apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.component.ts index dddef0c8f..99fc1abe2 100644 --- a/apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.component.ts +++ b/apps/client/src/app/components/admin-market-data-detail/market-data-detail-dialog/market-data-detail-dialog.component.ts @@ -57,10 +57,16 @@ export class MarketDataDetailDialog implements OnDestroy { public onUpdate() { this.adminService - .putMarketData({ + .postMarketData({ dataSource: this.data.dataSource, - date: this.data.date, - marketData: { marketPrice: this.data.marketPrice }, + marketData: { + marketData: [ + { + date: this.data.date.toISOString(), + marketPrice: this.data.marketPrice + } + ] + }, symbol: this.data.symbol }) .pipe(takeUntil(this.unsubscribeSubject)) 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 c5c2db17a..5e331ca91 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 @@ -11,7 +11,7 @@ import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { UpdateAssetProfileDto } from '@ghostfolio/api/app/admin/update-asset-profile.dto'; import { AdminService } from '@ghostfolio/client/services/admin.service'; import { DataService } from '@ghostfolio/client/services/data.service'; -import { DATE_FORMAT } from '@ghostfolio/common/helper'; +import { DATE_FORMAT, parseDate } from '@ghostfolio/common/helper'; import { AdminMarketDataDetails, UniqueAsset @@ -23,7 +23,7 @@ import { MarketData, SymbolProfile } from '@prisma/client'; -import { format, parseISO } from 'date-fns'; +import { format } from 'date-fns'; import { parse as csvToJson } from 'papaparse'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @@ -174,7 +174,7 @@ export class AssetProfileDialog implements OnDestroy, OnInit { dataSource: this.data.dataSource, marketData: { marketData: marketData.map(({ date, marketPrice }) => { - return { marketPrice, date: parseISO(date) }; + return { marketPrice, date: parseDate(date).toISOString() }; }) }, symbol: this.data.symbol diff --git a/apps/client/src/app/services/admin.service.ts b/apps/client/src/app/services/admin.service.ts index 4965c6067..042914ee4 100644 --- a/apps/client/src/app/services/admin.service.ts +++ b/apps/client/src/app/services/admin.service.ts @@ -2,7 +2,6 @@ import { HttpClient, HttpParams } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { UpdateAssetProfileDto } from '@ghostfolio/api/app/admin/update-asset-profile.dto'; import { UpdateBulkMarketDataDto } from '@ghostfolio/api/app/admin/update-bulk-market-data.dto'; -import { UpdateMarketDataDto } from '@ghostfolio/api/app/admin/update-market-data.dto'; import { CreatePlatformDto } from '@ghostfolio/api/app/platform/create-platform.dto'; import { UpdatePlatformDto } from '@ghostfolio/api/app/platform/update-platform.dto'; import { CreateTagDto } from '@ghostfolio/api/app/tag/create-tag.dto'; @@ -247,25 +246,6 @@ export class AdminService { return this.http.post(`/api/v1/tag`, aTag); } - public putMarketData({ - dataSource, - date, - marketData, - symbol - }: { - dataSource: DataSource; - date: Date; - marketData: UpdateMarketDataDto; - symbol: string; - }) { - const url = `/api/v1/admin/market-data/${dataSource}/${symbol}/${format( - date, - DATE_FORMAT - )}`; - - return this.http.put(url, marketData); - } - public putPlatform(aPlatform: UpdatePlatformDto) { return this.http.put( `/api/v1/platform/${aPlatform.id}`, From c0fccd186f0ea9bcb1c977ec40e2fa1048ecdc7c Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 29 Oct 2023 08:20:55 +0100 Subject: [PATCH 089/194] Feature/upgrade prisma to version 5.5.2 (#2560) * Upgrade prisma to version 5.5.2 * Update changelog --- CHANGELOG.md | 1 + package.json | 4 ++-- yarn.lock | 36 ++++++++++++++++++------------------ 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a9b5dc8d1..3d228c76b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the date parsing in the import historical market data of the admin control panel - Improved the localized meta data (keywords) in `html` files - Improved the language localization for German (`de`) +- Upgraded `prisma` from version `5.4.2` to `5.5.2` ## 2.15.0 - 2023-10-26 diff --git a/package.json b/package.json index f2f98fcd4..79999077d 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "@nestjs/platform-express": "10.1.3", "@nestjs/schedule": "3.0.2", "@nestjs/serve-static": "4.0.0", - "@prisma/client": "5.4.2", + "@prisma/client": "5.5.2", "@simplewebauthn/browser": "8.3.1", "@simplewebauthn/server": "8.3.2", "@stripe/stripe-js": "1.47.0", @@ -122,7 +122,7 @@ "passport": "0.6.0", "passport-google-oauth20": "2.0.0", "passport-jwt": "4.0.0", - "prisma": "5.4.2", + "prisma": "5.5.2", "reflect-metadata": "0.1.13", "rxjs": "7.5.6", "stripe": "11.12.0", diff --git a/yarn.lock b/yarn.lock index 5f2d3e720..91b2f615e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4354,22 +4354,22 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@prisma/client@5.4.2": - version "5.4.2" - resolved "https://registry.yarnpkg.com/@prisma/client/-/client-5.4.2.tgz#786f9c1d8f06d955933004ac638d14da4bf14025" - integrity sha512-2xsPaz4EaMKj1WS9iW6MlPhmbqtBsXAOeVttSePp8vTFTtvzh2hZbDgswwBdSCgPzmmwF+tLB259QzggvCmJqA== +"@prisma/client@5.5.2": + version "5.5.2" + resolved "https://registry.yarnpkg.com/@prisma/client/-/client-5.5.2.tgz#ce6389e7ad9e9cf0fc2a7c6a0032ad2e12a9fd61" + integrity sha512-54XkqR8M+fxbzYqe+bIXimYnkkcGqgOh0dn0yWtIk6CQT4IUCAvNFNcQZwk2KqaLU+/1PHTSWrcHtx4XjluR5w== dependencies: - "@prisma/engines-version" "5.4.1-2.ac9d7041ed77bcc8a8dbd2ab6616b39013829574" + "@prisma/engines-version" "5.5.1-1.aebc046ce8b88ebbcb45efe31cbe7d06fd6abc0a" -"@prisma/engines-version@5.4.1-2.ac9d7041ed77bcc8a8dbd2ab6616b39013829574": - version "5.4.1-2.ac9d7041ed77bcc8a8dbd2ab6616b39013829574" - resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-5.4.1-2.ac9d7041ed77bcc8a8dbd2ab6616b39013829574.tgz#ff14f2926890edee47e8f1d08df7b4f392ee34bf" - integrity sha512-wvupDL4AA1vf4TQNANg7kR7y98ITqPsk6aacfBxZKtrJKRIsWjURHkZCGcQliHdqCiW/hGreO6d6ZuSv9MhdAA== +"@prisma/engines-version@5.5.1-1.aebc046ce8b88ebbcb45efe31cbe7d06fd6abc0a": + version "5.5.1-1.aebc046ce8b88ebbcb45efe31cbe7d06fd6abc0a" + resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-5.5.1-1.aebc046ce8b88ebbcb45efe31cbe7d06fd6abc0a.tgz#35cd59ed65ee1f9e333f4865ec86a4432c4d0a9c" + integrity sha512-O+qHFnZvAyOFk1tUco2/VdiqS0ym42a3+6CYLScllmnpbyiTplgyLt2rK/B9BTjYkSHjrgMhkG47S0oqzdIckA== -"@prisma/engines@5.4.2": - version "5.4.2" - resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-5.4.2.tgz#ba2b7faeb227c76e423e88f962afe6a031319f3f" - integrity sha512-fqeucJ3LH0e1eyFdT0zRx+oETLancu5+n4lhiYECyEz6H2RDskPJHJYHkVc0LhkU4Uv7fuEnppKU3nVKNzMh8g== +"@prisma/engines@5.5.2": + version "5.5.2" + resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-5.5.2.tgz#fe0d2361a48c7d59568ccf0d35c75432594e1ac1" + integrity sha512-Be5hoNF8k+lkB3uEMiCHbhbfF6aj1GnrTBnn5iYFT7GEr3TsOEp1soviEcBR0tYCgHbxjcIxJMhdbvxALJhAqg== "@radix-ui/number@1.0.1": version "1.0.1" @@ -16016,12 +16016,12 @@ pretty-hrtime@^1.0.3: resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" integrity sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A== -prisma@5.4.2: - version "5.4.2" - resolved "https://registry.yarnpkg.com/prisma/-/prisma-5.4.2.tgz#7eac9276439ec7073ec697c6c0dfa259d96e955e" - integrity sha512-GDMZwZy7mysB2oXU+angQqJ90iaPFdD0rHaZNkn+dio5NRkGLmMqmXs31//tg/qXT3iB0cTQwnGGQNuirhSTZg== +prisma@5.5.2: + version "5.5.2" + resolved "https://registry.yarnpkg.com/prisma/-/prisma-5.5.2.tgz#54ad2f04f0dd4174f27128e4447013e8d75c4d69" + integrity sha512-WQtG6fevOL053yoPl6dbHV+IWgKo25IRN4/pwAGqcWmg7CrtoCzvbDbN9fXUc7QS2KK0LimHIqLsaCOX/vHl8w== dependencies: - "@prisma/engines" "5.4.2" + "@prisma/engines" "5.5.2" prismjs@^1.28.0: version "1.29.0" From b26aa7f51d1bcc2244074184e44e6fda8c3ce747 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 29 Oct 2023 08:40:42 +0100 Subject: [PATCH 090/194] Feature/improve duplicate check in activities import (#2561) * Allow different accounts * Update changelog --- CHANGELOG.md | 1 + apps/api/src/app/import/import.service.ts | 2 ++ 2 files changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d228c76b..87ebc2c74 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Improved the check for duplicates in the preview step of the activities import (allow different accounts) - Improved the usability and validation in the cash balance transfer from one to another account - Changed the checkboxes to slide toggles in the overview of the admin control panel - Switched from the deprecated (`PUT`) to the new endpoint (`POST`) to manage historical market data in the asset profile details dialog of the admin control panel diff --git a/apps/api/src/app/import/import.service.ts b/apps/api/src/app/import/import.service.ts index 8fd35f8dd..96cceff54 100644 --- a/apps/api/src/app/import/import.service.ts +++ b/apps/api/src/app/import/import.service.ts @@ -83,6 +83,7 @@ export class ImportService { const isDuplicate = orders.some((activity) => { return ( + activity.accountId === Account?.id && activity.SymbolProfile.currency === assetProfile.currency && activity.SymbolProfile.dataSource === assetProfile.dataSource && isSameDay(activity.date, parseDate(dateString)) && @@ -482,6 +483,7 @@ export class ImportService { const date = parseISO((dateString)); const isDuplicate = existingActivities.some((activity) => { return ( + activity.accountId === accountId && activity.SymbolProfile.currency === currency && activity.SymbolProfile.dataSource === dataSource && isSameDay(activity.date, date) && From e31741f0c7dcb3ad90044363a8012645b3ff9123 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 29 Oct 2023 08:57:33 +0100 Subject: [PATCH 091/194] Add Capitally (#2562) --- apps/api/src/assets/sitemap.xml | 18 ++++++++++- .../personal-finance-tools/products.ts | 11 +++++++ .../products/capitally-page.component.ts | 31 +++++++++++++++++++ 3 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts diff --git a/apps/api/src/assets/sitemap.xml b/apps/api/src/assets/sitemap.xml index 20673ed8a..2b34b50ec 100644 --- a/apps/api/src/assets/sitemap.xml +++ b/apps/api/src/assets/sitemap.xml @@ -62,6 +62,10 @@ https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-beanvest ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-capitally + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-capmon ${currentDate}T00:00:00+00:00 @@ -324,6 +328,10 @@ https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-beanvest ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-capitally + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-capmon ${currentDate}T00:00:00+00:00 @@ -615,7 +623,11 @@ ${currentDate}T00:00:00+00:00 - https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-campmon + https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-capitally + ${currentDate}T00:00:00+00:00 + + + https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-capmon ${currentDate}T00:00:00+00:00 @@ -750,6 +762,10 @@ https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-beanvest ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-capitally + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-capmon ${currentDate}T00:00:00+00:00 diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products.ts index 660f49086..5799437b4 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products.ts @@ -2,6 +2,7 @@ import { Product } from '@ghostfolio/common/interfaces'; import { AltooPageComponent } from './products/altoo-page.component'; import { BeanvestPageComponent } from './products/beanvest-page.component'; +import { CapitallyPageComponent } from './products/capitally-page.component'; import { CapMonPageComponent } from './products/capmon-page.component'; import { CopilotMoneyPageComponent } from './products/copilot-money-page.component'; import { DeltaPageComponent } from './products/delta-page.component'; @@ -76,6 +77,16 @@ export const products: Product[] = [ pricingPerYear: '$100', slogan: 'Stock Portfolio Tracker for Smart Investors' }, + { + component: CapitallyPageComponent, + hasFreePlan: true, + hasSelfHostingAbility: false, + key: 'capitally', + name: 'Capitally', + origin: $localize`Poland`, + pricingPerYear: '€50', + slogan: 'Optimize your investments performance' + }, { component: CapMonPageComponent, founded: 2022, diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts new file mode 100644 index 000000000..b4356bc2d --- /dev/null +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts @@ -0,0 +1,31 @@ +import { CommonModule } from '@angular/common'; +import { Component } from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; +import { RouterModule } from '@angular/router'; + +import { products } from '../products'; + +@Component({ + host: { class: 'page' }, + imports: [CommonModule, MatButtonModule, RouterModule], + selector: 'gf-capitally-page', + standalone: true, + styleUrls: ['../product-page-template.scss'], + templateUrl: '../product-page-template.html' +}) +export class CapitallyPageComponent { + public product1 = products.find(({ key }) => { + return key === 'ghostfolio'; + }); + + public product2 = products.find(({ key }) => { + return key === 'capitally'; + }); + + public routerLinkAbout = ['/' + $localize`about`]; + public routerLinkFeatures = ['/' + $localize`features`]; + public routerLinkResourcesPersonalFinanceTools = [ + '/' + $localize`resources`, + 'personal-finance-tools' + ]; +} From 4a6fbe4d3016bebd4aaee3cf13e29d1b40b736dc Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 29 Oct 2023 08:59:00 +0100 Subject: [PATCH 092/194] Release 2.16.0 (#2563) --- CHANGELOG.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 87ebc2c74..9c498c387 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ 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.16.0 - 2023-10-29 ### Changed diff --git a/package.json b/package.json index 79999077d..0f6f5f010 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.15.0", + "version": "2.16.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From 6ad1528d01ea9766efada45a4cc74750c8e72fc9 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 29 Oct 2023 19:33:42 +0100 Subject: [PATCH 093/194] Feature/improve language localization for german 20231029 (#2565) * Update locales * Update changelog --- CHANGELOG.md | 6 + apps/client/src/locales/messages.de.xlf | 254 ++++++++++++++++++++---- apps/client/src/locales/messages.es.xlf | 254 ++++++++++++++++++++---- apps/client/src/locales/messages.fr.xlf | 254 ++++++++++++++++++++---- apps/client/src/locales/messages.it.xlf | 254 ++++++++++++++++++++---- apps/client/src/locales/messages.nl.xlf | 254 ++++++++++++++++++++---- apps/client/src/locales/messages.pt.xlf | 254 ++++++++++++++++++++---- apps/client/src/locales/messages.tr.xlf | 254 ++++++++++++++++++++---- apps/client/src/locales/messages.xlf | 253 +++++++++++++++++++---- 9 files changed, 1693 insertions(+), 344 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c498c387..2bb45d39f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ 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 + +### Changed + +- Improved the language localization for German (`de`) + ## 2.16.0 - 2023-10-29 ### Changed diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 502e58a82..2275fec58 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -658,7 +658,7 @@ Systemmeldung apps/client/src/app/components/admin-overview/admin-overview.html - 102 + 104 @@ -666,7 +666,7 @@ Systemmeldung setzen apps/client/src/app/components/admin-overview/admin-overview.html - 124 + 126 @@ -674,7 +674,7 @@ Lese-Modus apps/client/src/app/components/admin-overview/admin-overview.html - 92 + 93 @@ -682,7 +682,7 @@ Gutscheincodes apps/client/src/app/components/admin-overview/admin-overview.html - 132 + 134 @@ -690,7 +690,7 @@ Hinzufügen apps/client/src/app/components/admin-overview/admin-overview.html - 176 + 178 @@ -698,7 +698,7 @@ Verwaltung apps/client/src/app/components/admin-overview/admin-overview.html - 183 + 185 @@ -706,7 +706,7 @@ Cache leeren apps/client/src/app/components/admin-overview/admin-overview.html - 187 + 189 @@ -980,6 +980,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 183 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 183 + About @@ -4546,6 +4550,10 @@ 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 @@ -4674,6 +4682,10 @@ 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 + Region @@ -4802,6 +4814,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 77 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 77 + Available in @@ -4930,6 +4946,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 82,84 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 82,84 + ✅ Yes @@ -5058,6 +5078,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 104 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 104 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 111 @@ -5182,6 +5206,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 111 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 111 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 125 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 125 @@ -5430,6 +5462,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 136 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 136 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 150 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 150 @@ -5678,6 +5718,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 157 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 169 @@ -5926,6 +5974,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 176 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 176 + ❌ No @@ -6054,6 +6106,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 106 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 106 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 129 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 129 @@ -6302,6 +6362,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 140 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 140 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 152 @@ -6550,6 +6618,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 159 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 171 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 171 @@ -6798,6 +6874,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 178 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 178 + ❌ No @@ -6926,6 +7006,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 113,114 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 113,114 + Self-Hosting @@ -7054,6 +7138,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 118,120 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 118,120 + Use anonymously @@ -7182,6 +7270,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 145,147 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 145,147 + Free Plan @@ -7310,6 +7402,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 164,166 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 164,166 + Notes @@ -7438,6 +7534,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 195 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 195 + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. @@ -7566,6 +7666,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 220,223 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,223 + Personal Finance Tools @@ -7694,6 +7798,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 292 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 292 + Guides @@ -8430,6 +8538,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 26 @@ -8630,6 +8742,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 25 @@ -8966,6 +9082,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 28 @@ -9246,6 +9366,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 8 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. @@ -9374,6 +9498,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 13,25 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. @@ -9502,6 +9630,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 26,36 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. @@ -9630,6 +9762,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 37,44 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,44 + Starting from / year @@ -9758,6 +9894,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 184,186 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 184,186 + Starting from / year @@ -9886,6 +10026,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 189,190 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 189,190 + open-source-alternative-to @@ -10026,6 +10170,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 203,213 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 203,213 + Ready to take your investments to the next level? @@ -10154,6 +10302,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 216,219 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 216,219 + Get Started @@ -10282,29 +10434,33 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 225,227 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 225,227 + Switzerland Schweiz apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 53 + 54 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 65 + 66 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 364 + 375 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 387 + 398 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 388 + 399 @@ -10312,15 +10468,15 @@ Weltweit apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 55 + 56 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 206 + 217 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 307 + 318 @@ -10328,35 +10484,35 @@ Vereinigte Staaten von Amerika apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 95 + 106 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 129 + 140 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 139 + 150 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 192 + 203 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 217 + 228 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 219 + 230 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 283 + 294 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 294 + 305 @@ -10364,7 +10520,7 @@ Belgien apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 107 + 118 @@ -10372,31 +10528,31 @@ Deutschland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 84 + 95 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 118 + 129 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 161 + 172 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 171 + 182 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 181 + 192 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 204 + 215 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 239 + 250 @@ -10404,7 +10560,7 @@ Österreich apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 149 + 160 @@ -10412,7 +10568,7 @@ Italien apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 250 + 261 @@ -10420,7 +10576,7 @@ Niederlande apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 260 + 271 @@ -10428,7 +10584,7 @@ Thailand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 272 + 283 @@ -10436,7 +10592,7 @@ Neuseeland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 305 + 316 @@ -10444,11 +10600,11 @@ Tschechische Republik apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 316 + 327 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 353 + 364 @@ -10588,15 +10744,15 @@ Frankreich apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 75 + 76 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 327 + 338 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 343 + 354 @@ -10688,7 +10844,7 @@ Finnland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 335 + 346 @@ -10918,13 +11074,17 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 48,50 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + Canada Kanada apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 377 + 388 @@ -10951,6 +11111,14 @@ 305 + + Poland + Polen + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 86 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 89fed1723..d06096e93 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -659,7 +659,7 @@ Mensaje del sistema apps/client/src/app/components/admin-overview/admin-overview.html - 102 + 104 @@ -667,7 +667,7 @@ Establecer mensaje apps/client/src/app/components/admin-overview/admin-overview.html - 124 + 126 @@ -675,7 +675,7 @@ Modo de solo lectura apps/client/src/app/components/admin-overview/admin-overview.html - 92 + 93 @@ -683,7 +683,7 @@ Cupones apps/client/src/app/components/admin-overview/admin-overview.html - 132 + 134 @@ -691,7 +691,7 @@ Añadir apps/client/src/app/components/admin-overview/admin-overview.html - 176 + 178 @@ -699,7 +699,7 @@ Tareas domésticas apps/client/src/app/components/admin-overview/admin-overview.html - 183 + 185 @@ -707,7 +707,7 @@ Limpiar caché apps/client/src/app/components/admin-overview/admin-overview.html - 187 + 189 @@ -981,6 +981,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 183 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 183 + About @@ -4544,6 +4548,10 @@ 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 @@ -4672,6 +4680,10 @@ 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 + Region @@ -4800,6 +4812,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 77 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 77 + Available in @@ -4928,6 +4944,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 82,84 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 82,84 + ✅ Yes @@ -5056,6 +5076,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 104 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 104 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 111 @@ -5180,6 +5204,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 111 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 111 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 125 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 125 @@ -5428,6 +5460,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 136 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 136 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 150 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 150 @@ -5676,6 +5716,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 157 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 169 @@ -5924,6 +5972,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 176 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 176 + ❌ No @@ -6052,6 +6104,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 106 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 106 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 129 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 129 @@ -6300,6 +6360,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 140 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 140 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 152 @@ -6548,6 +6616,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 159 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 171 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 171 @@ -6796,6 +6872,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 178 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 178 + ❌ No @@ -6924,6 +7004,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 113,114 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 113,114 + Self-Hosting @@ -7052,6 +7136,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 118,120 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 118,120 + Use anonymously @@ -7180,6 +7268,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 145,147 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 145,147 + Free Plan @@ -7308,6 +7400,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 164,166 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 164,166 + Notes @@ -7436,6 +7532,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 195 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 195 + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. @@ -7564,6 +7664,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 220,223 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,223 + Personal Finance Tools @@ -7692,6 +7796,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 292 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 292 + Guides @@ -8428,6 +8536,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 26 @@ -8628,6 +8740,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 25 @@ -8964,6 +9080,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 28 @@ -9244,6 +9364,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 8 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. @@ -9372,6 +9496,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 13,25 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. @@ -9500,6 +9628,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 26,36 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. @@ -9628,6 +9760,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 37,44 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,44 + Starting from / year @@ -9756,6 +9892,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 184,186 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 184,186 + Starting from / year @@ -9884,6 +10024,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 189,190 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 189,190 + open-source-alternative-to @@ -10024,6 +10168,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 203,213 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 203,213 + Ready to take your investments to the next level? @@ -10152,6 +10300,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 216,219 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 216,219 + Get Started @@ -10280,29 +10432,33 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 225,227 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 225,227 + Switzerland Switzerland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 53 + 54 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 65 + 66 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 364 + 375 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 387 + 398 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 388 + 399 @@ -10310,15 +10466,15 @@ Global apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 55 + 56 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 206 + 217 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 307 + 318 @@ -10326,35 +10482,35 @@ United States apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 95 + 106 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 129 + 140 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 139 + 150 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 192 + 203 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 217 + 228 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 219 + 230 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 283 + 294 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 294 + 305 @@ -10362,7 +10518,7 @@ Belgium apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 107 + 118 @@ -10370,31 +10526,31 @@ Germany apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 84 + 95 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 118 + 129 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 161 + 172 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 171 + 182 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 181 + 192 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 204 + 215 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 239 + 250 @@ -10402,7 +10558,7 @@ Austria apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 149 + 160 @@ -10410,7 +10566,7 @@ Italy apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 250 + 261 @@ -10418,7 +10574,7 @@ Netherlands apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 260 + 271 @@ -10426,7 +10582,7 @@ Thailand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 272 + 283 @@ -10434,7 +10590,7 @@ New Zealand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 305 + 316 @@ -10442,11 +10598,11 @@ Czech Republic apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 316 + 327 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 353 + 364 @@ -10586,15 +10742,15 @@ France apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 75 + 76 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 327 + 338 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 343 + 354 @@ -10686,7 +10842,7 @@ Finland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 335 + 346 @@ -10916,13 +11072,17 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 48,50 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + Canada Canada apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 377 + 388 @@ -10949,6 +11109,14 @@ 305 + + Poland + Poland + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 86 + + diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index a4324444b..d19d32105 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -902,7 +902,7 @@ Mode Lecture Seule apps/client/src/app/components/admin-overview/admin-overview.html - 92 + 93 @@ -910,7 +910,7 @@ Message Système apps/client/src/app/components/admin-overview/admin-overview.html - 102 + 104 @@ -918,7 +918,7 @@ Définir Message apps/client/src/app/components/admin-overview/admin-overview.html - 124 + 126 @@ -926,7 +926,7 @@ Codes promotionnels apps/client/src/app/components/admin-overview/admin-overview.html - 132 + 134 @@ -934,7 +934,7 @@ Ajouter apps/client/src/app/components/admin-overview/admin-overview.html - 176 + 178 @@ -942,7 +942,7 @@ Maintenance apps/client/src/app/components/admin-overview/admin-overview.html - 183 + 185 @@ -950,7 +950,7 @@ Vider le Cache apps/client/src/app/components/admin-overview/admin-overview.html - 187 + 189 @@ -1268,6 +1268,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 183 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 183 + About @@ -4543,6 +4547,10 @@ 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 @@ -4671,6 +4679,10 @@ 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 + Region @@ -4799,6 +4811,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 77 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 77 + Available in @@ -4927,6 +4943,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 82,84 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 82,84 + ✅ Yes @@ -5055,6 +5075,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 104 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 104 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 111 @@ -5179,6 +5203,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 111 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 111 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 125 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 125 @@ -5427,6 +5459,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 136 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 136 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 150 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 150 @@ -5675,6 +5715,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 157 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 169 @@ -5923,6 +5971,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 176 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 176 + ❌ No @@ -6051,6 +6103,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 106 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 106 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 129 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 129 @@ -6299,6 +6359,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 140 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 140 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 152 @@ -6547,6 +6615,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 159 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 171 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 171 @@ -6795,6 +6871,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 178 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 178 + ❌ No @@ -6923,6 +7003,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 113,114 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 113,114 + Self-Hosting @@ -7051,6 +7135,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 118,120 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 118,120 + Use anonymously @@ -7179,6 +7267,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 145,147 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 145,147 + Free Plan @@ -7307,6 +7399,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 164,166 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 164,166 + Notes @@ -7435,6 +7531,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 195 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 195 + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. @@ -7563,6 +7663,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 220,223 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,223 + Personal Finance Tools @@ -7691,6 +7795,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 292 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 292 + Guides @@ -8427,6 +8535,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 26 @@ -8627,6 +8739,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 25 @@ -8963,6 +9079,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 28 @@ -9243,6 +9363,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 8 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. @@ -9371,6 +9495,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 13,25 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. @@ -9499,6 +9627,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 26,36 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. @@ -9627,6 +9759,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 37,44 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,44 + Starting from / year @@ -9755,6 +9891,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 184,186 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 184,186 + Starting from / year @@ -9883,6 +10023,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 189,190 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 189,190 + open-source-alternative-to @@ -10023,6 +10167,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 203,213 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 203,213 + Ready to take your investments to the next level? @@ -10151,6 +10299,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 216,219 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 216,219 + Get Started @@ -10279,29 +10431,33 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 225,227 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 225,227 + Switzerland Switzerland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 53 + 54 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 65 + 66 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 364 + 375 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 387 + 398 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 388 + 399 @@ -10309,15 +10465,15 @@ Global apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 55 + 56 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 206 + 217 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 307 + 318 @@ -10325,35 +10481,35 @@ United States apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 95 + 106 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 129 + 140 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 139 + 150 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 192 + 203 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 217 + 228 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 219 + 230 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 283 + 294 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 294 + 305 @@ -10361,7 +10517,7 @@ Belgium apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 107 + 118 @@ -10369,31 +10525,31 @@ Germany apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 84 + 95 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 118 + 129 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 161 + 172 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 171 + 182 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 181 + 192 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 204 + 215 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 239 + 250 @@ -10401,7 +10557,7 @@ Austria apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 149 + 160 @@ -10409,7 +10565,7 @@ Italy apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 250 + 261 @@ -10417,7 +10573,7 @@ Netherlands apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 260 + 271 @@ -10425,7 +10581,7 @@ Thailand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 272 + 283 @@ -10433,7 +10589,7 @@ New Zealand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 305 + 316 @@ -10441,11 +10597,11 @@ Czech Republic apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 316 + 327 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 353 + 364 @@ -10585,15 +10741,15 @@ France apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 75 + 76 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 327 + 338 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 343 + 354 @@ -10685,7 +10841,7 @@ Finland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 335 + 346 @@ -10915,13 +11071,17 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 48,50 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + Canada Canada apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 377 + 388 @@ -10948,6 +11108,14 @@ 305 + + Poland + Poland + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 86 + + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 998afb261..7e9388cee 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -659,7 +659,7 @@ Messaggio di sistema apps/client/src/app/components/admin-overview/admin-overview.html - 102 + 104 @@ -667,7 +667,7 @@ Imposta messaggio apps/client/src/app/components/admin-overview/admin-overview.html - 124 + 126 @@ -675,7 +675,7 @@ Modalità di sola lettura apps/client/src/app/components/admin-overview/admin-overview.html - 92 + 93 @@ -683,7 +683,7 @@ Buoni sconto apps/client/src/app/components/admin-overview/admin-overview.html - 132 + 134 @@ -691,7 +691,7 @@ Aggiungi apps/client/src/app/components/admin-overview/admin-overview.html - 176 + 178 @@ -699,7 +699,7 @@ Bilancio domestico apps/client/src/app/components/admin-overview/admin-overview.html - 183 + 185 @@ -707,7 +707,7 @@ Svuota la cache apps/client/src/app/components/admin-overview/admin-overview.html - 187 + 189 @@ -981,6 +981,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 183 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 183 + About @@ -4544,6 +4548,10 @@ 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 @@ -4672,6 +4680,10 @@ 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 + Region @@ -4800,6 +4812,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 77 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 77 + Available in @@ -4928,6 +4944,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 82,84 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 82,84 + ✅ Yes @@ -5056,6 +5076,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 104 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 104 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 111 @@ -5180,6 +5204,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 111 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 111 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 125 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 125 @@ -5428,6 +5460,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 136 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 136 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 150 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 150 @@ -5676,6 +5716,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 157 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 169 @@ -5924,6 +5972,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 176 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 176 + ❌ No @@ -6052,6 +6104,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 106 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 106 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 129 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 129 @@ -6300,6 +6360,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 140 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 140 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 152 @@ -6548,6 +6616,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 159 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 171 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 171 @@ -6796,6 +6872,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 178 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 178 + ❌ No @@ -6924,6 +7004,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 113,114 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 113,114 + Self-Hosting @@ -7052,6 +7136,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 118,120 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 118,120 + Use anonymously @@ -7180,6 +7268,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 145,147 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 145,147 + Free Plan @@ -7308,6 +7400,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 164,166 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 164,166 + Notes @@ -7436,6 +7532,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 195 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 195 + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. @@ -7564,6 +7664,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 220,223 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,223 + Personal Finance Tools @@ -7692,6 +7796,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 292 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 292 + Guides @@ -8428,6 +8536,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 26 @@ -8628,6 +8740,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 25 @@ -8964,6 +9080,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 28 @@ -9244,6 +9364,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 8 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. @@ -9372,6 +9496,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 13,25 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. @@ -9500,6 +9628,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 26,36 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. @@ -9628,6 +9760,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 37,44 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,44 + Starting from / year @@ -9756,6 +9892,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 184,186 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 184,186 + Starting from / year @@ -9884,6 +10024,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 189,190 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 189,190 + open-source-alternative-to @@ -10024,6 +10168,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 203,213 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 203,213 + Ready to take your investments to the next level? @@ -10152,6 +10300,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 216,219 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 216,219 + Get Started @@ -10280,29 +10432,33 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 225,227 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 225,227 + Switzerland Svizzera apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 53 + 54 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 65 + 66 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 364 + 375 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 387 + 398 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 388 + 399 @@ -10310,15 +10466,15 @@ Globale apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 55 + 56 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 206 + 217 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 307 + 318 @@ -10326,35 +10482,35 @@ Stati Uniti apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 95 + 106 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 129 + 140 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 139 + 150 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 192 + 203 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 217 + 228 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 219 + 230 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 283 + 294 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 294 + 305 @@ -10362,7 +10518,7 @@ Belgio apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 107 + 118 @@ -10370,31 +10526,31 @@ Germania apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 84 + 95 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 118 + 129 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 161 + 172 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 171 + 182 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 181 + 192 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 204 + 215 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 239 + 250 @@ -10402,7 +10558,7 @@ Austria apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 149 + 160 @@ -10410,7 +10566,7 @@ Italia apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 250 + 261 @@ -10418,7 +10574,7 @@ Paesi Bassi apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 260 + 271 @@ -10426,7 +10582,7 @@ Thailandia apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 272 + 283 @@ -10434,7 +10590,7 @@ Nuova Zelanda apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 305 + 316 @@ -10442,11 +10598,11 @@ Repubblica Ceca apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 316 + 327 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 353 + 364 @@ -10586,15 +10742,15 @@ France apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 75 + 76 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 327 + 338 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 343 + 354 @@ -10686,7 +10842,7 @@ Finland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 335 + 346 @@ -10916,13 +11072,17 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 48,50 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + Canada Canada apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 377 + 388 @@ -10949,6 +11109,14 @@ 305 + + Poland + Poland + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 86 + + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index f7751d125..0179578a2 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -658,7 +658,7 @@ Systeembericht apps/client/src/app/components/admin-overview/admin-overview.html - 102 + 104 @@ -666,7 +666,7 @@ Bericht instellen apps/client/src/app/components/admin-overview/admin-overview.html - 124 + 126 @@ -674,7 +674,7 @@ Alleen lezen apps/client/src/app/components/admin-overview/admin-overview.html - 92 + 93 @@ -682,7 +682,7 @@ Coupons apps/client/src/app/components/admin-overview/admin-overview.html - 132 + 134 @@ -690,7 +690,7 @@ Toevoegen apps/client/src/app/components/admin-overview/admin-overview.html - 176 + 178 @@ -698,7 +698,7 @@ Huishouding apps/client/src/app/components/admin-overview/admin-overview.html - 183 + 185 @@ -706,7 +706,7 @@ Cache legen apps/client/src/app/components/admin-overview/admin-overview.html - 187 + 189 @@ -980,6 +980,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 183 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 183 + About @@ -4543,6 +4547,10 @@ 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 @@ -4671,6 +4679,10 @@ 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 + Region @@ -4799,6 +4811,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 77 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 77 + Available in @@ -4927,6 +4943,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 82,84 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 82,84 + ✅ Yes @@ -5055,6 +5075,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 104 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 104 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 111 @@ -5179,6 +5203,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 111 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 111 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 125 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 125 @@ -5427,6 +5459,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 136 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 136 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 150 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 150 @@ -5675,6 +5715,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 157 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 169 @@ -5923,6 +5971,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 176 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 176 + ❌ No @@ -6051,6 +6103,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 106 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 106 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 129 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 129 @@ -6299,6 +6359,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 140 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 140 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 152 @@ -6547,6 +6615,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 159 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 171 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 171 @@ -6795,6 +6871,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 178 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 178 + ❌ No @@ -6923,6 +7003,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 113,114 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 113,114 + Self-Hosting @@ -7051,6 +7135,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 118,120 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 118,120 + Use anonymously @@ -7179,6 +7267,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 145,147 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 145,147 + Free Plan @@ -7307,6 +7399,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 164,166 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 164,166 + Notes @@ -7435,6 +7531,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 195 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 195 + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. @@ -7563,6 +7663,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 220,223 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,223 + Personal Finance Tools @@ -7691,6 +7795,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 292 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 292 + Guides @@ -8427,6 +8535,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 26 @@ -8627,6 +8739,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 25 @@ -8963,6 +9079,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 28 @@ -9243,6 +9363,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 8 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. @@ -9371,6 +9495,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 13,25 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. @@ -9499,6 +9627,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 26,36 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. @@ -9627,6 +9759,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 37,44 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,44 + Starting from / year @@ -9755,6 +9891,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 184,186 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 184,186 + Starting from / year @@ -9883,6 +10023,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 189,190 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 189,190 + open-source-alternative-to @@ -10023,6 +10167,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 203,213 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 203,213 + Ready to take your investments to the next level? @@ -10151,6 +10299,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 216,219 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 216,219 + Get Started @@ -10279,29 +10431,33 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 225,227 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 225,227 + Switzerland Zwitserland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 53 + 54 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 65 + 66 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 364 + 375 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 387 + 398 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 388 + 399 @@ -10309,15 +10465,15 @@ Wereldwijd apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 55 + 56 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 206 + 217 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 307 + 318 @@ -10325,35 +10481,35 @@ Verenigde Staten apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 95 + 106 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 129 + 140 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 139 + 150 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 192 + 203 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 217 + 228 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 219 + 230 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 283 + 294 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 294 + 305 @@ -10361,7 +10517,7 @@ België apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 107 + 118 @@ -10369,31 +10525,31 @@ Duitsland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 84 + 95 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 118 + 129 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 161 + 172 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 171 + 182 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 181 + 192 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 204 + 215 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 239 + 250 @@ -10401,7 +10557,7 @@ Oostenrijk apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 149 + 160 @@ -10409,7 +10565,7 @@ Italië apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 250 + 261 @@ -10417,7 +10573,7 @@ Nederland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 260 + 271 @@ -10425,7 +10581,7 @@ Thailand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 272 + 283 @@ -10433,7 +10589,7 @@ Nieuw-Zeeland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 305 + 316 @@ -10441,11 +10597,11 @@ Tsjechië apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 316 + 327 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 353 + 364 @@ -10585,15 +10741,15 @@ France apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 75 + 76 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 327 + 338 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 343 + 354 @@ -10685,7 +10841,7 @@ Finland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 335 + 346 @@ -10915,13 +11071,17 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 48,50 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + Canada Canada apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 377 + 388 @@ -10948,6 +11108,14 @@ 305 + + Poland + Poland + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 86 + + diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 5b6e083a8..c05728e83 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -782,7 +782,7 @@ Mensagem de Sistema apps/client/src/app/components/admin-overview/admin-overview.html - 102 + 104 @@ -790,7 +790,7 @@ Definir Mensagem apps/client/src/app/components/admin-overview/admin-overview.html - 124 + 126 @@ -798,7 +798,7 @@ Modo Somente Leitura apps/client/src/app/components/admin-overview/admin-overview.html - 92 + 93 @@ -806,7 +806,7 @@ Cupões apps/client/src/app/components/admin-overview/admin-overview.html - 132 + 134 @@ -814,7 +814,7 @@ Adicionar apps/client/src/app/components/admin-overview/admin-overview.html - 176 + 178 @@ -822,7 +822,7 @@ Manutenção apps/client/src/app/components/admin-overview/admin-overview.html - 183 + 185 @@ -830,7 +830,7 @@ Limpar Cache apps/client/src/app/components/admin-overview/admin-overview.html - 187 + 189 @@ -1148,6 +1148,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 183 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 183 + About @@ -4543,6 +4547,10 @@ 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 @@ -4671,6 +4679,10 @@ 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 + Region @@ -4799,6 +4811,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 77 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 77 + Available in @@ -4927,6 +4943,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 82,84 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 82,84 + ✅ Yes @@ -5055,6 +5075,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 104 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 104 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 111 @@ -5179,6 +5203,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 111 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 111 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 125 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 125 @@ -5427,6 +5459,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 136 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 136 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 150 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 150 @@ -5675,6 +5715,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 157 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 169 @@ -5923,6 +5971,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 176 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 176 + ❌ No @@ -6051,6 +6103,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 106 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 106 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 129 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 129 @@ -6299,6 +6359,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 140 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 140 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 152 @@ -6547,6 +6615,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 159 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 171 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 171 @@ -6795,6 +6871,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 178 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 178 + ❌ No @@ -6923,6 +7003,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 113,114 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 113,114 + Self-Hosting @@ -7051,6 +7135,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 118,120 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 118,120 + Use anonymously @@ -7179,6 +7267,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 145,147 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 145,147 + Free Plan @@ -7307,6 +7399,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 164,166 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 164,166 + Notes @@ -7435,6 +7531,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 195 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 195 + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. @@ -7563,6 +7663,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 220,223 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,223 + Personal Finance Tools @@ -7691,6 +7795,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 292 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 292 + Guides @@ -8427,6 +8535,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 26 @@ -8627,6 +8739,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 25 @@ -8963,6 +9079,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 28 @@ -9243,6 +9363,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 8 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. @@ -9371,6 +9495,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 13,25 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. @@ -9499,6 +9627,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 26,36 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. @@ -9627,6 +9759,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 37,44 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,44 + Starting from / year @@ -9755,6 +9891,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 184,186 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 184,186 + Starting from / year @@ -9883,6 +10023,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 189,190 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 189,190 + open-source-alternative-to @@ -10023,6 +10167,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 203,213 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 203,213 + Ready to take your investments to the next level? @@ -10151,6 +10299,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 216,219 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 216,219 + Get Started @@ -10279,29 +10431,33 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 225,227 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 225,227 + Switzerland Switzerland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 53 + 54 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 65 + 66 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 364 + 375 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 387 + 398 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 388 + 399 @@ -10309,15 +10465,15 @@ Global apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 55 + 56 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 206 + 217 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 307 + 318 @@ -10325,35 +10481,35 @@ United States apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 95 + 106 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 129 + 140 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 139 + 150 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 192 + 203 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 217 + 228 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 219 + 230 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 283 + 294 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 294 + 305 @@ -10361,7 +10517,7 @@ Belgium apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 107 + 118 @@ -10369,31 +10525,31 @@ Germany apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 84 + 95 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 118 + 129 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 161 + 172 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 171 + 182 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 181 + 192 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 204 + 215 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 239 + 250 @@ -10401,7 +10557,7 @@ Austria apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 149 + 160 @@ -10409,7 +10565,7 @@ Italy apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 250 + 261 @@ -10417,7 +10573,7 @@ Netherlands apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 260 + 271 @@ -10425,7 +10581,7 @@ Thailand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 272 + 283 @@ -10433,7 +10589,7 @@ New Zealand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 305 + 316 @@ -10441,11 +10597,11 @@ Czech Republic apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 316 + 327 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 353 + 364 @@ -10585,15 +10741,15 @@ France apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 75 + 76 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 327 + 338 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 343 + 354 @@ -10685,7 +10841,7 @@ Finland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 335 + 346 @@ -10915,13 +11071,17 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 48,50 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + Canada Canada apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 377 + 388 @@ -10948,6 +11108,14 @@ 305 + + Poland + Poland + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 86 + + diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 08763406b..fade44102 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -84,6 +84,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 25 @@ -276,6 +280,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 26 @@ -612,6 +620,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 28 @@ -1068,6 +1080,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 183 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 183 + Privacy Policy @@ -2086,7 +2102,7 @@ Salt okunur mod apps/client/src/app/components/admin-overview/admin-overview.html - 92 + 93 @@ -2094,7 +2110,7 @@ Sistem Mesajı apps/client/src/app/components/admin-overview/admin-overview.html - 102 + 104 @@ -2102,7 +2118,7 @@ Mesaj Belirle apps/client/src/app/components/admin-overview/admin-overview.html - 124 + 126 @@ -2110,7 +2126,7 @@ Kupon apps/client/src/app/components/admin-overview/admin-overview.html - 132 + 134 @@ -2118,7 +2134,7 @@ Ekle apps/client/src/app/components/admin-overview/admin-overview.html - 176 + 178 @@ -2126,7 +2142,7 @@ Genel Ayarlar apps/client/src/app/components/admin-overview/admin-overview.html - 183 + 185 @@ -2134,7 +2150,7 @@ Önbelleği temizle apps/client/src/app/components/admin-overview/admin-overview.html - 187 + 189 @@ -5063,6 +5079,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 8 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. @@ -5191,6 +5211,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 13,25 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. @@ -5319,6 +5343,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 26,36 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. @@ -5447,6 +5475,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 37,44 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,44 + Founded @@ -5575,6 +5607,10 @@ 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 @@ -5703,6 +5739,10 @@ 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 + Region @@ -5831,6 +5871,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 77 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 77 + Available in @@ -5959,6 +6003,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 82,84 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 82,84 + ✅ Yes @@ -6087,6 +6135,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 104 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 104 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 111 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 111 @@ -6335,6 +6391,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 125 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 125 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 136 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 136 @@ -6583,6 +6647,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 150 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 150 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 157 @@ -6831,6 +6903,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 169 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 176 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 176 @@ -7083,6 +7163,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 106 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 106 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 129 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 129 @@ -7331,6 +7419,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 140 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 140 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 152 @@ -7455,6 +7547,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 152 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 159 @@ -7703,6 +7803,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 171 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 171 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 178 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 178 @@ -7955,6 +8063,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 113,114 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 113,114 + Self-Hosting @@ -8083,6 +8195,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 118,120 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 118,120 + Use anonymously @@ -8211,6 +8327,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 145,147 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 145,147 + Free Plan @@ -8339,6 +8459,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 164,166 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 164,166 + Starting from / year @@ -8467,6 +8591,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 184,186 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 184,186 + Starting from / year @@ -8595,6 +8723,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 189,190 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 189,190 + Notes @@ -8723,6 +8855,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 195 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 195 + 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. @@ -8851,6 +8987,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 203,213 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 203,213 + Ready to take your investments to the next level? @@ -8979,6 +9119,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 216,219 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 216,219 + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. @@ -9107,6 +9251,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 220,223 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,223 + Get Started @@ -9235,6 +9383,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 225,227 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 225,227 + Personal Finance Tools @@ -9363,29 +9515,33 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 292 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 292 + Switzerland Switzerland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 53 + 54 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 65 + 66 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 364 + 375 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 387 + 398 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 388 + 399 @@ -9393,15 +9549,15 @@ Global apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 55 + 56 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 206 + 217 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 307 + 318 @@ -9409,35 +9565,35 @@ United States apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 95 + 106 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 129 + 140 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 139 + 150 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 192 + 203 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 217 + 228 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 219 + 230 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 283 + 294 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 294 + 305 @@ -9445,7 +9601,7 @@ Belgium apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 107 + 118 @@ -9453,31 +9609,31 @@ Germany apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 84 + 95 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 118 + 129 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 161 + 172 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 171 + 182 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 181 + 192 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 204 + 215 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 239 + 250 @@ -9485,7 +9641,7 @@ Austria apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 149 + 160 @@ -9493,7 +9649,7 @@ Italy apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 250 + 261 @@ -9501,7 +9657,7 @@ Netherlands apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 260 + 271 @@ -9509,7 +9665,7 @@ Thailand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 272 + 283 @@ -9517,7 +9673,7 @@ New Zealand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 305 + 316 @@ -9525,11 +9681,11 @@ Czech Republic apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 316 + 327 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 353 + 364 @@ -10585,15 +10741,15 @@ France apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 75 + 76 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 327 + 338 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 343 + 354 @@ -10685,7 +10841,7 @@ Finland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 335 + 346 @@ -10915,13 +11071,17 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 48,50 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + Canada Canada apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 377 + 388 @@ -10948,6 +11108,14 @@ 305 + + Poland + Poland + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 86 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 7ba7a64ac..c4af70702 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -84,6 +84,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts 25 + + apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts + 25 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 25 @@ -274,6 +278,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts 26 + + apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts + 26 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 26 @@ -604,6 +612,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts 28 + + apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts + 28 + apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts 28 @@ -1050,6 +1062,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 183 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 183 + Privacy Policy @@ -1993,49 +2009,49 @@ Read-only Mode apps/client/src/app/components/admin-overview/admin-overview.html - 92 + 93 System Message apps/client/src/app/components/admin-overview/admin-overview.html - 102 + 104 Set Message apps/client/src/app/components/admin-overview/admin-overview.html - 124 + 126 Coupons apps/client/src/app/components/admin-overview/admin-overview.html - 132 + 134 Add apps/client/src/app/components/admin-overview/admin-overview.html - 176 + 178 Housekeeping apps/client/src/app/components/admin-overview/admin-overview.html - 183 + 185 Flush Cache apps/client/src/app/components/admin-overview/admin-overview.html - 187 + 189 @@ -4715,6 +4731,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 8 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 8 + Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future. @@ -4842,6 +4862,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 13,25 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 13,25 + Ghostfolio is an open source software (OSS), providing a cost-effective alternative to making it particularly suitable for individuals on a tight budget, such as those pursuing Financial Independence, Retire Early (FIRE). By leveraging the collective efforts of a community of developers and personal finance enthusiasts, Ghostfolio continuously enhances its capabilities, security, and user experience. @@ -4969,6 +4993,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 26,36 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 26,36 + Let’s dive deeper into the detailed Ghostfolio vs comparison table below to gain a thorough understanding of how Ghostfolio positions itself relative to . We will explore various aspects such as features, data privacy, pricing, and more, allowing you to make a well-informed choice for your personal requirements. @@ -5096,6 +5124,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 37,44 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 37,44 + Founded @@ -5223,6 +5255,10 @@ 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 @@ -5350,6 +5386,10 @@ 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 + Region @@ -5477,6 +5517,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 77 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 77 + Available in @@ -5604,6 +5648,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 82,84 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 82,84 + ✅ Yes @@ -5731,6 +5779,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 104 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 104 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 111 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 111 @@ -5979,6 +6035,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 125 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 125 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 136 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 136 @@ -6227,6 +6291,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 150 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 150 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 157 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 157 @@ -6475,6 +6547,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 169 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 169 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 176 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 176 @@ -6726,6 +6806,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 106 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 106 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 129 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 129 @@ -6974,6 +7062,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 140 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 140 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 152 @@ -7098,6 +7190,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 152 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 152 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 159 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 159 @@ -7346,6 +7446,14 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 171 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 171 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 178 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 178 @@ -7597,6 +7705,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 113,114 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 113,114 + Self-Hosting @@ -7724,6 +7836,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 118,120 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 118,120 + Use anonymously @@ -7851,6 +7967,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 145,147 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 145,147 + Free Plan @@ -7978,6 +8098,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 164,166 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 164,166 + Starting from / year @@ -8105,6 +8229,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 184,186 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 184,186 + Starting from / year @@ -8232,6 +8360,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 189,190 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 189,190 + Notes @@ -8359,6 +8491,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 195 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 195 + 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. @@ -8486,6 +8622,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 203,213 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 203,213 + Ready to take your investments to the next level? @@ -8613,6 +8753,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 216,219 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 216,219 + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. @@ -8740,6 +8884,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 220,223 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 220,223 + Get Started @@ -8867,6 +9015,10 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 225,227 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 225,227 + Personal Finance Tools @@ -8994,162 +9146,166 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 292 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 292 + Switzerland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 53 + 54 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 65 + 66 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 364 + 375 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 387 + 398 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 388 + 399 Global apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 55 + 56 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 206 + 217 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 307 + 318 United States apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 95 + 106 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 129 + 140 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 139 + 150 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 192 + 203 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 217 + 228 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 219 + 230 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 283 + 294 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 294 + 305 Belgium apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 107 + 118 Germany apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 84 + 95 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 118 + 129 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 161 + 172 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 171 + 182 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 181 + 192 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 204 + 215 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 239 + 250 Austria apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 149 + 160 Italy apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 250 + 261 Netherlands apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 260 + 271 Thailand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 272 + 283 New Zealand apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 305 + 316 Czech Republic apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 316 + 327 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 353 + 364 @@ -10021,15 +10177,15 @@ France apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 75 + 76 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 327 + 338 apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 343 + 354 @@ -10139,7 +10295,7 @@ Finland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 335 + 346 @@ -10342,12 +10498,16 @@ apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 48,50 + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48,50 + Canada apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 377 + 388 @@ -10371,6 +10531,13 @@ 305 + + Poland + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 86 + + From 8c1b45f35b0012bc8a8866fee513074b90d129e5 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 30 Oct 2023 19:23:55 +0100 Subject: [PATCH 094/194] Bugfix/fix exception in webauthn page (#2564) * Remove useBrowserAutofill option in startAuthentication() * Update changelog --- CHANGELOG.md | 4 ++++ .../src/app/services/web-authn.service.ts | 18 +++++++++--------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2bb45d39f..b38f7b92b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the language localization for German (`de`) +### Fixed + +- Fixed an issue in the biometric authentication + ## 2.16.0 - 2023-10-29 ### Changed diff --git a/apps/client/src/app/services/web-authn.service.ts b/apps/client/src/app/services/web-authn.service.ts index 5075d036d..5c7b19838 100644 --- a/apps/client/src/app/services/web-authn.service.ts +++ b/apps/client/src/app/services/web-authn.service.ts @@ -46,12 +46,10 @@ export class WebAuthnService { switchMap((attOps) => { return startRegistration(attOps); }), - switchMap((attResp) => { + switchMap((credential) => { return this.http.post( `/api/v1/auth/webauthn/verify-attestation`, - { - credential: attResp - } + { credential } ); }), tap((authDevice) => @@ -65,6 +63,7 @@ export class WebAuthnService { public deregister() { const deviceId = this.getDeviceId(); + return this.http .delete(`/api/v1/auth-device/${deviceId}`) .pipe( @@ -82,20 +81,21 @@ export class WebAuthnService { public login() { const deviceId = this.getDeviceId(); + return this.http .post( `/api/v1/auth/webauthn/generate-assertion-options`, { deviceId } ) .pipe( - switchMap((requestOptionsJSON) => - startAuthentication(requestOptionsJSON, true) - ), - switchMap((assertionResponse) => { + switchMap((requestOptionsJSON) => { + return startAuthentication(requestOptionsJSON); + }), + switchMap((credential) => { return this.http.post<{ authToken: string }>( `/api/v1/auth/webauthn/verify-assertion`, { - credential: assertionResponse, + credential, deviceId } ); From cf7ce64de719b3e2f324b0af4413d8e8f4c1a454 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 31 Oct 2023 14:01:33 +0100 Subject: [PATCH 095/194] Bugfix/improve alignment of menu item icons (#2566) * Improve alignment * Update changelog --- CHANGELOG.md | 1 + .../accounts-table.component.html | 12 ++-- .../admin-market-data/admin-market-data.html | 14 +++- .../admin-platform.component.html | 12 ++-- .../admin-tag/admin-tag.component.html | 12 ++-- .../components/admin-users/admin-users.html | 12 ++-- .../activities-table.component.html | 72 ++++++++++++------- 7 files changed, 94 insertions(+), 41 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b38f7b92b..d77b922ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Fixed an issue in the biometric authentication +- Fixed the alignment of the icons in various menus ## 2.16.0 - 2023-10-29 diff --git a/apps/client/src/app/components/accounts-table/accounts-table.component.html b/apps/client/src/app/components/accounts-table/accounts-table.component.html index 991ab7454..b8c9ac4f7 100644 --- a/apps/client/src/app/components/accounts-table/accounts-table.component.html +++ b/apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -254,16 +254,20 @@ diff --git a/apps/client/src/app/components/admin-market-data/admin-market-data.html b/apps/client/src/app/components/admin-market-data/admin-market-data.html index 80ba30a2a..e7e8733e0 100644 --- a/apps/client/src/app/components/admin-market-data/admin-market-data.html +++ b/apps/client/src/app/components/admin-market-data/admin-market-data.html @@ -143,12 +143,24 @@ + diff --git a/apps/client/src/app/components/admin-platform/admin-platform.component.html b/apps/client/src/app/components/admin-platform/admin-platform.component.html index 63f4a2ffa..fd860d440 100644 --- a/apps/client/src/app/components/admin-platform/admin-platform.component.html +++ b/apps/client/src/app/components/admin-platform/admin-platform.component.html @@ -86,12 +86,16 @@ diff --git a/apps/client/src/app/components/admin-tag/admin-tag.component.html b/apps/client/src/app/components/admin-tag/admin-tag.component.html index d21523321..b08ae96d4 100644 --- a/apps/client/src/app/components/admin-tag/admin-tag.component.html +++ b/apps/client/src/app/components/admin-tag/admin-tag.component.html @@ -66,12 +66,16 @@ diff --git a/apps/client/src/app/components/admin-users/admin-users.html b/apps/client/src/app/components/admin-users/admin-users.html index b6e296b95..2071e058e 100644 --- a/apps/client/src/app/components/admin-users/admin-users.html +++ b/apps/client/src/app/components/admin-users/admin-users.html @@ -203,16 +203,20 @@ mat-menu-item (click)="onImpersonateUser(element.id)" > - - Impersonate User + + + Impersonate User + diff --git a/libs/ui/src/lib/activities-table/activities-table.component.html b/libs/ui/src/lib/activities-table/activities-table.component.html index aae95d619..d6a5e05af 100644 --- a/libs/ui/src/lib/activities-table/activities-table.component.html +++ b/libs/ui/src/lib/activities-table/activities-table.component.html @@ -30,8 +30,10 @@ [disabled]="dataSource.data.length === 0" (click)="onImportDividends()" > - - Import Dividends... + + + Import Dividends... +
    @@ -440,8 +448,10 @@ mat-menu-item (click)="onImport()" > - - Import Activities... + + + Import Activities... + @@ -486,24 +502,32 @@ From a7043787025f8d831851227139715148d4894658 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 1 Nov 2023 13:55:48 +0100 Subject: [PATCH 096/194] Refactor interface of getQuotes() to object (#2570) --- .../alpha-vantage/alpha-vantage.service.ts | 8 +++-- .../coingecko/coingecko.service.ts | 20 +++++++------ .../data-provider/data-provider.service.ts | 4 ++- .../eod-historical-data.service.ts | 30 +++++++++++-------- .../financial-modeling-prep.service.ts | 20 +++++++------ .../google-sheets/google-sheets.service.ts | 20 +++++++------ .../interfaces/data-provider.interface.ts | 8 +++-- .../data-provider/manual/manual.service.ts | 16 +++++----- .../rapid-api/rapid-api.service.ts | 12 ++++---- .../yahoo-finance/yahoo-finance.service.ts | 18 ++++++----- 10 files changed, 90 insertions(+), 66 deletions(-) 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 973fc5df2..fbbfffc67 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 @@ -105,9 +105,11 @@ export class AlphaVantageService implements DataProviderInterface { return DataSource.ALPHA_VANTAGE; } - public async getQuotes( - aSymbols: string[] - ): Promise<{ [symbol: string]: IDataProviderResponse }> { + public async getQuotes({ + symbols + }: { + symbols: string[]; + }): Promise<{ [symbol: string]: IDataProviderResponse }> { return {}; } 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 4360822f0..b7b571836 100644 --- a/apps/api/src/services/data-provider/coingecko/coingecko.service.ts +++ b/apps/api/src/services/data-provider/coingecko/coingecko.service.ts @@ -134,13 +134,15 @@ export class CoinGeckoService implements DataProviderInterface { return DataSource.COINGECKO; } - public async getQuotes( - aSymbols: string[] - ): Promise<{ [symbol: string]: IDataProviderResponse }> { - const results: { [symbol: string]: IDataProviderResponse } = {}; + public async getQuotes({ + symbols + }: { + symbols: string[]; + }): Promise<{ [symbol: string]: IDataProviderResponse }> { + const response: { [symbol: string]: IDataProviderResponse } = {}; - if (aSymbols.length <= 0) { - return {}; + if (symbols.length <= 0) { + return response; } try { @@ -151,7 +153,7 @@ export class CoinGeckoService implements DataProviderInterface { }, DEFAULT_REQUEST_TIMEOUT); const response = await got( - `${this.URL}/simple/price?ids=${aSymbols.join( + `${this.URL}/simple/price?ids=${symbols.join( ',' )}&vs_currencies=${DEFAULT_CURRENCY.toLowerCase()}`, { @@ -162,7 +164,7 @@ export class CoinGeckoService implements DataProviderInterface { for (const symbol in response) { if (Object.prototype.hasOwnProperty.call(response, symbol)) { - results[symbol] = { + response[symbol] = { currency: DEFAULT_CURRENCY, dataProviderInfo: this.getDataProviderInfo(), dataSource: DataSource.COINGECKO, @@ -175,7 +177,7 @@ export class CoinGeckoService implements DataProviderInterface { Logger.error(error, 'CoinGeckoService'); } - return results; + return response; } public getTestSymbol() { diff --git a/apps/api/src/services/data-provider/data-provider.service.ts b/apps/api/src/services/data-provider/data-provider.service.ts index 557699495..7a998eeb3 100644 --- a/apps/api/src/services/data-provider/data-provider.service.ts +++ b/apps/api/src/services/data-provider/data-provider.service.ts @@ -311,7 +311,9 @@ export class DataProviderService { i + maximumNumberOfSymbolsPerRequest ); - const promise = Promise.resolve(dataProvider.getQuotes(symbolsChunk)); + const promise = Promise.resolve( + dataProvider.getQuotes({ symbols: symbolsChunk }) + ); promises.push( promise.then(async (result) => { 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 ac2f35c04..37c37e389 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 @@ -131,17 +131,21 @@ export class EodHistoricalDataService implements DataProviderInterface { return DataSource.EOD_HISTORICAL_DATA; } - public async getQuotes( - aSymbols: string[] - ): Promise<{ [symbol: string]: IDataProviderResponse }> { - const symbols = aSymbols.map((symbol) => { - return this.convertToEodSymbol(symbol); - }); + public async getQuotes({ + symbols + }: { + symbols: string[]; + }): Promise<{ [symbol: string]: IDataProviderResponse }> { + let response: { [symbol: string]: IDataProviderResponse } = {}; if (symbols.length <= 0) { - return {}; + return response; } + const eodHistoricalDataSymbols = symbols.map((symbol) => { + return this.convertToEodSymbol(symbol); + }); + try { const abortController = new AbortController(); @@ -150,9 +154,9 @@ export class EodHistoricalDataService implements DataProviderInterface { }, DEFAULT_REQUEST_TIMEOUT); const realTimeResponse = await got( - `${this.URL}/real-time/${symbols[0]}?api_token=${ + `${this.URL}/real-time/${eodHistoricalDataSymbols[0]}?api_token=${ this.apiKey - }&fmt=json&s=${symbols.join(',')}`, + }&fmt=json&s=${eodHistoricalDataSymbols.join(',')}`, { // @ts-ignore signal: abortController.signal @@ -160,10 +164,12 @@ export class EodHistoricalDataService implements DataProviderInterface { ).json(); const quotes = - symbols.length === 1 ? [realTimeResponse] : realTimeResponse; + eodHistoricalDataSymbols.length === 1 + ? [realTimeResponse] + : realTimeResponse; const searchResponse = await Promise.all( - symbols + eodHistoricalDataSymbols .filter((symbol) => { return !symbol.endsWith('.FOREX'); }) @@ -176,7 +182,7 @@ export class EodHistoricalDataService implements DataProviderInterface { return items[0]; }); - const response = quotes.reduce( + response = quotes.reduce( ( result: { [symbol: string]: IDataProviderResponse }, { close, code, timestamp } 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 4fd1d4ebd..b08bc099e 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 @@ -113,13 +113,15 @@ export class FinancialModelingPrepService implements DataProviderInterface { return DataSource.FINANCIAL_MODELING_PREP; } - public async getQuotes( - aSymbols: string[] - ): Promise<{ [symbol: string]: IDataProviderResponse }> { - const results: { [symbol: string]: IDataProviderResponse } = {}; + public async getQuotes({ + symbols + }: { + symbols: string[]; + }): Promise<{ [symbol: string]: IDataProviderResponse }> { + const response: { [symbol: string]: IDataProviderResponse } = {}; - if (aSymbols.length <= 0) { - return {}; + if (symbols.length <= 0) { + return response; } try { @@ -130,7 +132,7 @@ export class FinancialModelingPrepService implements DataProviderInterface { }, DEFAULT_REQUEST_TIMEOUT); const response = await got( - `${this.URL}/quote/${aSymbols.join(',')}?apikey=${this.apiKey}`, + `${this.URL}/quote/${symbols.join(',')}?apikey=${this.apiKey}`, { // @ts-ignore signal: abortController.signal @@ -138,7 +140,7 @@ export class FinancialModelingPrepService implements DataProviderInterface { ).json(); for (const { price, symbol } of response) { - results[symbol] = { + response[symbol] = { currency: DEFAULT_CURRENCY, dataProviderInfo: this.getDataProviderInfo(), dataSource: DataSource.FINANCIAL_MODELING_PREP, @@ -150,7 +152,7 @@ export class FinancialModelingPrepService implements DataProviderInterface { Logger.error(error, 'FinancialModelingPrepService'); } - return results; + return response; } public getTestSymbol() { 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 f4b592371..a541fcd12 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 @@ -99,18 +99,20 @@ export class GoogleSheetsService implements DataProviderInterface { return DataSource.GOOGLE_SHEETS; } - public async getQuotes( - aSymbols: string[] - ): Promise<{ [symbol: string]: IDataProviderResponse }> { - if (aSymbols.length <= 0) { - return {}; + public async getQuotes({ + symbols + }: { + symbols: string[]; + }): Promise<{ [symbol: string]: IDataProviderResponse }> { + const response: { [symbol: string]: IDataProviderResponse } = {}; + + if (symbols.length <= 0) { + return response; } try { - const response: { [symbol: string]: IDataProviderResponse } = {}; - const symbolProfiles = await this.symbolProfileService.getSymbolProfiles( - aSymbols.map((symbol) => { + symbols.map((symbol) => { return { symbol, dataSource: this.getName() @@ -129,7 +131,7 @@ export class GoogleSheetsService implements DataProviderInterface { const marketPrice = parseFloat(row['marketPrice']); const symbol = row['symbol']; - if (aSymbols.includes(symbol)) { + if (symbols.includes(symbol)) { response[symbol] = { marketPrice, currency: symbolProfiles.find((symbolProfile) => { diff --git a/apps/api/src/services/data-provider/interfaces/data-provider.interface.ts b/apps/api/src/services/data-provider/interfaces/data-provider.interface.ts index 2a16cc24c..f4daeb108 100644 --- a/apps/api/src/services/data-provider/interfaces/data-provider.interface.ts +++ b/apps/api/src/services/data-provider/interfaces/data-provider.interface.ts @@ -36,9 +36,11 @@ export interface DataProviderInterface { getName(): DataSource; - getQuotes( - aSymbols: string[] - ): Promise<{ [symbol: string]: IDataProviderResponse }>; + getQuotes({ + symbols + }: { + symbols: string[]; + }): Promise<{ [symbol: string]: IDataProviderResponse }>; getTestSymbol(): string; 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 5c84a9c92..bea4b60ce 100644 --- a/apps/api/src/services/data-provider/manual/manual.service.ts +++ b/apps/api/src/services/data-provider/manual/manual.service.ts @@ -133,18 +133,20 @@ export class ManualService implements DataProviderInterface { return DataSource.MANUAL; } - public async getQuotes( - aSymbols: string[] - ): Promise<{ [symbol: string]: IDataProviderResponse }> { + public async getQuotes({ + symbols + }: { + symbols: string[]; + }): Promise<{ [symbol: string]: IDataProviderResponse }> { const response: { [symbol: string]: IDataProviderResponse } = {}; - if (aSymbols.length <= 0) { + if (symbols.length <= 0) { return response; } try { const symbolProfiles = await this.symbolProfileService.getSymbolProfiles( - aSymbols.map((symbol) => { + symbols.map((symbol) => { return { symbol, dataSource: this.getName() }; }) ); @@ -154,10 +156,10 @@ export class ManualService implements DataProviderInterface { orderBy: { date: 'desc' }, - take: aSymbols.length, + take: symbols.length, where: { symbol: { - in: aSymbols + in: symbols } } }); 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 7743d7805..ce188ffe0 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 @@ -87,15 +87,17 @@ export class RapidApiService implements DataProviderInterface { return DataSource.RAPID_API; } - public async getQuotes( - aSymbols: string[] - ): Promise<{ [symbol: string]: IDataProviderResponse }> { - if (aSymbols.length <= 0) { + public async getQuotes({ + symbols + }: { + symbols: string[]; + }): Promise<{ [symbol: string]: IDataProviderResponse }> { + if (symbols.length <= 0) { return {}; } try { - const symbol = aSymbols[0]; + const symbol = symbols[0]; if (symbol === ghostfolioFearAndGreedIndexSymbol) { const fgi = await this.getFearAndGreedIndex(); 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 c7c0ebbc8..16d48be8e 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 @@ -156,20 +156,22 @@ export class YahooFinanceService implements DataProviderInterface { return DataSource.YAHOO; } - public async getQuotes( - aSymbols: string[] - ): Promise<{ [symbol: string]: IDataProviderResponse }> { - if (aSymbols.length <= 0) { - return {}; + public async getQuotes({ + symbols + }: { + symbols: string[]; + }): Promise<{ [symbol: string]: IDataProviderResponse }> { + const response: { [symbol: string]: IDataProviderResponse } = {}; + + if (symbols.length <= 0) { + return response; } - const yahooFinanceSymbols = aSymbols.map((symbol) => + const yahooFinanceSymbols = symbols.map((symbol) => this.yahooFinanceDataEnhancerService.convertToYahooFinanceSymbol(symbol) ); try { - const response: { [symbol: string]: IDataProviderResponse } = {}; - let quotes: Pick< Quote, 'currency' | 'marketState' | 'regularMarketPrice' | 'symbol' From 5191415b5a5bb262ed23a06c03bdc50a534f4e86 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 2 Nov 2023 19:34:42 +0100 Subject: [PATCH 097/194] Add Intuit Mint (#2578) --- apps/api/src/assets/sitemap.xml | 16 ++++++++++ .../personal-finance-tools/products.ts | 18 +++++++++-- .../products/intuit-mint-page.component.ts | 31 +++++++++++++++++++ 3 files changed, 62 insertions(+), 3 deletions(-) create mode 100644 apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts diff --git a/apps/api/src/assets/sitemap.xml b/apps/api/src/assets/sitemap.xml index 2b34b50ec..6b6184b7a 100644 --- a/apps/api/src/assets/sitemap.xml +++ b/apps/api/src/assets/sitemap.xml @@ -102,6 +102,10 @@ https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-gospatz ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-intuit-mint + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-justetf ${currentDate}T00:00:00+00:00 @@ -368,6 +372,10 @@ https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-gospatz ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-intuit-mint + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-justetf ${currentDate}T00:00:00+00:00 @@ -662,6 +670,10 @@ https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-gospatz ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-intuit-mint + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-justetf ${currentDate}T00:00:00+00:00 @@ -802,6 +814,10 @@ https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-gospatz ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-intuit-mint + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-justetf ${currentDate}T00:00:00+00:00 diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products.ts index 5799437b4..8eddbea16 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products.ts @@ -12,6 +12,7 @@ import { FinaryPageComponent } from './products/finary-page.component'; import { FolisharePageComponent } from './products/folishare-page.component'; import { GetquinPageComponent } from './products/getquin-page.component'; import { GoSpatzPageComponent } from './products/gospatz-page.component'; +import { IntuitMintPageComponent } from './products/intuit-mint-page.component'; import { JustEtfPageComponent } from './products/justetf-page.component'; import { KuberaPageComponent } from './products/kubera-page.component'; import { MarketsShPageComponent } from './products/markets.sh-page.component'; @@ -93,7 +94,7 @@ export const products: Product[] = [ key: 'capmon', name: 'CapMon.org', origin: $localize`Germany`, - note: 'Sunset in 2023', + note: 'CapMon.org has discontinued in 2023', slogan: 'Next Generation Assets Tracking' }, { @@ -182,6 +183,17 @@ export const products: Product[] = [ origin: $localize`Germany`, slogan: 'Volle Kontrolle über deine Investitionen' }, + { + component: IntuitMintPageComponent, + hasFreePlan: true, + hasSelfHostingAbility: false, + key: 'intuit-mint', + name: 'Intuit Mint', + note: 'Intuit Mint has discontinued in 2023', + origin: $localize`United States`, + pricingPerYear: '$60', + slogan: 'Managing money, made simple' + }, { component: JustEtfPageComponent, founded: 2011, @@ -224,7 +236,7 @@ export const products: Product[] = [ key: 'maybe-finance', languages: ['English'], name: 'Maybe Finance', - note: 'Sunset in 2023', + note: 'Maybe Finance has discontinued in 2023', origin: $localize`United States`, pricingPerYear: '$145', region: $localize`United States`, @@ -352,7 +364,7 @@ export const products: Product[] = [ key: 'stockmarketeye', name: 'StockMarketEye', origin: $localize`France`, - note: 'Sunset in 2023', + note: 'StockMarketEye has discontinued in 2023', slogan: 'A Powerful Portfolio & Investment Tracking App' }, { diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts new file mode 100644 index 000000000..f2b594ab9 --- /dev/null +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts @@ -0,0 +1,31 @@ +import { CommonModule } from '@angular/common'; +import { Component } from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; +import { RouterModule } from '@angular/router'; + +import { products } from '../products'; + +@Component({ + host: { class: 'page' }, + imports: [CommonModule, MatButtonModule, RouterModule], + selector: 'gf-intuit-mint-page', + standalone: true, + styleUrls: ['../product-page-template.scss'], + templateUrl: '../product-page-template.html' +}) +export class IntuitMintPageComponent { + public product1 = products.find(({ key }) => { + return key === 'ghostfolio'; + }); + + public product2 = products.find(({ key }) => { + return key === 'intuit-mint'; + }); + + public routerLinkAbout = ['/' + $localize`about`]; + public routerLinkFeatures = ['/' + $localize`features`]; + public routerLinkResourcesPersonalFinanceTools = [ + '/' + $localize`resources`, + 'personal-finance-tools' + ]; +} From e69c7a753c8004e88eabf358cd3d708bac13fa15 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 2 Nov 2023 19:35:03 +0100 Subject: [PATCH 098/194] Feature/add edit exchange rate button to admin control (#2577) * Ad edit button * Update changelog --- CHANGELOG.md | 4 ++++ apps/api/src/app/admin/admin.service.ts | 20 ++++++++++++++++--- .../asset-profile-dialog.component.ts | 6 +++--- .../admin-overview/admin-overview.html | 12 +++++++++++ .../admin-overview/admin-overview.module.ts | 4 +++- .../lib/interfaces/admin-data.interface.ts | 8 +++++++- 6 files changed, 46 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d77b922ea..ae48c564d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Added + +- Added a button to edit the exchange rates in the admin control panel + ### Changed - Improved the language localization for German (`de`) diff --git a/apps/api/src/app/admin/admin.service.ts b/apps/api/src/app/admin/admin.service.ts index a42723ba3..b46a0a13a 100644 --- a/apps/api/src/app/admin/admin.service.ts +++ b/apps/api/src/app/admin/admin.service.ts @@ -23,7 +23,13 @@ import { } from '@ghostfolio/common/interfaces'; import { MarketDataPreset } from '@ghostfolio/common/types'; import { BadRequestException, Injectable } from '@nestjs/common'; -import { AssetSubClass, Prisma, Property, SymbolProfile } from '@prisma/client'; +import { + AssetSubClass, + DataSource, + Prisma, + Property, + SymbolProfile +} from '@prisma/client'; import { differenceInDays } from 'date-fns'; import { groupBy } from 'lodash'; @@ -94,9 +100,17 @@ export class AdminService { return currency !== DEFAULT_CURRENCY; }) .map((currency) => { + const label1 = DEFAULT_CURRENCY; + const label2 = currency; + return { - label1: DEFAULT_CURRENCY, - label2: currency, + label1, + label2, + dataSource: + DataSource[ + this.configurationService.get('DATA_SOURCE_EXCHANGE_RATES') + ], + symbol: `${label1}${label2}`, value: this.exchangeRateDataService.toCurrency( 1, DEFAULT_CURRENCY, 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 5e331ca91..5ccfda503 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 @@ -128,10 +128,10 @@ export class AssetProfileDialog implements OnDestroy, OnInit { } this.assetProfileForm.setValue({ - name: this.assetProfile.name, - assetClass: this.assetProfile.assetClass, - assetSubClass: this.assetProfile.assetSubClass, + assetClass: this.assetProfile.assetClass ?? null, + assetSubClass: this.assetProfile.assetSubClass ?? null, comment: this.assetProfile?.comment ?? '', + name: this.assetProfile.name ?? this.assetProfile.symbol, scraperConfiguration: JSON.stringify( this.assetProfile?.scraperConfiguration ?? {} ), diff --git a/apps/client/src/app/components/admin-overview/admin-overview.html b/apps/client/src/app/components/admin-overview/admin-overview.html index 40ae7a150..e82f787f9 100644 --- a/apps/client/src/app/components/admin-overview/admin-overview.html +++ b/apps/client/src/app/components/admin-overview/admin-overview.html @@ -55,6 +55,18 @@
    + + + + + + + + + + + + + + diff --git a/libs/ui/src/lib/benchmark/benchmark.component.ts b/libs/ui/src/lib/benchmark/benchmark.component.ts index b9f1dd25b..215cc15c6 100644 --- a/libs/ui/src/lib/benchmark/benchmark.component.ts +++ b/libs/ui/src/lib/benchmark/benchmark.component.ts @@ -4,9 +4,8 @@ import { Input, OnChanges } from '@angular/core'; -import { locale } from '@ghostfolio/common/config'; import { resolveMarketCondition } from '@ghostfolio/common/helper'; -import { Benchmark } from '@ghostfolio/common/interfaces'; +import { Benchmark, User } from '@ghostfolio/common/interfaces'; @Component({ selector: 'gf-benchmark', @@ -17,6 +16,7 @@ import { Benchmark } from '@ghostfolio/common/interfaces'; export class BenchmarkComponent implements OnChanges { @Input() benchmarks: Benchmark[]; @Input() locale: string; + @Input() user: User; public displayedColumns = ['name', 'date', 'change', 'marketCondition']; public resolveMarketCondition = resolveMarketCondition; @@ -24,8 +24,15 @@ export class BenchmarkComponent implements OnChanges { public constructor() {} public ngOnChanges() { - if (!this.locale) { - this.locale = locale; + if (this.user?.settings?.isExperimentalFeatures) { + this.displayedColumns = [ + 'name', + 'trend50d', + 'trend200d', + 'date', + 'change', + 'marketCondition' + ]; } } } diff --git a/libs/ui/src/lib/benchmark/benchmark.module.ts b/libs/ui/src/lib/benchmark/benchmark.module.ts index 1768aa39f..5b3e00209 100644 --- a/libs/ui/src/lib/benchmark/benchmark.module.ts +++ b/libs/ui/src/lib/benchmark/benchmark.module.ts @@ -3,6 +3,7 @@ import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatTableModule } from '@angular/material/table'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; +import { GfTrendIndicatorModule } from '../trend-indicator'; import { GfValueModule } from '../value'; import { BenchmarkComponent } from './benchmark.component'; @@ -11,6 +12,7 @@ import { BenchmarkComponent } from './benchmark.component'; exports: [BenchmarkComponent], imports: [ CommonModule, + GfTrendIndicatorModule, GfValueModule, MatTableModule, NgxSkeletonLoaderModule diff --git a/libs/ui/src/lib/trend-indicator/trend-indicator.component.html b/libs/ui/src/lib/trend-indicator/trend-indicator.component.html index 27251fc24..d6180cba7 100644 --- a/libs/ui/src/lib/trend-indicator/trend-indicator.component.html +++ b/libs/ui/src/lib/trend-indicator/trend-indicator.component.html @@ -13,7 +13,7 @@ *ngIf="marketState === 'closed' && range === '1d'; else delayed" class="text-muted" name="pause-circle-outline" - size="large" + [size]="size" > @@ -21,7 +21,7 @@ *ngIf="marketState === 'delayed' && range === '1d'; else trend" class="text-muted" name="time-outline" - size="large" + [size]="size" > @@ -31,21 +31,21 @@ *ngIf="value <= -0.0005" class="text-danger" name="arrow-down-circle-outline" - size="large" [ngClass]="{ 'rotate-45-down': value > -0.01 }" + [size]="size" > diff --git a/libs/ui/src/lib/trend-indicator/trend-indicator.component.ts b/libs/ui/src/lib/trend-indicator/trend-indicator.component.ts index 4da6d6c8e..e9152f8a0 100644 --- a/libs/ui/src/lib/trend-indicator/trend-indicator.component.ts +++ b/libs/ui/src/lib/trend-indicator/trend-indicator.component.ts @@ -11,6 +11,7 @@ export class TrendIndicatorComponent { @Input() isLoading = false; @Input() marketState: MarketState = 'open'; @Input() range: DateRange = 'max'; + @Input() size: 'large' | 'medium' | 'small' = 'small'; @Input() value = 0; public constructor() {} From ae763cbb87a8f803e63faeee9265404fc46bbb9d Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 15 Nov 2023 21:11:10 +0100 Subject: [PATCH 147/194] Improve style of sub title (#2652) --- apps/client/src/app/pages/blog/blog-page.html | 2 +- apps/client/src/app/pages/features/features-page.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/client/src/app/pages/blog/blog-page.html b/apps/client/src/app/pages/blog/blog-page.html index 68c1cc4dc..e34bf9dd2 100644 --- a/apps/client/src/app/pages/blog/blog-page.html +++ b/apps/client/src/app/pages/blog/blog-page.html @@ -1,7 +1,7 @@
    -

    +

    Blog Discover the latest Ghostfolio updates and insights on personal diff --git a/apps/client/src/app/pages/features/features-page.html b/apps/client/src/app/pages/features/features-page.html index 9621d61fa..5ea587c9b 100644 --- a/apps/client/src/app/pages/features/features-page.html +++ b/apps/client/src/app/pages/features/features-page.html @@ -1,7 +1,7 @@
    -

    +

    Features Check out the numerous features of Ghostfolio to manage your wealth From 1586cd3a5963167d000a0a724c3319bad0fb5808 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 15 Nov 2023 21:20:51 +0100 Subject: [PATCH 148/194] Feature/change twitter to x (#2654) * Change Twitter to X * Update changelog --- CHANGELOG.md | 2 ++ .../src/app/benchmark/benchmark.service.ts | 29 ++++++++++++----- .../twitter-bot/twitter-bot.service.ts | 31 +++++++------------ apps/client/src/app/app.component.html | 7 +++-- .../about/overview/about-overview-page.html | 8 ++--- apps/client/src/app/pages/faq/faq-page.html | 4 +-- .../benchmark-property.interface.ts | 1 + 7 files changed, 47 insertions(+), 35 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9dd09672b..576737e0b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - Improved the data source validation in the activities import +- Changed _Twitter_ to _𝕏_ +- Improved selection in the twitter bot service - Improved the language localization for German (`de`) - Upgraded `ng-extract-i18n-merge` from version `2.7.0` to `2.8.3` - Upgraded `prettier` from version `3.0.3` to `3.1.0` diff --git a/apps/api/src/app/benchmark/benchmark.service.ts b/apps/api/src/app/benchmark/benchmark.service.ts index 1f143fa2e..93f4ecc9b 100644 --- a/apps/api/src/app/benchmark/benchmark.service.ts +++ b/apps/api/src/app/benchmark/benchmark.service.ts @@ -73,9 +73,10 @@ export class BenchmarkService { return { trend50d: fiftyDayAverage, trend200d: twoHundredDayAverage }; } - public async getBenchmarks({ useCache = true } = {}): Promise< - BenchmarkResponse['benchmarks'] - > { + public async getBenchmarks({ + enableSharing = false, + useCache = true + } = {}): Promise { let benchmarks: BenchmarkResponse['benchmarks']; if (useCache) { @@ -90,7 +91,9 @@ export class BenchmarkService { } catch {} } - const benchmarkAssetProfiles = await this.getBenchmarkAssetProfiles(); + const benchmarkAssetProfiles = await this.getBenchmarkAssetProfiles({ + enableSharing + }); const promisesAllTimeHighs: Promise<{ date: Date; marketPrice: number }>[] = []; @@ -162,14 +165,24 @@ export class BenchmarkService { return benchmarks; } - public async getBenchmarkAssetProfiles(): Promise[]> { + public async getBenchmarkAssetProfiles({ + enableSharing = false + } = {}): Promise[]> { const symbolProfileIds: string[] = ( ((await this.propertyService.getByKey( PROPERTY_BENCHMARKS )) as BenchmarkProperty[]) ?? [] - ).map(({ symbolProfileId }) => { - return symbolProfileId; - }); + ) + .filter((benchmark) => { + if (enableSharing) { + return benchmark.enableSharing; + } + + return true; + }) + .map(({ symbolProfileId }) => { + return symbolProfileId; + }); const assetProfiles = await this.symbolProfileService.getSymbolProfilesByIds(symbolProfileIds); diff --git a/apps/api/src/services/twitter-bot/twitter-bot.service.ts b/apps/api/src/services/twitter-bot/twitter-bot.service.ts index d3e7fb91c..02a11b74f 100644 --- a/apps/api/src/services/twitter-bot/twitter-bot.service.ts +++ b/apps/api/src/services/twitter-bot/twitter-bot.service.ts @@ -57,7 +57,7 @@ export class TwitterBotService { symbolItem.marketPrice }/100)`; - const benchmarkListing = await this.getBenchmarkListing(3); + const benchmarkListing = await this.getBenchmarkListing(); if (benchmarkListing?.length > 1) { status += '\n\n'; @@ -78,29 +78,22 @@ export class TwitterBotService { } } - private async getBenchmarkListing(aMax: number) { + private async getBenchmarkListing() { const benchmarks = await this.benchmarkService.getBenchmarks({ + enableSharing: true, useCache: false }); - const benchmarkListing: string[] = []; - - for (const [index, benchmark] of benchmarks.entries()) { - if (index > aMax - 1) { - break; - } - - benchmarkListing.push( - `${benchmark.name} ${( - benchmark.performances.allTimeHigh.performancePercent * 100 + return benchmarks + .map(({ marketCondition, name, performances }) => { + return `${name} ${( + performances.allTimeHigh.performancePercent * 100 ).toFixed(1)}%${ - benchmark.marketCondition !== 'NEUTRAL_MARKET' - ? ' ' + resolveMarketCondition(benchmark.marketCondition).emoji + marketCondition !== 'NEUTRAL_MARKET' + ? ' ' + resolveMarketCondition(marketCondition).emoji : '' - }` - ); - } - - return benchmarkListing.join('\n'); + }`; + }) + .join('\n'); } } diff --git a/apps/client/src/app/app.component.html b/apps/client/src/app/app.component.html index 31281fe48..415770760 100644 --- a/apps/client/src/app/app.component.html +++ b/apps/client/src/app/app.component.html @@ -127,8 +127,11 @@ class="align-items-baseline d-flex" href="https://twitter.com/ghostfolio_" target="_blank" - title="Follow Ghostfolio on Twitter" - >TwitterX (formerly Twitter)
  •  
  • diff --git a/apps/client/src/app/pages/about/overview/about-overview-page.html b/apps/client/src/app/pages/about/overview/about-overview-page.html index 4dc9fbf78..02cbf7de5 100644 --- a/apps/client/src/app/pages/about/overview/about-overview-page.html +++ b/apps/client/src/app/pages/about/overview/about-overview-page.html @@ -55,7 +55,7 @@ community, tweet to @ghostfolio_, send an e-mail to @@ -70,14 +70,14 @@ >GitHub.

    -

    +

    - + 𝕏 @ghostfolio_, @@ -262,7 +262,7 @@ >community, tweet to @ghostfolio_, send an e-mail to diff --git a/libs/common/src/lib/interfaces/benchmark-property.interface.ts b/libs/common/src/lib/interfaces/benchmark-property.interface.ts index bccf4ed78..a6c4958ed 100644 --- a/libs/common/src/lib/interfaces/benchmark-property.interface.ts +++ b/libs/common/src/lib/interfaces/benchmark-property.interface.ts @@ -1,3 +1,4 @@ export interface BenchmarkProperty { + enableSharing?: boolean; symbolProfileId: string; } From 0b35a3c7a757b8cb1beb418cd55887c94c68efc4 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 15 Nov 2023 21:22:20 +0100 Subject: [PATCH 149/194] Release 2.23.0 (#2655) --- CHANGELOG.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 576737e0b..5f84d525e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ 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.23.0 - 2023-11-15 ### Added diff --git a/package.json b/package.json index c229c1da9..63c722911 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.22.0", + "version": "2.23.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From 4bf97c104b738c1024f9f4f9d2cdb4175327b3cf Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 15 Nov 2023 21:45:38 +0100 Subject: [PATCH 150/194] Update changelog (#2656) --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f84d525e..e582465aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,7 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the data source validation in the activities import - Changed _Twitter_ to _𝕏_ -- Improved selection in the twitter bot service +- Improved the selection in the twitter bot service - Improved the language localization for German (`de`) - Upgraded `ng-extract-i18n-merge` from version `2.7.0` to `2.8.3` - Upgraded `prettier` from version `3.0.3` to `3.1.0` From f0f304c0129126d66c2acd76a111d8256c0becbe Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 16 Nov 2023 20:22:18 +0100 Subject: [PATCH 151/194] Change tweet to post (#2658) --- .../src/app/pages/about/overview/about-overview-page.html | 2 +- apps/client/src/app/pages/faq/faq-page.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/client/src/app/pages/about/overview/about-overview-page.html b/apps/client/src/app/pages/about/overview/about-overview-page.html index 02cbf7de5..a7053d0bc 100644 --- a/apps/client/src/app/pages/about/overview/about-overview-page.html +++ b/apps/client/src/app/pages/about/overview/about-overview-page.html @@ -52,7 +52,7 @@ title="Join the Ghostfolio Slack community" >Slack - community, tweet to + community, post to Slack community, tweet to + >community, post to Date: Thu, 16 Nov 2023 20:22:56 +0100 Subject: [PATCH 152/194] Bugfix/improve get range query in market data service (#2659) * Attempt to fix "too many bind variables in prepared statement, expected maximum of 32767" * Update changelog --- CHANGELOG.md | 6 +++++ .../market-data/market-data.service.ts | 24 +++++++++---------- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e582465aa..c70d22f37 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ 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 + +### Fixed + +- Fixed the "too many bind variables in prepared statement" issue of the data range functionality (`getRange()`) in the market data service + ## 2.23.0 - 2023-11-15 ### Added diff --git a/apps/api/src/services/market-data/market-data.service.ts b/apps/api/src/services/market-data/market-data.service.ts index 01f8bb9aa..05172dfe1 100644 --- a/apps/api/src/services/market-data/market-data.service.ts +++ b/apps/api/src/services/market-data/market-data.service.ts @@ -64,7 +64,7 @@ export class MarketDataService { dateQuery: DateQuery; uniqueAssets: UniqueAsset[]; }): Promise { - return await this.prismaService.marketData.findMany({ + return this.prismaService.marketData.findMany({ orderBy: [ { date: 'asc' @@ -74,17 +74,17 @@ export class MarketDataService { } ], where: { - OR: uniqueAssets.map(({ dataSource, symbol }) => { - return { - AND: [ - { - dataSource, - symbol, - date: dateQuery - } - ] - }; - }) + dataSource: { + in: uniqueAssets.map(({ dataSource }) => { + return dataSource; + }) + }, + date: dateQuery, + symbol: { + in: uniqueAssets.map(({ symbol }) => { + return symbol; + }) + } } }); } From 215098e41861319c1fd31e1d01707beb3d544944 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 16 Nov 2023 20:28:09 +0100 Subject: [PATCH 153/194] Feature/improve language localization for german 20231116 (#2660) * Update locales * Update changelog --- CHANGELOG.md | 4 ++++ apps/client/src/locales/messages.de.xlf | 26 ++++++++++++++++++++----- apps/client/src/locales/messages.es.xlf | 26 ++++++++++++++++++++----- apps/client/src/locales/messages.fr.xlf | 26 ++++++++++++++++++++----- apps/client/src/locales/messages.it.xlf | 26 ++++++++++++++++++++----- apps/client/src/locales/messages.nl.xlf | 26 ++++++++++++++++++++----- apps/client/src/locales/messages.pl.xlf | 26 ++++++++++++++++++++----- apps/client/src/locales/messages.pt.xlf | 26 ++++++++++++++++++++----- apps/client/src/locales/messages.tr.xlf | 26 ++++++++++++++++++++----- apps/client/src/locales/messages.xlf | 24 ++++++++++++++++++----- 10 files changed, 191 insertions(+), 45 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c70d22f37..7aa3837be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Changed + +- Improved the language localization for German (`de`) + ### Fixed - Fixed the "too many bind variables in prepared statement" issue of the data range functionality (`getRange()`) in the market data service diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index bf20c7019..a881a67c6 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -22,7 +22,7 @@ Das Ausfallrisiko beim Börsenhandel kann erheblich sein. Es ist nicht ratsam, Geld zu investieren, welches du kurzfristig benötigst. apps/client/src/app/app.component.html - 179 + 182 @@ -2664,7 +2664,7 @@ Änderung vom Allzeithoch libs/ui/src/lib/benchmark/benchmark.component.html - 31 + 79 @@ -2672,7 +2672,7 @@ vom AZH libs/ui/src/lib/benchmark/benchmark.component.html - 33 + 81 @@ -12568,7 +12568,7 @@ Letztes Allzeithoch libs/ui/src/lib/benchmark/benchmark.component.html - 15 + 63 @@ -12839,6 +12839,22 @@ 159 + + 50-Day Trend + 50 Tage Trend + + libs/ui/src/lib/benchmark/benchmark.component.html + 15 + + + + 200-Day Trend + 200 Tage Trend + + libs/ui/src/lib/benchmark/benchmark.component.html + 39 + + - \ No newline at end of file + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index d369af6d0..9d6a13d80 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -23,7 +23,7 @@ El riesgo de pérdida en trading puede ser importante. No es aconsejable invertir dinero que puedas necesitar a corto plazo. apps/client/src/app/app.component.html - 179 + 182 @@ -2662,7 +2662,7 @@ Variación respecto al máximo histórico (ATH) libs/ui/src/lib/benchmark/benchmark.component.html - 31 + 79 @@ -2670,7 +2670,7 @@ desde el máximo histórico (ATH) libs/ui/src/lib/benchmark/benchmark.component.html - 33 + 81 @@ -12566,7 +12566,7 @@ Last All Time High libs/ui/src/lib/benchmark/benchmark.component.html - 15 + 63 @@ -12837,6 +12837,22 @@ 159 + + 50-Day Trend + 50-Day Trend + + libs/ui/src/lib/benchmark/benchmark.component.html + 15 + + + + 200-Day Trend + 200-Day Trend + + libs/ui/src/lib/benchmark/benchmark.component.html + 39 + + - \ No newline at end of file + diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 3c37ad77a..aec4344c7 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -6,7 +6,7 @@ Le risque de perte en investissant peut être important. Il est déconseillé d'investir de l'argent dont vous pourriez avoir besoin à court terme. apps/client/src/app/app.component.html - 179 + 182 @@ -3221,7 +3221,7 @@ Différence avec le Record Historique libs/ui/src/lib/benchmark/benchmark.component.html - 31 + 79 @@ -3229,7 +3229,7 @@ par rapport au record historique libs/ui/src/lib/benchmark/benchmark.component.html - 33 + 81 @@ -12565,7 +12565,7 @@ Last All Time High libs/ui/src/lib/benchmark/benchmark.component.html - 15 + 63 @@ -12836,6 +12836,22 @@ 159 + + 50-Day Trend + 50-Day Trend + + libs/ui/src/lib/benchmark/benchmark.component.html + 15 + + + + 200-Day Trend + 200-Day Trend + + libs/ui/src/lib/benchmark/benchmark.component.html + 39 + + - \ No newline at end of file + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 611cf0168..1acdb0eb4 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -23,7 +23,7 @@ Il rischio di perdita nel trading può essere notevole. Non è consigliabile investire denaro di cui potresti avere bisogno a breve termine. apps/client/src/app/app.component.html - 179 + 182 @@ -2662,7 +2662,7 @@ Variazione rispetto al massimo storico (ATH) libs/ui/src/lib/benchmark/benchmark.component.html - 31 + 79 @@ -2670,7 +2670,7 @@ dal massimo storico (ATH) libs/ui/src/lib/benchmark/benchmark.component.html - 33 + 81 @@ -12566,7 +12566,7 @@ Last All Time High libs/ui/src/lib/benchmark/benchmark.component.html - 15 + 63 @@ -12837,6 +12837,22 @@ 159 + + 50-Day Trend + 50-Day Trend + + libs/ui/src/lib/benchmark/benchmark.component.html + 15 + + + + 200-Day Trend + 200-Day Trend + + libs/ui/src/lib/benchmark/benchmark.component.html + 39 + + - \ No newline at end of file + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index bd47098ee..ed1d8e26c 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -22,7 +22,7 @@ Het risico op verlies bij handelen kan aanzienlijk zijn. Het is niet aan te raden om geld te investeren dat je misschien op korte termijn nodig heeft. apps/client/src/app/app.component.html - 179 + 182 @@ -2661,7 +2661,7 @@ Verandering van All Time High libs/ui/src/lib/benchmark/benchmark.component.html - 31 + 79 @@ -2669,7 +2669,7 @@ van ATH libs/ui/src/lib/benchmark/benchmark.component.html - 33 + 81 @@ -12565,7 +12565,7 @@ Last All Time High libs/ui/src/lib/benchmark/benchmark.component.html - 15 + 63 @@ -12836,6 +12836,22 @@ 159 + + 50-Day Trend + 50-Day Trend + + libs/ui/src/lib/benchmark/benchmark.component.html + 15 + + + + 200-Day Trend + 200-Day Trend + + libs/ui/src/lib/benchmark/benchmark.component.html + 39 + + - \ No newline at end of file + diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index c2feb29d0..2771e5e3c 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -1338,7 +1338,7 @@ The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. apps/client/src/app/app.component.html - 179 + 182 @@ -12304,7 +12304,7 @@ Last All Time High libs/ui/src/lib/benchmark/benchmark.component.html - 15 + 63 @@ -12312,7 +12312,7 @@ Change from All Time High libs/ui/src/lib/benchmark/benchmark.component.html - 31 + 79 @@ -12320,7 +12320,7 @@ from ATH libs/ui/src/lib/benchmark/benchmark.component.html - 33 + 81 @@ -12839,6 +12839,22 @@ 399 + + 50-Day Trend + 50-Day Trend + + libs/ui/src/lib/benchmark/benchmark.component.html + 15 + + + + 200-Day Trend + 200-Day Trend + + libs/ui/src/lib/benchmark/benchmark.component.html + 39 + + - \ No newline at end of file + diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index ad7b745a7..6a3bc549f 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -6,7 +6,7 @@ O risco de perda em investimentos pode ser substancial. Não é aconselhável investir dinheiro que possa vir a precisar a curto prazo. apps/client/src/app/app.component.html - 179 + 182 @@ -3097,7 +3097,7 @@ Diferença desde o Máximo Histórico libs/ui/src/lib/benchmark/benchmark.component.html - 31 + 79 @@ -3105,7 +3105,7 @@ a partir do ATH (All Time High) libs/ui/src/lib/benchmark/benchmark.component.html - 33 + 81 @@ -12565,7 +12565,7 @@ Last All Time High libs/ui/src/lib/benchmark/benchmark.component.html - 15 + 63 @@ -12836,6 +12836,22 @@ 159 + + 50-Day Trend + 50-Day Trend + + libs/ui/src/lib/benchmark/benchmark.component.html + 15 + + + + 200-Day Trend + 200-Day Trend + + libs/ui/src/lib/benchmark/benchmark.component.html + 39 + + - \ No newline at end of file + diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 46a3d3300..94931bf4b 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -1314,7 +1314,7 @@ Alım satımda kayıp riski büyük boyutta olabilir. Kısa vadede ihtiyaç duyabileceğiniz parayla yatırım yapmak tavsiye edilmez. apps/client/src/app/app.component.html - 179 + 182 @@ -11757,7 +11757,7 @@ Change from All Time High libs/ui/src/lib/benchmark/benchmark.component.html - 31 + 79 @@ -11765,7 +11765,7 @@ from ATH libs/ui/src/lib/benchmark/benchmark.component.html - 33 + 81 @@ -12565,7 +12565,7 @@ Last All Time High libs/ui/src/lib/benchmark/benchmark.component.html - 15 + 63 @@ -12836,6 +12836,22 @@ 159 + + 50-Day Trend + 50-Day Trend + + libs/ui/src/lib/benchmark/benchmark.component.html + 15 + + + + 200-Day Trend + 200-Day Trend + + libs/ui/src/lib/benchmark/benchmark.component.html + 39 + + - \ No newline at end of file + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 711d55ff7..059676f0e 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -1293,7 +1293,7 @@ The risk of loss in trading can be substantial. It is not advisable to invest money you may need in the short term. apps/client/src/app/app.component.html - 179 + 182 @@ -11314,14 +11314,14 @@ Change from All Time High libs/ui/src/lib/benchmark/benchmark.component.html - 31 + 79 from ATH libs/ui/src/lib/benchmark/benchmark.component.html - 33 + 81 @@ -11966,7 +11966,7 @@ Last All Time High libs/ui/src/lib/benchmark/benchmark.component.html - 15 + 63 @@ -12252,6 +12252,20 @@ 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 + + - \ No newline at end of file + From 6f11627006db5c4f3f6edf7fcd7069ab3eb25e41 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 16 Nov 2023 20:29:49 +0100 Subject: [PATCH 154/194] Release 2.24.0 (#2661) --- CHANGELOG.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7aa3837be..bc86355c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ 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.24.0 - 2023-11-16 ### Changed diff --git a/package.json b/package.json index 63c722911..28d465e96 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.23.0", + "version": "2.24.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From 8c25294da761dade42c257e942276bc3d61d7e0d Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 17 Nov 2023 20:08:23 +0100 Subject: [PATCH 155/194] Feature/upgrade http status codes to version 2.3.0 (#2644) * Upgrade http-status-codes to version 2.3.0 * Update changelog --- CHANGELOG.md | 6 ++++++ package.json | 2 +- yarn.lock | 8 ++++---- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bc86355c7..73f1a6477 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ 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 + +### Changed + +- Upgraded `http-status-codes` from version `2.2.0` to `2.3.0` + ## 2.24.0 - 2023-11-16 ### Changed diff --git a/package.json b/package.json index 28d465e96..46e0357fa 100644 --- a/package.json +++ b/package.json @@ -108,7 +108,7 @@ "google-spreadsheet": "3.2.0", "got": "11.8.6", "helmet": "7.0.0", - "http-status-codes": "2.2.0", + "http-status-codes": "2.3.0", "ionicons": "7.1.0", "lodash": "4.17.21", "marked": "4.2.12", diff --git a/yarn.lock b/yarn.lock index 314013037..f097fb686 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11961,10 +11961,10 @@ http-signature@~1.3.6: jsprim "^2.0.2" sshpk "^1.14.1" -http-status-codes@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/http-status-codes/-/http-status-codes-2.2.0.tgz#bb2efe63d941dfc2be18e15f703da525169622be" - integrity sha512-feERVo9iWxvnejp3SEfm/+oNG517npqL2/PIA8ORjyOZjGC7TwCRQsZylciLS64i6pJ0wRYz3rkXLRwbtFa8Ng== +http-status-codes@2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/http-status-codes/-/http-status-codes-2.3.0.tgz#987fefb28c69f92a43aecc77feec2866349a8bfc" + integrity sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA== http2-wrapper@^1.0.0-beta.5.2: version "1.0.3" From 272a34195b6079eebcc436938f4a8786a6f236cc Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 17 Nov 2023 20:09:19 +0100 Subject: [PATCH 156/194] Refactor folder (#2665) --- .../hacktoberfest-2023-debriefing-page.component.ts | 0 .../hacktoberfest-2023-debriefing-page.html | 0 apps/client/src/app/pages/blog/blog-page-routing.module.ts | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) rename apps/client/src/app/pages/blog/2023/11/{hacktoberfest-2023 => hacktoberfest-2023-debriefing}/hacktoberfest-2023-debriefing-page.component.ts (100%) rename apps/client/src/app/pages/blog/2023/11/{hacktoberfest-2023 => hacktoberfest-2023-debriefing}/hacktoberfest-2023-debriefing-page.html (100%) diff --git a/apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023/hacktoberfest-2023-debriefing-page.component.ts b/apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts similarity index 100% rename from apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023/hacktoberfest-2023-debriefing-page.component.ts rename to apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component.ts diff --git a/apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023/hacktoberfest-2023-debriefing-page.html b/apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.html similarity index 100% rename from apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023/hacktoberfest-2023-debriefing-page.html rename to apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.html diff --git a/apps/client/src/app/pages/blog/blog-page-routing.module.ts b/apps/client/src/app/pages/blog/blog-page-routing.module.ts index cfdf29874..46b4b5fa2 100644 --- a/apps/client/src/app/pages/blog/blog-page-routing.module.ts +++ b/apps/client/src/app/pages/blog/blog-page-routing.module.ts @@ -169,7 +169,7 @@ const routes: Routes = [ path: '2023/11/hacktoberfest-2023-debriefing', loadComponent: () => import( - './2023/11/hacktoberfest-2023/hacktoberfest-2023-debriefing-page.component' + './2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component' ).then((c) => c.Hacktoberfest2023DebriefingPageComponent), title: 'Hacktoberfest 2023 Debriefing' } From e2234c4966ffb02c86709b17c57e99e53d08f68c Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 17 Nov 2023 20:20:49 +0100 Subject: [PATCH 157/194] Feature/add black friday 2023 blog post (#2664) * Add blog post: Black Friday 2023 * Update changelog --- CHANGELOG.md | 4 + apps/api/src/assets/sitemap.xml | 4 + .../middlewares/html-template.middleware.ts | 4 + .../black-friday-2023-page.component.ts | 16 ++ .../black-friday-2023-page.html | 152 ++++++++++++++++++ .../pages/blog/blog-page-routing.module.ts | 9 ++ apps/client/src/app/pages/blog/blog-page.html | 28 ++++ .../assets/images/blog/black-friday-2023.jpg | Bin 0 -> 192676 bytes 8 files changed, 217 insertions(+) create mode 100644 apps/client/src/app/pages/blog/2023/11/black-friday-2023/black-friday-2023-page.component.ts create mode 100644 apps/client/src/app/pages/blog/2023/11/black-friday-2023/black-friday-2023-page.html create mode 100644 apps/client/src/assets/images/blog/black-friday-2023.jpg diff --git a/CHANGELOG.md b/CHANGELOG.md index 73f1a6477..4f5fae02f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Added + +- Added a blog post: _Black Friday 2023_ + ### Changed - Upgraded `http-status-codes` from version `2.2.0` to `2.3.0` diff --git a/apps/api/src/assets/sitemap.xml b/apps/api/src/assets/sitemap.xml index 4fbc9efac..af168fc58 100644 --- a/apps/api/src/assets/sitemap.xml +++ b/apps/api/src/assets/sitemap.xml @@ -326,6 +326,10 @@ https://ghostfol.io/en/blog/2023/09/hacktoberfest-2023 ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/en/blog/2023/11/black-friday-2023 + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/en/blog/2023/11/hacktoberfest-2023-debriefing ${currentDate}T00:00:00+00:00 diff --git a/apps/api/src/middlewares/html-template.middleware.ts b/apps/api/src/middlewares/html-template.middleware.ts index 3d61ae940..a42eee9e1 100644 --- a/apps/api/src/middlewares/html-template.middleware.ts +++ b/apps/api/src/middlewares/html-template.middleware.ts @@ -76,6 +76,10 @@ const locales = { featureGraphicPath: 'assets/images/blog/hacktoberfest-2023.png', title: `Hacktoberfest 2023 - ${title}` }, + '/en/blog/2023/11/black-friday-2023': { + featureGraphicPath: 'assets/images/blog/black-friday-2023.png', + title: `Black Friday 2023 - ${title}` + }, '/en/blog/2023/11/hacktoberfest-2023-debriefing': { featureGraphicPath: 'assets/images/blog/hacktoberfest-2023.png', title: `Hacktoberfest 2023 Debriefing - ${title}` diff --git a/apps/client/src/app/pages/blog/2023/11/black-friday-2023/black-friday-2023-page.component.ts b/apps/client/src/app/pages/blog/2023/11/black-friday-2023/black-friday-2023-page.component.ts new file mode 100644 index 000000000..4c9cbaa85 --- /dev/null +++ b/apps/client/src/app/pages/blog/2023/11/black-friday-2023/black-friday-2023-page.component.ts @@ -0,0 +1,16 @@ +import { Component } from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; +import { RouterModule } from '@angular/router'; +import { GfPremiumIndicatorModule } from '@ghostfolio/ui/premium-indicator'; + +@Component({ + host: { class: 'page' }, + imports: [GfPremiumIndicatorModule, MatButtonModule, RouterModule], + selector: 'gf-black-friday-2023-page', + standalone: true, + templateUrl: './black-friday-2023-page.html' +}) +export class BlackFriday2023PageComponent { + public routerLinkFeatures = ['/' + $localize`features`]; + public routerLinkPricing = ['/' + $localize`pricing`]; +} diff --git a/apps/client/src/app/pages/blog/2023/11/black-friday-2023/black-friday-2023-page.html b/apps/client/src/app/pages/blog/2023/11/black-friday-2023/black-friday-2023-page.html new file mode 100644 index 000000000..31753cb52 --- /dev/null +++ b/apps/client/src/app/pages/blog/2023/11/black-friday-2023/black-friday-2023-page.html @@ -0,0 +1,152 @@ +

    +
    +
    +
    +
    +

    Black Friday 2023

    +
    2023-11-18
    + Black Friday 2023 Teaser +
    +
    +

    + Get 33% off on our + Ghostfolio Premium + + annual plan for ambitious investors who need the full picture of + their financial assets. +

    +
    +
    +

    + Ghostfolio + is a modern web application to manage your personal finance. The + software presents the current assets (stocks, ETFs, + cryptocurrencies, commodities etc.) in real time to make solid, + data-driven investment decisions. Check out the numerous + features to manage your + wealth. +

    +
    +
    +

    + Snap the limited Black Friday 2023 deal before it’s gone. For + detailed information on plans and pricing, please visit our + pricing page. +

    +

    + Get the Deal +

    +
    +
    +
      +
    • + 2023 +
    • +
    • + Black Friday +
    • +
    • + Cloud +
    • +
    • + Cryptocurrency +
    • +
    • + Deal +
    • +
    • + ETF +
    • +
    • + Finance +
    • +
    • + Fintech +
    • +
    • + Ghostfolio +
    • +
    • + Ghostfolio Premium +
    • +
    • + Hosting +
    • +
    • + Investment +
    • +
    • + Open Source +
    • +
    • + OSS +
    • +
    • + Personal Finance +
    • +
    • + Portfolio +
    • +
    • + Portfolio Tracker +
    • +
    • + Pricing +
    • +
    • + SaaS +
    • +
    • + Software +
    • +
    • + Stock +
    • +
    • + Subscription +
    • +
    • + Wealth +
    • +
    • + Wealth Management +
    • +
    • + Web3 +
    • +
    • + Web 3.0 +
    • +
    +
    + +
    +
    +
    +
    diff --git a/apps/client/src/app/pages/blog/blog-page-routing.module.ts b/apps/client/src/app/pages/blog/blog-page-routing.module.ts index 46b4b5fa2..9f725960d 100644 --- a/apps/client/src/app/pages/blog/blog-page-routing.module.ts +++ b/apps/client/src/app/pages/blog/blog-page-routing.module.ts @@ -172,6 +172,15 @@ const routes: Routes = [ './2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.component' ).then((c) => c.Hacktoberfest2023DebriefingPageComponent), title: 'Hacktoberfest 2023 Debriefing' + }, + { + canActivate: [AuthGuard], + path: '2023/11/black-friday-2023', + loadComponent: () => + import( + './2023/11/black-friday-2023/black-friday-2023-page.component' + ).then((c) => c.BlackFriday2023PageComponent), + title: 'Black Friday 2023' } ]; diff --git a/apps/client/src/app/pages/blog/blog-page.html b/apps/client/src/app/pages/blog/blog-page.html index e34bf9dd2..2bf207209 100644 --- a/apps/client/src/app/pages/blog/blog-page.html +++ b/apps/client/src/app/pages/blog/blog-page.html @@ -8,6 +8,34 @@ finance

    + + + + +
    diff --git a/apps/client/src/assets/images/blog/black-friday-2023.jpg b/apps/client/src/assets/images/blog/black-friday-2023.jpg new file mode 100644 index 0000000000000000000000000000000000000000..45fe741496f4de1d16c16fefa2a71e4ee8feeb0a GIT binary patch literal 192676 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%0DQP0Nnf-7b^gpxC`CpE%7mp#v? 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

    I*>zkpmW!T6BJmj8sqN# zbq9N_TjUlsh-^map~J<2qnu&-I8<>%ExdTwQ6AXKvHCFBCZFcSoxa4+;as&O1xuvF ziy^hChsShB`%@?bItydQ&9}g8CGeyI!Vw-AyC|BM(DA℞@{D-eOU~SU`QZ8HKXQ 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

    0Byl5VVr!A)%KE8Qz>GYrV^Tunb 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 literal 0 HcmV?d00001 From 232d30234c95c224b0703384853ec8ff72b4941c Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 18 Nov 2023 09:59:27 +0100 Subject: [PATCH 158/194] Update OSS Friends (#2663) --- apps/client/src/assets/oss-friends.json | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/apps/client/src/assets/oss-friends.json b/apps/client/src/assets/oss-friends.json index 43d8141ac..a95f8e709 100644 --- a/apps/client/src/assets/oss-friends.json +++ b/apps/client/src/assets/oss-friends.json @@ -1,5 +1,5 @@ { - "createdAt": "2023-10-21T00:00:00.000Z", + "createdAt": "2023-11-17T00:00:00.000Z", "data": [ { "name": "BoxyHQ", @@ -96,6 +96,11 @@ "description": "Makes frontend development cycle 10x faster with API Client, Mock Server, Intercept & Modify HTTP Requests and Session Replays.", "href": "https://requestly.io" }, + { + "name": "Revert", + "description": "The open-source unified API to build B2B integrations remarkably fast", + "href": "https://revert.dev" + }, { "name": "Rivet", "description": "Open-source solution to deploy, scale, and operate your multiplayer game.", @@ -136,6 +141,11 @@ "description": "Typebot gives you powerful blocks to create unique chat experiences. Embed them anywhere on your apps and start collecting results like magic.", "href": "https://typebot.io" }, + { + "name": "Unkey", + "description": "An API authentication and authorization platform for scaling user facing APIs. Create, verify, and manage low latency API keys in seconds.", + "href": "https://unkey.dev" + }, { "name": "Webiny", "description": "Open-source enterprise-grade serverless CMS. Own your data. Scale effortlessly. Customize everything.", From 8898d02442703dbe02fdb4f5d8d42d91e0f3e2c0 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 18 Nov 2023 11:05:05 +0100 Subject: [PATCH 159/194] Bugfix/fix cannot read properties of undefined reading items in get position (#2667) * Fix "Cannot read properties of undefined (reading 'items')" * Update changelog --- CHANGELOG.md | 4 ++++ apps/api/src/app/portfolio/portfolio.service.ts | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f5fae02f..2ca0f9fbd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Upgraded `http-status-codes` from version `2.2.0` to `2.3.0` +### Fixed + +- Handled reading items from missing transaction point while getting the position (`getPosition()`) in portfolio service + ## 2.24.0 - 2023-11-16 ### Changed diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index 525273253..2a701aab5 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -879,7 +879,7 @@ export class PortfolioService { let currentAveragePrice = 0; let currentQuantity = 0; - const currentSymbol = transactionPoints[j].items.find( + const currentSymbol = transactionPoints[j]?.items.find( ({ symbol }) => { return symbol === aSymbol; } From fb294fc6e2ee906288005943a6558e7f1e60a848 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 18 Nov 2023 11:15:03 +0100 Subject: [PATCH 160/194] Improve wording (#2668) --- .../black-friday-2022-page.html | 12 ++++--- .../black-friday-2023-page.html | 32 +++++++++++-------- 2 files changed, 26 insertions(+), 18 deletions(-) diff --git a/apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html b/apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html index 8da5f55b5..093d62f05 100644 --- a/apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html +++ b/apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html @@ -15,11 +15,13 @@

    Get 75% off on our - Ghostfolio Premium - + Ghostfolio Premium + annual plan for ambitious investors who need the full picture of their financial assets.

    diff --git a/apps/client/src/app/pages/blog/2023/11/black-friday-2023/black-friday-2023-page.html b/apps/client/src/app/pages/blog/2023/11/black-friday-2023/black-friday-2023-page.html index 31753cb52..f5b1f44b7 100644 --- a/apps/client/src/app/pages/blog/2023/11/black-friday-2023/black-friday-2023-page.html +++ b/apps/client/src/app/pages/blog/2023/11/black-friday-2023/black-friday-2023-page.html @@ -14,14 +14,18 @@

    + Ambitious investors on a life-changing mission, this is your chance! Get 33% off on our - Ghostfolio Premium - - annual plan for ambitious investors who need the full picture of - their financial assets. + Ghostfolio Premium + + annual plan with our exclusive Black Friday deal. Elevate your + financial strategy with the power of Ghostfolio designed to give you + the full picture of your assets.

    @@ -31,12 +35,14 @@ title="Open Source Wealth Management Software" >Ghostfolio - is a modern web application to manage your personal finance. The - software presents the current assets (stocks, ETFs, - cryptocurrencies, commodities etc.) in real time to make solid, - data-driven investment decisions. Check out the numerous - features to manage your - wealth. + is a modern web application to manage personal finances. This Open + Source Software (OSS) dynamically aggregates your diverse assets + including stocks, ETFs, cryptocurrencies, commodities, and more, + presenting a comprehensive overview of your portfolio in real-time. + Empower yourself to make informed, data-driven investment decisions + with the robust analytics at your fingertips. Explore the numerous + features to enhance your + wealth management experience.

    From 37183a07bd2a2b0cfd30b47d826e1fb324350af6 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 19 Nov 2023 16:28:30 +0100 Subject: [PATCH 161/194] Change black friday to black week (#2672) * Change black friday to black week * Change image --- apps/api/src/assets/sitemap.xml | 2 +- .../middlewares/html-template.middleware.ts | 6 ++--- .../black-week-2023-page.component.ts} | 6 ++--- .../black-week-2023-page.html} | 25 ++++++++++-------- .../pages/blog/blog-page-routing.module.ts | 10 +++---- apps/client/src/app/pages/blog/blog-page.html | 6 ++--- .../assets/images/blog/black-friday-2023.jpg | Bin 192676 -> 0 bytes .../assets/images/blog/black-week-2023.jpg | Bin 0 -> 191230 bytes 8 files changed, 29 insertions(+), 26 deletions(-) rename apps/client/src/app/pages/blog/2023/11/{black-friday-2023/black-friday-2023-page.component.ts => black-week-2023/black-week-2023-page.component.ts} (78%) rename apps/client/src/app/pages/blog/2023/11/{black-friday-2023/black-friday-2023-page.html => black-week-2023/black-week-2023-page.html} (88%) delete mode 100644 apps/client/src/assets/images/blog/black-friday-2023.jpg create mode 100644 apps/client/src/assets/images/blog/black-week-2023.jpg diff --git a/apps/api/src/assets/sitemap.xml b/apps/api/src/assets/sitemap.xml index af168fc58..7ea779053 100644 --- a/apps/api/src/assets/sitemap.xml +++ b/apps/api/src/assets/sitemap.xml @@ -327,7 +327,7 @@ ${currentDate}T00:00:00+00:00 - https://ghostfol.io/en/blog/2023/11/black-friday-2023 + https://ghostfol.io/en/blog/2023/11/black-week-2023 ${currentDate}T00:00:00+00:00 diff --git a/apps/api/src/middlewares/html-template.middleware.ts b/apps/api/src/middlewares/html-template.middleware.ts index a42eee9e1..b8d1964a1 100644 --- a/apps/api/src/middlewares/html-template.middleware.ts +++ b/apps/api/src/middlewares/html-template.middleware.ts @@ -76,9 +76,9 @@ const locales = { featureGraphicPath: 'assets/images/blog/hacktoberfest-2023.png', title: `Hacktoberfest 2023 - ${title}` }, - '/en/blog/2023/11/black-friday-2023': { - featureGraphicPath: 'assets/images/blog/black-friday-2023.png', - title: `Black Friday 2023 - ${title}` + '/en/blog/2023/11/black-week-2023': { + featureGraphicPath: 'assets/images/blog/black-week-2023.png', + title: `Black Week 2023 - ${title}` }, '/en/blog/2023/11/hacktoberfest-2023-debriefing': { featureGraphicPath: 'assets/images/blog/hacktoberfest-2023.png', diff --git a/apps/client/src/app/pages/blog/2023/11/black-friday-2023/black-friday-2023-page.component.ts b/apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts similarity index 78% rename from apps/client/src/app/pages/blog/2023/11/black-friday-2023/black-friday-2023-page.component.ts rename to apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts index 4c9cbaa85..be354c55a 100644 --- a/apps/client/src/app/pages/blog/2023/11/black-friday-2023/black-friday-2023-page.component.ts +++ b/apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.component.ts @@ -6,11 +6,11 @@ import { GfPremiumIndicatorModule } from '@ghostfolio/ui/premium-indicator'; @Component({ host: { class: 'page' }, imports: [GfPremiumIndicatorModule, MatButtonModule, RouterModule], - selector: 'gf-black-friday-2023-page', + selector: 'gf-black-week-2023-page', standalone: true, - templateUrl: './black-friday-2023-page.html' + templateUrl: './black-week-2023-page.html' }) -export class BlackFriday2023PageComponent { +export class BlackWeek2023PageComponent { public routerLinkFeatures = ['/' + $localize`features`]; public routerLinkPricing = ['/' + $localize`pricing`]; } diff --git a/apps/client/src/app/pages/blog/2023/11/black-friday-2023/black-friday-2023-page.html b/apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.html similarity index 88% rename from apps/client/src/app/pages/blog/2023/11/black-friday-2023/black-friday-2023-page.html rename to apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.html index f5b1f44b7..352e0b5ce 100644 --- a/apps/client/src/app/pages/blog/2023/11/black-friday-2023/black-friday-2023-page.html +++ b/apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.html @@ -3,13 +3,13 @@
    -

    Black Friday 2023

    -
    2023-11-18
    +

    Black Week 2023

    +
    2023-11-19
    Black Friday 2023 Teaser
    @@ -23,7 +23,7 @@ [enableLink]="false" > - annual plan with our exclusive Black Friday deal. Elevate your + annual plan with our exclusive Black Week deal. Elevate your financial strategy with the power of Ghostfolio designed to give you the full picture of your assets.

    @@ -37,8 +37,8 @@ > is a modern web application to manage personal finances. This Open Source Software (OSS) dynamically aggregates your diverse assets - including stocks, ETFs, cryptocurrencies, commodities, and more, - presenting a comprehensive overview of your portfolio in real-time. + including stocks, ETFs, cryptocurrencies, commodities, etc. and + presents a comprehensive overview of your portfolio in real-time. Empower yourself to make informed, data-driven investment decisions with the robust analytics at your fingertips. Explore the numerous features to enhance your @@ -47,8 +47,8 @@

    - Snap the limited Black Friday 2023 deal before it’s gone. For - detailed information on plans and pricing, please visit our + Snap the limited Black Week 2023 deal before it’s gone. For detailed + information on plans and pricing, please visit our pricing page.

    @@ -65,6 +65,9 @@

  • Black Friday
  • +
  • + Black Week +
  • Cloud
  • @@ -148,7 +151,7 @@ aria-current="page" class="active breadcrumb-item text-truncate" > - Black Friday 2023 + Black Week 2023 diff --git a/apps/client/src/app/pages/blog/blog-page-routing.module.ts b/apps/client/src/app/pages/blog/blog-page-routing.module.ts index 9f725960d..487f53f02 100644 --- a/apps/client/src/app/pages/blog/blog-page-routing.module.ts +++ b/apps/client/src/app/pages/blog/blog-page-routing.module.ts @@ -175,12 +175,12 @@ const routes: Routes = [ }, { canActivate: [AuthGuard], - path: '2023/11/black-friday-2023', + path: '2023/11/black-week-2023', loadComponent: () => - import( - './2023/11/black-friday-2023/black-friday-2023-page.component' - ).then((c) => c.BlackFriday2023PageComponent), - title: 'Black Friday 2023' + import('./2023/11/black-week-2023/black-week-2023-page.component').then( + (c) => c.BlackWeek2023PageComponent + ), + title: 'Black Week 2023' } ]; diff --git a/apps/client/src/app/pages/blog/blog-page.html b/apps/client/src/app/pages/blog/blog-page.html index 2bf207209..70bf771e3 100644 --- a/apps/client/src/app/pages/blog/blog-page.html +++ b/apps/client/src/app/pages/blog/blog-page.html @@ -18,11 +18,11 @@
    -
    Black Friday 2023
    -
    2023-11-17
    +
    Black Week 2023
    +
    2023-11-19
    AfSN_ui}Y5>V+PAgC0n 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%0DQP0Nnf-7b^gpxC`CpE%7mp#v? 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

    I*>zkpmW!T6BJmj8sqN# zbq9N_TjUlsh-^map~J<2qnu&-I8<>%ExdTwQ6AXKvHCFBCZFcSoxa4+;as&O1xuvF ziy^hChsShB`%@?bItydQ&9}g8CGeyI!Vw-AyC|BM(DA℞@{D-eOU~SU`QZ8HKXQ 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

    0Byl5VVr!A)%KE8Qz>GYrV^Tunb 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 diff --git a/apps/client/src/assets/images/blog/black-week-2023.jpg b/apps/client/src/assets/images/blog/black-week-2023.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5e9a7743844f00bc9534a08e33e533f714a4dcb7 GIT binary patch literal 191230 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≶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

    2n#>fJ;M^*UdH^rnQ_drz(nsPRu; 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�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

    xpG_vBQ4~nhOvEZii)D#E+4NWJ@92#`(OwcC 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

    - diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products.ts index 93b945d27..5d808ab60 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products.ts @@ -67,7 +67,6 @@ export const products: Product[] = [ ], name: 'Ghostfolio', origin: $localize`Switzerland`, - pricingPerYear: '$24', region: $localize`Global`, slogan: 'Open Source Wealth Management', useAnonymously: true diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts index a8acb3742..399abe975 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class AllvueSystemsPageComponent { +export class AllvueSystemsPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts index a74659ed0..1d1164e79 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class AltooPageComponent { +export class AltooPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/base-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/base-page.component.ts new file mode 100644 index 000000000..23a5835b7 --- /dev/null +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/base-page.component.ts @@ -0,0 +1,18 @@ +import { Component, OnInit } from '@angular/core'; +import { DataService } from '@ghostfolio/client/services/data.service'; + +@Component({ + selector: 'gf-base-product-page', + template: '' +}) +export class BaseProductPageComponent implements OnInit { + public price: number; + + public constructor(private dataService: DataService) {} + + public ngOnInit() { + const { subscriptions } = this.dataService.fetchInfo(); + + this.price = subscriptions?.default?.price; + } +} diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts index c6ec41c55..1712f0013 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class BasilFinancePageComponent { +export class BasilFinancePageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts index 83c4e374e..26b3b7fa3 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class BeanvestPageComponent { +export class BeanvestPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts index b4356bc2d..37501d4f0 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class CapitallyPageComponent { +export class CapitallyPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts index 7df8872a3..d021e2078 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class CapMonPageComponent { +export class CapMonPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts index 03a7317c4..0d455e127 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class CompoundPlanningPageComponent { +export class CompoundPlanningPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts index 7bab02522..f1c05855f 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class CopilotMoneyPageComponent { +export class CopilotMoneyPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts index 7ece232d1..b2a0d62ec 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class DeFiPageComponent { +export class DeFiPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts index df540e0ac..fe11152d3 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class DeltaPageComponent { +export class DeltaPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts index aad566c93..e128650de 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class DivvyDiaryPageComponent { +export class DivvyDiaryPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts index 3867beaf2..933e1ac4b 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class EightFiguresPageComponent { +export class EightFiguresPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts index 0abdc5fbf..ea02c8b17 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class EmpowerPageComponent { +export class EmpowerPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts index 79a4cba9b..7844350df 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class ExirioPageComponent { +export class ExirioPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts index 6b2d25827..4e64d8c8f 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class FinaryPageComponent { +export class FinaryPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts index f897b80de..70f46d132 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class FinWisePageComponent { +export class FinWisePageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts index 2f4d4da47..dfddfc2a0 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class FolisharePageComponent { +export class FolisharePageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts index a093950f4..86ae168b6 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class GetquinPageComponent { +export class GetquinPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts index fc859aa4d..8bb604b11 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class GoSpatzPageComponent { +export class GoSpatzPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts index f2b594ab9..a142bec5c 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class IntuitMintPageComponent { +export class IntuitMintPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts index c67633da4..f87ec5f43 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class JustEtfPageComponent { +export class JustEtfPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts index 59e399881..cb0511d4f 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class KuberaPageComponent { +export class KuberaPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts index 63cde2c14..4e688c11e 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class MagnifiPageComponent { +export class MagnifiPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts index ca9c9bc5f..94bc581e4 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class MarketsShPageComponent { +export class MarketsShPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts index 8c101d0fc..86738e136 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class MaybeFinancePageComponent { +export class MaybeFinancePageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts index 4b21de801..095584fbe 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class MonarchMoneyPageComponent { +export class MonarchMoneyPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts index a5f219c50..588854e3d 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class MonsePageComponent { +export class MonsePageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts index 658078bae..f6e956023 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class ParqetPageComponent { +export class ParqetPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts index a2e8ea377..106818ea0 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class PlannixPageComponent { +export class PlannixPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts index 23c894646..da41c1604 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class PortfolioDividendTrackerPageComponent { +export class PortfolioDividendTrackerPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts index ce53572f4..7fb7703b2 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class PortseidoPageComponent { +export class PortseidoPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts index aacb46269..6cd22b8f4 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class ProjectionLabPageComponent { +export class ProjectionLabPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts index cbf2599e8..7dc279444 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class RocketMoneyPageComponent { +export class RocketMoneyPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts index d8783ecd5..825eacb34 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class SeekingAlphaPageComponent { +export class SeekingAlphaPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts index 94937c803..5b0554179 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class SharesightPageComponent { +export class SharesightPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts index d2ddc25b2..8a1ae2790 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class SimplePortfolioPageComponent { +export class SimplePortfolioPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts index a002d1d99..9892af41d 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class SnowballAnalyticsPageComponent { +export class SnowballAnalyticsPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts index eb1b41a9c..e06ec527b 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class StocklePageComponent { +export class StocklePageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts index 8fda86382..1c70efc04 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class StockMarketEyePageComponent { +export class StockMarketEyePageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts index 26f9d23fb..acf23f772 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class SumioPageComponent { +export class SumioPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts index 8f2218434..69ba2759b 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class TillerPageComponent { +export class TillerPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts index 0557cd475..8ce62c741 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class UtlunaPageComponent { +export class UtlunaPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts index a8d0f7c74..37b8c4a72 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class VyzerPageComponent { +export class VyzerPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts index 91e576692..cea5ddf7a 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class WealthicaPageComponent { +export class WealthicaPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts index c1a2ddc98..b336c07a0 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class WhalPageComponent { +export class WhalPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts index f5f61886d..bd95a70f9 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class YeekateePageComponent { +export class YeekateePageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts index d63f70e25..0c343b4e6 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts +++ b/apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts @@ -4,6 +4,7 @@ import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { products } from '../products'; +import { BaseProductPageComponent } from './base-page.component'; @Component({ host: { class: 'page' }, @@ -13,7 +14,7 @@ import { products } from '../products'; styleUrls: ['../product-page-template.scss'], templateUrl: '../product-page-template.html' }) -export class YnabPageComponent { +export class YnabPageComponent extends BaseProductPageComponent { public product1 = products.find(({ key }) => { return key === 'ghostfolio'; }); From 52540d460b52cdfd61a43d2174f2652085813f15 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 25 Nov 2023 18:48:54 +0100 Subject: [PATCH 175/194] Fix alignment (#2689) --- .../show-access-token-dialog/show-access-token-dialog.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html b/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html index 436977f7d..f4ba55405 100644 --- a/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html +++ b/apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html @@ -33,7 +33,7 @@ place. If I lose it, I cannot get my account back.

    -
    +
    -
    +
    -
    -
    -
    Activities
    + + + Activities -
    -
    + + + Cash Balances + + +
    diff --git a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.module.ts b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.module.ts index c3d45b6ce..83ac5b6ea 100644 --- a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.module.ts +++ b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.module.ts @@ -2,9 +2,11 @@ import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatDialogModule } from '@angular/material/dialog'; +import { MatTabsModule } from '@angular/material/tabs'; import { GfDialogFooterModule } from '@ghostfolio/client/components/dialog-footer/dialog-footer.module'; import { GfDialogHeaderModule } from '@ghostfolio/client/components/dialog-header/dialog-header.module'; import { GfInvestmentChartModule } from '@ghostfolio/client/components/investment-chart/investment-chart.module'; +import { GfAccountBalancesModule } from '@ghostfolio/ui/account-balances/account-balances.module'; import { GfActivitiesTableModule } from '@ghostfolio/ui/activities-table/activities-table.module'; import { GfValueModule } from '@ghostfolio/ui/value'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; @@ -15,6 +17,7 @@ import { AccountDetailDialog } from './account-detail-dialog.component'; declarations: [AccountDetailDialog], imports: [ CommonModule, + GfAccountBalancesModule, GfActivitiesTableModule, GfDialogFooterModule, GfDialogHeaderModule, @@ -22,6 +25,7 @@ import { AccountDetailDialog } from './account-detail-dialog.component'; GfValueModule, MatButtonModule, MatDialogModule, + MatTabsModule, NgxSkeletonLoaderModule ], schemas: [CUSTOM_ELEMENTS_SCHEMA] diff --git a/apps/client/src/app/pages/portfolio/activities/activities-page.html b/apps/client/src/app/pages/portfolio/activities/activities-page.html index a5c9201a0..8c2cf9bd5 100644 --- a/apps/client/src/app/pages/portfolio/activities/activities-page.html +++ b/apps/client/src/app/pages/portfolio/activities/activities-page.html @@ -1,5 +1,5 @@
    -
    +

    Activities

    (`/api/v1/account/${aAccountId}`); } + public fetchAccountBalances(aAccountId: string) { + return this.http.get( + `/api/v1/account/${aAccountId}/balances` + ); + } + public fetchAccounts() { return this.http.get('/api/v1/account'); } diff --git a/libs/ui/src/lib/account-balances/account-balances.component.html b/libs/ui/src/lib/account-balances/account-balances.component.html new file mode 100644 index 000000000..81f8a8192 --- /dev/null +++ b/libs/ui/src/lib/account-balances/account-balances.component.html @@ -0,0 +1,36 @@ +
    + Ghostfolio vs {{ product2.name }} comparison table +
    {{ exchangeRate.label2 }} + + + + Name + +
    {{ element.name }}
    +
    + {{ element.symbol | gfSymbol }} +
    +
    Data Source diff --git a/apps/client/src/app/components/admin-market-data/admin-market-data.module.ts b/apps/client/src/app/components/admin-market-data/admin-market-data.module.ts index 060e8a6b0..bcac613a6 100644 --- a/apps/client/src/app/components/admin-market-data/admin-market-data.module.ts +++ b/apps/client/src/app/components/admin-market-data/admin-market-data.module.ts @@ -6,6 +6,7 @@ import { MatPaginatorModule } from '@angular/material/paginator'; import { MatSortModule } from '@angular/material/sort'; import { MatTableModule } from '@angular/material/table'; import { RouterModule } from '@angular/router'; +import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module'; import { GfActivitiesFilterModule } from '@ghostfolio/ui/activities-filter/activities-filter.module'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; @@ -20,6 +21,7 @@ import { GfCreateAssetProfileDialogModule } from './create-asset-profile-dialog/ GfActivitiesFilterModule, GfAssetProfileDialogModule, GfCreateAssetProfileDialogModule, + GfSymbolModule, MatButtonModule, MatMenuModule, MatPaginatorModule, From b4de06fcf0780a24e3e51655642f917538aa2e94 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 11 Nov 2023 17:27:29 +0100 Subject: [PATCH 135/194] Feature/add platform icons to account selectors (#2633) * Add platform icons to account selectors * Update changelog --- CHANGELOG.md | 5 ++++ apps/api/src/app/user/user.service.ts | 8 ++++-- .../symbol-icon/symbol-icon.component.scss | 3 +- .../transfer-balance-dialog.html | 28 +++++++++++++++---- .../transfer-balance-dialog.module.ts | 2 ++ .../create-or-update-activity-dialog.html | 15 ++++++++-- ...create-or-update-activity-dialog.module.ts | 2 ++ 7 files changed, 51 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8cbe1d4b3..2ac4272fa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Added + +- Added the platform icon to the account selectors in the cash balance transfer from one to another account +- Added the platform icon to the account selector of the create or edit activity dialog + ### Changed - Harmonized the name column in the historical market data table of the admin control panel diff --git a/apps/api/src/app/user/user.service.ts b/apps/api/src/app/user/user.service.ts index f9f39b185..093587996 100644 --- a/apps/api/src/app/user/user.service.ts +++ b/apps/api/src/app/user/user.service.ts @@ -127,7 +127,9 @@ export class UserService { updatedAt } = await this.prismaService.user.findUnique({ include: { - Account: true, + Account: { + include: { Platform: true } + }, Analytics: true, Settings: true, Subscription: true @@ -250,8 +252,8 @@ export class UserService { currentPermissions.push(permissions.impersonateAllUsers); } - user.Account = sortBy(user.Account, (account) => { - return account.name; + user.Account = sortBy(user.Account, ({ name }) => { + return name.toLowerCase(); }); user.permissions = currentPermissions.sort(); diff --git a/apps/client/src/app/components/symbol-icon/symbol-icon.component.scss b/apps/client/src/app/components/symbol-icon/symbol-icon.component.scss index 3f3067d74..23bc7a487 100644 --- a/apps/client/src/app/components/symbol-icon/symbol-icon.component.scss +++ b/apps/client/src/app/components/symbol-icon/symbol-icon.component.scss @@ -1,5 +1,6 @@ :host { - display: block; + align-items: center; + display: flex; img { border-radius: 0.2rem; diff --git a/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html b/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html index 9cce7b87a..b18ba9984 100644 --- a/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html +++ b/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html @@ -10,9 +10,17 @@ From - {{ account.name }} + +
    + {{ account.name }} +
    +
    @@ -20,9 +28,17 @@ To - {{ account.name }} + +
    + {{ account.name }} +
    +
    diff --git a/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.module.ts b/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.module.ts index 5a56b5810..ad559e28c 100644 --- a/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.module.ts +++ b/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.module.ts @@ -6,6 +6,7 @@ import { MatDialogModule } from '@angular/material/dialog'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatInputModule } from '@angular/material/input'; import { MatSelectModule } from '@angular/material/select'; +import { GfSymbolIconModule } from '@ghostfolio/client/components/symbol-icon/symbol-icon.module'; import { TransferBalanceDialog } from './transfer-balance-dialog.component'; @@ -13,6 +14,7 @@ import { TransferBalanceDialog } from './transfer-balance-dialog.component'; declarations: [TransferBalanceDialog], imports: [ CommonModule, + GfSymbolIconModule, MatButtonModule, MatDialogModule, MatFormFieldModule, diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html index c28f87d93..5d5133881 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -72,9 +72,20 @@ *ngIf="!activityForm.controls['accountId'].hasValidator(Validators.required)" [value]="null" > - {{ account.name }} +
    + {{ account.name }} +
    + diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.module.ts b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.module.ts index 6ab603504..316011d42 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.module.ts +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.module.ts @@ -10,6 +10,7 @@ import { MatDialogModule } from '@angular/material/dialog'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatInputModule } from '@angular/material/input'; import { MatSelectModule } from '@angular/material/select'; +import { GfSymbolIconModule } from '@ghostfolio/client/components/symbol-icon/symbol-icon.module'; import { GfSymbolAutocompleteModule } from '@ghostfolio/ui/symbol-autocomplete/symbol-autocomplete.module'; import { GfValueModule } from '@ghostfolio/ui/value'; @@ -21,6 +22,7 @@ import { CreateOrUpdateActivityDialog } from './create-or-update-activity-dialog CommonModule, FormsModule, GfSymbolAutocompleteModule, + GfSymbolIconModule, GfValueModule, MatAutocompleteModule, MatButtonModule, From 5dc538bafbc331b35c4ae6f122b0a7c796230563 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 11 Nov 2023 17:29:59 +0100 Subject: [PATCH 136/194] Feature/optimize testimonial carousel style on mobile (#2634) * Optimize style on mobile * Update changelog --- CHANGELOG.md | 1 + apps/client/src/app/pages/landing/landing-page.html | 2 +- libs/ui/src/lib/carousel/carousel.component.html | 8 ++++---- libs/ui/src/lib/carousel/carousel.component.scss | 5 +++-- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2ac4272fa..49825ad3c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Optimized the style of the carousel component on mobile for the testimonial section on the landing page - Harmonized the name column in the historical market data table of the admin control panel ## 2.21.0 - 2023-11-09 diff --git a/apps/client/src/app/pages/landing/landing-page.html b/apps/client/src/app/pages/landing/landing-page.html index 96d5c4f7a..d3ec85f5f 100644 --- a/apps/client/src/app/pages/landing/landing-page.html +++ b/apps/client/src/app/pages/landing/landing-page.html @@ -327,7 +327,7 @@
    -
    +
    + 50-Day Trend + +
    + +
    +
    + 200-Day Trend + +
    + +
    +
    + /> @@ -35,7 +83,6 @@ + /> }CK#@$neg6RS<2zY?fbktVsT!>)cOi=T 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 D_#vi2 literal 0 HcmV?d00001 From c758ca4bfa712fe7f5d59958b745b55b9a599f76 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 19 Nov 2023 16:30:36 +0100 Subject: [PATCH 162/194] Release 2.25.0 (#2673) --- CHANGELOG.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2ca0f9fbd..d1fe013dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ 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.25.0 - 2023-11-19 ### Added diff --git a/package.json b/package.json index 46e0357fa..b49bfe227 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.24.0", + "version": "2.25.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From d827858d0bfc268e4f59405dbb559c9c9903515e Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 19 Nov 2023 16:46:32 +0100 Subject: [PATCH 163/194] Release 2.25.1 (#2674) --- CHANGELOG.md | 2 +- apps/api/src/middlewares/html-template.middleware.ts | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d1fe013dc..e1984a5eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ 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). -## 2.25.0 - 2023-11-19 +## 2.25.1 - 2023-11-19 ### Added diff --git a/apps/api/src/middlewares/html-template.middleware.ts b/apps/api/src/middlewares/html-template.middleware.ts index b8d1964a1..e691bc89d 100644 --- a/apps/api/src/middlewares/html-template.middleware.ts +++ b/apps/api/src/middlewares/html-template.middleware.ts @@ -77,7 +77,7 @@ const locales = { title: `Hacktoberfest 2023 - ${title}` }, '/en/blog/2023/11/black-week-2023': { - featureGraphicPath: 'assets/images/blog/black-week-2023.png', + featureGraphicPath: 'assets/images/blog/black-week-2023.jpg', title: `Black Week 2023 - ${title}` }, '/en/blog/2023/11/hacktoberfest-2023-debriefing': { diff --git a/package.json b/package.json index b49bfe227..90188e4c9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.25.0", + "version": "2.25.1", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From f28b13604a63ef195cf8d1153e1f3c93624afb23 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 21 Nov 2023 20:12:59 +0100 Subject: [PATCH 164/194] Add as const (#2677) --- libs/common/src/lib/permissions.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/common/src/lib/permissions.ts b/libs/common/src/lib/permissions.ts index a5500bee6..362d15b9c 100644 --- a/libs/common/src/lib/permissions.ts +++ b/libs/common/src/lib/permissions.ts @@ -35,7 +35,7 @@ export const permissions = { updateTag: 'updateTag', updateUserSettings: 'updateUserSettings', updateViewMode: 'updateViewMode' -}; +} as const; export function getPermissions(aRole: Role): string[] { switch (aRole) { From 386dd565908878704acefd16d97cba236fb625b5 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Wed, 22 Nov 2023 08:10:42 +0100 Subject: [PATCH 165/194] Feature/extend personal finance tools pages 20231120 (#2678) * Improve tags * Add Compound Planning * Add Whal * Add De.Fi * Add Tiller * Add Empower --- apps/api/src/assets/sitemap.xml | 80 +++++++++++++++++++ .../middlewares/html-template.middleware.ts | 3 + .../product-page-template.html | 19 +++-- .../personal-finance-tools/products.ts | 49 ++++++++++++ .../compound-planning-page.component.ts | 31 +++++++ .../products/de.fi-page.component.ts | 31 +++++++ .../products/empower-page.component.ts | 31 +++++++ .../products/tiller-page.component.ts | 31 +++++++ .../products/whal-page.component.ts | 31 +++++++ 9 files changed, 301 insertions(+), 5 deletions(-) create mode 100644 apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts create mode 100644 apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts create mode 100644 apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts create mode 100644 apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts create mode 100644 apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts diff --git a/apps/api/src/assets/sitemap.xml b/apps/api/src/assets/sitemap.xml index 7ea779053..7e2b64cfc 100644 --- a/apps/api/src/assets/sitemap.xml +++ b/apps/api/src/assets/sitemap.xml @@ -82,10 +82,18 @@ https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-capmon ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-compound-planning + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-copilot-money ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-de.fi + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-delta ${currentDate}T00:00:00+00:00 @@ -94,6 +102,10 @@ https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-divvydiary ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-empower + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-exirio ${currentDate}T00:00:00+00:00 @@ -202,6 +214,10 @@ https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-sumio ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-tiller + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-utluna ${currentDate}T00:00:00+00:00 @@ -214,6 +230,10 @@ https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-wealthica ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-whal + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/de/ressourcen/personal-finance-tools/open-source-alternative-zu-yeekatee ${currentDate}T00:00:00+00:00 @@ -396,10 +416,18 @@ https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-capmon ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-compound-planning + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-copilot-money ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-de.fi + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-delta ${currentDate}T00:00:00+00:00 @@ -408,6 +436,10 @@ https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-divvydiary ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-empower + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-exirio ${currentDate}T00:00:00+00:00 @@ -516,6 +548,10 @@ https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-sumio ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-tiller + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-utluna ${currentDate}T00:00:00+00:00 @@ -528,6 +564,10 @@ https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-wealthica ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-whal + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/en/resources/personal-finance-tools/open-source-alternative-to-yeekatee ${currentDate}T00:00:00+00:00 @@ -730,10 +770,18 @@ https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-capmon ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-compound-planning + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-copilot-money ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-de.fi + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-delta ${currentDate}T00:00:00+00:00 @@ -742,6 +790,10 @@ https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-divvydiary ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-empower + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-exirio ${currentDate}T00:00:00+00:00 @@ -850,6 +902,10 @@ https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-sumio ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-tiller + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-utluna ${currentDate}T00:00:00+00:00 @@ -862,6 +918,10 @@ https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-wealthica ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-whal + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/it/risorse/personal-finance-tools/alternativa-open-source-a-yeekatee ${currentDate}T00:00:00+00:00 @@ -910,10 +970,18 @@ https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-capmon ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-compound-planning + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-copilot-money ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-de.fi + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-delta ${currentDate}T00:00:00+00:00 @@ -922,6 +990,10 @@ https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-divvydiary ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-empower + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-exirio ${currentDate}T00:00:00+00:00 @@ -1030,6 +1102,10 @@ https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-sumio ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-tiller + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-utluna ${currentDate}T00:00:00+00:00 @@ -1042,6 +1118,10 @@ https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-wealthica ${currentDate}T00:00:00+00:00 + + https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-whal + ${currentDate}T00:00:00+00:00 + https://ghostfol.io/nl/bronnen/personal-finance-tools/open-source-alternatief-voor-yeekatee ${currentDate}T00:00:00+00:00 diff --git a/apps/api/src/middlewares/html-template.middleware.ts b/apps/api/src/middlewares/html-template.middleware.ts index e691bc89d..ac2551a51 100644 --- a/apps/api/src/middlewares/html-template.middleware.ts +++ b/apps/api/src/middlewares/html-template.middleware.ts @@ -91,6 +91,9 @@ const isFileRequest = (filename: string) => { return true; } else if ( filename.includes('auth/ey') || + filename.includes( + 'personal-finance-tools/open-source-alternative-to-de.fi' + ) || filename.includes( 'personal-finance-tools/open-source-alternative-to-markets.sh' ) diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html b/apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html index 0522915f5..a2daeaf24 100644 --- a/apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html +++ b/apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html @@ -230,23 +230,26 @@

    • - {{ product1.name }} + Alternative
    • - {{ product2.name }} + App
    • - Alternative + Budgeting
    • - App + Community
    • - Community + Family Office
    • Fintech
    • +
    • + {{ product1.name }} +
    • Investment
    • @@ -280,9 +283,15 @@
    • Wealth
    • +
    • + WealthTech +
    • Wealth Management
    • +
    • + {{ product2.name }} +
    Pricing - Starting from {{ product1.pricingPerYear }} / year + + Starting from ${{ price }} / + year - Starting from {{ product2.pricingPerYear }} / - yearStarting from {{ product2.pricingPerYear + }} / year
    + + + + + + + + + + + + +
    + Date + + + + Value + +
    + +
    +
    diff --git a/libs/ui/src/lib/account-balances/account-balances.component.scss b/libs/ui/src/lib/account-balances/account-balances.component.scss new file mode 100644 index 000000000..b5b58f67e --- /dev/null +++ b/libs/ui/src/lib/account-balances/account-balances.component.scss @@ -0,0 +1,5 @@ +@import 'apps/client/src/styles/ghostfolio-style'; + +:host { + display: block; +} diff --git a/libs/ui/src/lib/account-balances/account-balances.component.ts b/libs/ui/src/lib/account-balances/account-balances.component.ts new file mode 100644 index 000000000..c552519d6 --- /dev/null +++ b/libs/ui/src/lib/account-balances/account-balances.component.ts @@ -0,0 +1,63 @@ +import { + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + Input, + OnDestroy, + OnInit, + ViewChild +} from '@angular/core'; +import { MatSort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { DataService } from '@ghostfolio/client/services/data.service'; +import { AccountBalancesResponse } from '@ghostfolio/common/interfaces'; +import { get } from 'lodash'; +import { Subject, takeUntil } from 'rxjs'; + +@Component({ + changeDetection: ChangeDetectionStrategy.OnPush, + selector: 'gf-account-balances', + styleUrls: ['./account-balances.component.scss'], + templateUrl: './account-balances.component.html' +}) +export class AccountBalancesComponent implements OnDestroy, OnInit { + @Input() accountId: string; + @Input() locale: string; + + @ViewChild(MatSort) sort: MatSort; + + public dataSource: MatTableDataSource< + AccountBalancesResponse['balances'][0] + > = new MatTableDataSource(); + public displayedColumns: string[] = ['date', 'value']; + + private unsubscribeSubject = new Subject(); + + public constructor( + private changeDetectorRef: ChangeDetectorRef, + private dataService: DataService + ) {} + + public ngOnInit() { + this.fetchBalances(); + } + + public ngOnDestroy() { + this.unsubscribeSubject.next(); + this.unsubscribeSubject.complete(); + } + + private fetchBalances() { + this.dataService + .fetchAccountBalances(this.accountId) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(({ balances }) => { + this.dataSource = new MatTableDataSource(balances); + + this.dataSource.sort = this.sort; + this.dataSource.sortingDataAccessor = get; + + this.changeDetectorRef.markForCheck(); + }); + } +} diff --git a/libs/ui/src/lib/account-balances/account-balances.module.ts b/libs/ui/src/lib/account-balances/account-balances.module.ts new file mode 100644 index 000000000..cc8fb9677 --- /dev/null +++ b/libs/ui/src/lib/account-balances/account-balances.module.ts @@ -0,0 +1,15 @@ +import { CommonModule } from '@angular/common'; +import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; +import { MatSortModule } from '@angular/material/sort'; +import { MatTableModule } from '@angular/material/table'; +import { GfValueModule } from '@ghostfolio/ui/value'; + +import { AccountBalancesComponent } from './account-balances.component'; + +@NgModule({ + declarations: [AccountBalancesComponent], + exports: [AccountBalancesComponent], + imports: [CommonModule, GfValueModule, MatSortModule, MatTableModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA] +}) +export class GfAccountBalancesModule {} From 4eedf64a3cbc28530a637ae5c2bbcc07b3a74c4c Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 2 Dec 2023 10:00:00 +0100 Subject: [PATCH 186/194] Update OSS Friends (#2701) --- apps/client/src/assets/oss-friends.json | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/apps/client/src/assets/oss-friends.json b/apps/client/src/assets/oss-friends.json index a95f8e709..d22f4c030 100644 --- a/apps/client/src/assets/oss-friends.json +++ b/apps/client/src/assets/oss-friends.json @@ -1,5 +1,5 @@ { - "createdAt": "2023-11-17T00:00:00.000Z", + "createdAt": "2023-11-30T00:00:00.000Z", "data": [ { "name": "BoxyHQ", @@ -16,6 +16,11 @@ "description": "Centralize community, product, and customer data to understand which companies are engaging with your open source project.", "href": "https://www.crowd.dev" }, + { + "name": "DevHunt", + "description": "Find the best Dev Tools upvoted by the community every week.", + "href": "https://devhunt.org" + }, { "name": "Documenso", "description": "The Open-Source DocuSign Alternative. We aim to earn your trust by enabling you to self-host the platform and examine its inner workings.", @@ -59,7 +64,7 @@ { "name": "Hook0", "description": "Open-Source Webhooks-as-a-service (WaaS) that makes it easy for developers to send webhooks.", - "href": "https://www.hook0.com/" + "href": "https://www.hook0.com" }, { "name": "HTMX", @@ -89,7 +94,7 @@ { "name": "Papermark", "description": "Open-Source Docsend Alternative to securely share documents with real-time analytics.", - "href": "https://www.papermark.io/" + "href": "https://www.papermark.io" }, { "name": "Requestly", @@ -109,7 +114,7 @@ { "name": "Shelf.nu", "description": "Open Source Asset and Equipment tracking software that lets you create QR asset labels, manage and overview your assets across locations.", - "href": "https://www.shelf.nu/" + "href": "https://www.shelf.nu" }, { "name": "Sniffnet", From 1d796a959738f6f3f61fce2253855b40be500ceb Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 2 Dec 2023 10:20:05 +0100 Subject: [PATCH 187/194] Bugfix/change intraday data gathering to operate synchronously (#2705) * Change intraday data gathering to operate synchronously * Update changelog --- CHANGELOG.md | 4 ++++ apps/api/src/services/data-provider/data-provider.service.ts | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2aa09c05a..a865536aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Respected the `withExcludedAccounts` flag in the account balance time series +### Fixed + +- Changed the mechanism of the `INTRADAY` data gathering to operate synchronously avoiding database deadlocks + ## 2.27.1 - 2023-11-28 ### Changed diff --git a/apps/api/src/services/data-provider/data-provider.service.ts b/apps/api/src/services/data-provider/data-provider.service.ts index ef5143475..cd5874ca7 100644 --- a/apps/api/src/services/data-provider/data-provider.service.ts +++ b/apps/api/src/services/data-provider/data-provider.service.ts @@ -346,7 +346,7 @@ export class DataProviderService { ); try { - this.marketDataService.updateMany({ + await this.marketDataService.updateMany({ data: Object.keys(response) .filter((symbol) => { return ( From 813e73a0a3902a29a3ade79ed05e3ec91bbae556 Mon Sep 17 00:00:00 2001 From: underwater Date: Sat, 2 Dec 2023 10:21:19 +0100 Subject: [PATCH 188/194] Introduce HasPermission annotation (#2693) * Introduce HasPermission annotation * Update changelog --- CHANGELOG.md | 1 + .../decorators/has-permission.decorator.ts | 6 ++ .../src/guards/has-permission.guard.spec.ts | 55 +++++++++++++++++++ apps/api/src/guards/has-permission.guard.ts | 37 +++++++++++++ 4 files changed, 99 insertions(+) create mode 100644 apps/api/src/decorators/has-permission.decorator.ts create mode 100644 apps/api/src/guards/has-permission.guard.spec.ts create mode 100644 apps/api/src/guards/has-permission.guard.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index a865536aa..2a5a5dc5b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - Added a historical cash balances table to the account detail dialog +- Introduced a `HasPermission` annotation for endpoints ### Changed diff --git a/apps/api/src/decorators/has-permission.decorator.ts b/apps/api/src/decorators/has-permission.decorator.ts new file mode 100644 index 000000000..dc65cf82e --- /dev/null +++ b/apps/api/src/decorators/has-permission.decorator.ts @@ -0,0 +1,6 @@ +import { SetMetadata } from '@nestjs/common'; +export const HAS_PERMISSION_KEY = 'has_permission'; + +export function HasPermission(permission: string) { + return SetMetadata(HAS_PERMISSION_KEY, permission); +} diff --git a/apps/api/src/guards/has-permission.guard.spec.ts b/apps/api/src/guards/has-permission.guard.spec.ts new file mode 100644 index 000000000..7f5f90de9 --- /dev/null +++ b/apps/api/src/guards/has-permission.guard.spec.ts @@ -0,0 +1,55 @@ +import { HttpException } from '@nestjs/common'; +import { Reflector } from '@nestjs/core'; +import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host'; +import { Test, TestingModule } from '@nestjs/testing'; + +import { HasPermissionGuard } from './has-permission.guard'; + +describe('HasPermissionGuard', () => { + let guard: HasPermissionGuard; + let reflector: Reflector; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [HasPermissionGuard, Reflector] + }).compile(); + + guard = module.get(HasPermissionGuard); + reflector = module.get(Reflector); + }); + + function setupReflectorSpy(returnValue: string) { + jest.spyOn(reflector, 'get').mockReturnValue(returnValue); + } + + function createMockExecutionContext(permissions: string[]) { + return new ExecutionContextHost([ + { + user: { + permissions // Set user permissions based on the argument + } + } + ]); + } + + it('should deny access if the user does not have any permission', () => { + setupReflectorSpy('required-permission'); + const noPermissions = createMockExecutionContext([]); + + expect(() => guard.canActivate(noPermissions)).toThrow(HttpException); + }); + + it('should deny access if the user has the wrong permission', () => { + setupReflectorSpy('required-permission'); + const wrongPermission = createMockExecutionContext(['wrong-permission']); + + expect(() => guard.canActivate(wrongPermission)).toThrow(HttpException); + }); + + it('should allow access if the user has the required permission', () => { + setupReflectorSpy('required-permission'); + const rightPermission = createMockExecutionContext(['required-permission']); + + expect(guard.canActivate(rightPermission)).toBe(true); + }); +}); diff --git a/apps/api/src/guards/has-permission.guard.ts b/apps/api/src/guards/has-permission.guard.ts new file mode 100644 index 000000000..298992d06 --- /dev/null +++ b/apps/api/src/guards/has-permission.guard.ts @@ -0,0 +1,37 @@ +import { HAS_PERMISSION_KEY } from '@ghostfolio/api/decorators/has-permission.decorator'; +import { hasPermission } from '@ghostfolio/common/permissions'; +import { + CanActivate, + ExecutionContext, + HttpException, + Injectable +} from '@nestjs/common'; +import { Reflector } from '@nestjs/core'; +import { StatusCodes, getReasonPhrase } from 'http-status-codes'; + +@Injectable() +export class HasPermissionGuard implements CanActivate { + public constructor(private reflector: Reflector) {} + + public canActivate(context: ExecutionContext): boolean { + const requiredPermission = this.reflector.get( + HAS_PERMISSION_KEY, + context.getHandler() + ); + + if (!requiredPermission) { + return true; // No specific permissions required + } + + const { user } = context.switchToHttp().getRequest(); + + if (!user || !hasPermission(user.permissions, requiredPermission)) { + throw new HttpException( + getReasonPhrase(StatusCodes.FORBIDDEN), + StatusCodes.FORBIDDEN + ); + } + + return true; + } +} From 77b13b88f0358b44b6d14c4b50fecc0a7a5d3948 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Szyma=C5=84ski?= Date: Sat, 2 Dec 2023 09:37:03 +0000 Subject: [PATCH 189/194] Relax check for duplicates in activities import (#2704) * Relax check for duplicates in activities import (allow same day) * Update changelog --- CHANGELOG.md | 3 ++- apps/api/src/app/import/import.service.ts | 11 ++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a5a5dc5b..5c46a0f8b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Relaxed the check for duplicates in the preview step of the activities import (allow same day) - Respected the `withExcludedAccounts` flag in the account balance time series ### Fixed @@ -170,7 +171,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed -- Improved the check for duplicates in the preview step of the activities import (allow different accounts) +- Relaxed the check for duplicates in the preview step of the activities import (allow different accounts) - Improved the usability and validation in the cash balance transfer from one to another account - Changed the checkboxes to slide toggles in the overview of the admin control panel - Switched from the deprecated (`PUT`) to the new endpoint (`POST`) to manage historical market data in the asset profile details dialog of the admin control panel diff --git a/apps/api/src/app/import/import.service.ts b/apps/api/src/app/import/import.service.ts index eb556421d..f89c57770 100644 --- a/apps/api/src/app/import/import.service.ts +++ b/apps/api/src/app/import/import.service.ts @@ -26,7 +26,7 @@ import { import { Injectable } from '@nestjs/common'; import { DataSource, Prisma, SymbolProfile } from '@prisma/client'; import Big from 'big.js'; -import { endOfToday, format, isAfter, isSameDay, parseISO } from 'date-fns'; +import { endOfToday, format, isAfter, isSameSecond, parseISO } from 'date-fns'; import { uniqBy } from 'lodash'; import { v4 as uuidv4 } from 'uuid'; @@ -83,12 +83,13 @@ export class ImportService { const value = new Big(quantity).mul(marketPrice).toNumber(); + const date = parseDate(dateString); const isDuplicate = orders.some((activity) => { return ( activity.accountId === Account?.id && activity.SymbolProfile.currency === assetProfile.currency && activity.SymbolProfile.dataSource === assetProfile.dataSource && - isSameDay(activity.date, parseDate(dateString)) && + isSameSecond(activity.date, date) && activity.quantity === quantity && activity.SymbolProfile.symbol === assetProfile.symbol && activity.type === 'DIVIDEND' && @@ -102,6 +103,7 @@ export class ImportService { return { Account, + date, error, quantity, value, @@ -109,7 +111,6 @@ export class ImportService { accountUserId: undefined, comment: undefined, createdAt: undefined, - date: parseDate(dateString), fee: 0, feeInBaseCurrency: 0, id: assetProfile.id, @@ -482,13 +483,13 @@ export class ImportService { type, unitPrice }) => { - const date = parseISO((dateString)); + const date = parseISO(dateString); const isDuplicate = existingActivities.some((activity) => { return ( activity.accountId === accountId && activity.SymbolProfile.currency === currency && activity.SymbolProfile.dataSource === dataSource && - isSameDay(activity.date, date) && + isSameSecond(activity.date, date) && activity.fee === fee && activity.quantity === quantity && activity.SymbolProfile.symbol === symbol && From 377ba75e4c70c35c625ef48d0ea651668f9b844d Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 2 Dec 2023 17:17:25 +0100 Subject: [PATCH 190/194] Add support to delete a cash balance (#2707) --- .../account-balance.controller.ts | 51 +++++++++ .../account-balance/account-balance.module.ts | 5 +- .../account-balance.service.ts | 19 ++++ .../api/src/app/account/account.controller.ts | 2 +- apps/api/src/app/account/account.module.ts | 2 +- apps/api/src/app/account/account.service.ts | 2 +- apps/api/src/app/order/order.module.ts | 2 +- .../api/src/app/portfolio/portfolio.module.ts | 2 +- .../src/app/portfolio/portfolio.service.ts | 2 +- .../account-detail-dialog.component.ts | 105 ++++++++++++------ .../account-detail-dialog.html | 3 + apps/client/src/app/services/data.service.ts | 4 + libs/common/src/lib/permissions.ts | 3 + .../account-balances.component.html | 23 ++++ .../account-balances.component.ts | 55 ++++----- .../account-balances.module.ts | 11 +- 16 files changed, 226 insertions(+), 65 deletions(-) create mode 100644 apps/api/src/app/account-balance/account-balance.controller.ts rename apps/api/src/{services => app}/account-balance/account-balance.module.ts (68%) rename apps/api/src/{services => app}/account-balance/account-balance.service.ts (80%) diff --git a/apps/api/src/app/account-balance/account-balance.controller.ts b/apps/api/src/app/account-balance/account-balance.controller.ts new file mode 100644 index 000000000..f1538d7a5 --- /dev/null +++ b/apps/api/src/app/account-balance/account-balance.controller.ts @@ -0,0 +1,51 @@ +import type { RequestWithUser } from '@ghostfolio/common/types'; +import { + Controller, + Delete, + HttpException, + Inject, + Param, + UseGuards +} from '@nestjs/common'; +import { REQUEST } from '@nestjs/core'; +import { AccountBalanceService } from './account-balance.service'; +import { AuthGuard } from '@nestjs/passport'; +import { hasPermission, permissions } from '@ghostfolio/common/permissions'; +import { StatusCodes, getReasonPhrase } from 'http-status-codes'; +import { AccountBalance } from '@prisma/client'; + +@Controller('account-balance') +export class AccountBalanceController { + public constructor( + private readonly accountBalanceService: AccountBalanceService, + @Inject(REQUEST) private readonly request: RequestWithUser + ) {} + + @Delete(':id') + @UseGuards(AuthGuard('jwt')) + public async deleteAccountBalance( + @Param('id') id: string + ): Promise { + const accountBalance = await this.accountBalanceService.accountBalance({ + id + }); + + if ( + !hasPermission( + this.request.user.permissions, + permissions.deleteAccountBalance + ) || + !accountBalance || + accountBalance.userId !== this.request.user.id + ) { + throw new HttpException( + getReasonPhrase(StatusCodes.FORBIDDEN), + StatusCodes.FORBIDDEN + ); + } + + return this.accountBalanceService.deleteAccountBalance({ + id + }); + } +} diff --git a/apps/api/src/services/account-balance/account-balance.module.ts b/apps/api/src/app/account-balance/account-balance.module.ts similarity index 68% rename from apps/api/src/services/account-balance/account-balance.module.ts rename to apps/api/src/app/account-balance/account-balance.module.ts index c85727f8c..d78d9792e 100644 --- a/apps/api/src/services/account-balance/account-balance.module.ts +++ b/apps/api/src/app/account-balance/account-balance.module.ts @@ -1,9 +1,12 @@ -import { AccountBalanceService } from '@ghostfolio/api/services/account-balance/account-balance.service'; import { ExchangeRateDataModule } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.module'; import { PrismaModule } from '@ghostfolio/api/services/prisma/prisma.module'; import { Module } from '@nestjs/common'; +import { AccountBalanceController } from './account-balance.controller'; +import { AccountBalanceService } from './account-balance.service'; + @Module({ + controllers: [AccountBalanceController], exports: [AccountBalanceService], imports: [ExchangeRateDataModule, PrismaModule], providers: [AccountBalanceService] diff --git a/apps/api/src/services/account-balance/account-balance.service.ts b/apps/api/src/app/account-balance/account-balance.service.ts similarity index 80% rename from apps/api/src/services/account-balance/account-balance.service.ts rename to apps/api/src/app/account-balance/account-balance.service.ts index e1d002428..0845eda5a 100644 --- a/apps/api/src/services/account-balance/account-balance.service.ts +++ b/apps/api/src/app/account-balance/account-balance.service.ts @@ -12,6 +12,17 @@ export class AccountBalanceService { private readonly prismaService: PrismaService ) {} + public async accountBalance( + accountBalanceWhereInput: Prisma.AccountBalanceWhereInput + ): Promise { + return this.prismaService.accountBalance.findFirst({ + include: { + Account: true + }, + where: accountBalanceWhereInput + }); + } + public async createAccountBalance( data: Prisma.AccountBalanceCreateInput ): Promise { @@ -20,6 +31,14 @@ export class AccountBalanceService { }); } + public async deleteAccountBalance( + where: Prisma.AccountBalanceWhereUniqueInput + ): Promise { + return this.prismaService.accountBalance.delete({ + where + }); + } + public async getAccountBalances({ filters, user, diff --git a/apps/api/src/app/account/account.controller.ts b/apps/api/src/app/account/account.controller.ts index 3eeb7117c..772a66e4c 100644 --- a/apps/api/src/app/account/account.controller.ts +++ b/apps/api/src/app/account/account.controller.ts @@ -1,6 +1,6 @@ +import { AccountBalanceService } from '@ghostfolio/api/app/account-balance/account-balance.service'; import { PortfolioService } from '@ghostfolio/api/app/portfolio/portfolio.service'; import { RedactValuesInResponseInterceptor } from '@ghostfolio/api/interceptors/redact-values-in-response.interceptor'; -import { AccountBalanceService } from '@ghostfolio/api/services/account-balance/account-balance.service'; import { ImpersonationService } from '@ghostfolio/api/services/impersonation/impersonation.service'; import { HEADER_KEY_IMPERSONATION } from '@ghostfolio/common/config'; import { diff --git a/apps/api/src/app/account/account.module.ts b/apps/api/src/app/account/account.module.ts index 26ace47c2..a8fb7e848 100644 --- a/apps/api/src/app/account/account.module.ts +++ b/apps/api/src/app/account/account.module.ts @@ -1,7 +1,7 @@ +import { AccountBalanceModule } from '@ghostfolio/api/app/account-balance/account-balance.module'; import { PortfolioModule } from '@ghostfolio/api/app/portfolio/portfolio.module'; import { RedisCacheModule } from '@ghostfolio/api/app/redis-cache/redis-cache.module'; import { UserModule } from '@ghostfolio/api/app/user/user.module'; -import { AccountBalanceModule } from '@ghostfolio/api/services/account-balance/account-balance.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'; diff --git a/apps/api/src/app/account/account.service.ts b/apps/api/src/app/account/account.service.ts index bc6abcc7a..366d0b1a0 100644 --- a/apps/api/src/app/account/account.service.ts +++ b/apps/api/src/app/account/account.service.ts @@ -1,4 +1,4 @@ -import { AccountBalanceService } from '@ghostfolio/api/services/account-balance/account-balance.service'; +import { AccountBalanceService } from '@ghostfolio/api/app/account-balance/account-balance.service'; import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; import { PrismaService } from '@ghostfolio/api/services/prisma/prisma.service'; import { Filter } from '@ghostfolio/common/interfaces'; diff --git a/apps/api/src/app/order/order.module.ts b/apps/api/src/app/order/order.module.ts index 8f033058d..53d69c0f9 100644 --- a/apps/api/src/app/order/order.module.ts +++ b/apps/api/src/app/order/order.module.ts @@ -1,8 +1,8 @@ +import { AccountBalanceService } from '@ghostfolio/api/app/account-balance/account-balance.service'; import { AccountService } from '@ghostfolio/api/app/account/account.service'; import { CacheModule } from '@ghostfolio/api/app/cache/cache.module'; import { RedisCacheModule } from '@ghostfolio/api/app/redis-cache/redis-cache.module'; import { UserModule } from '@ghostfolio/api/app/user/user.module'; -import { AccountBalanceService } from '@ghostfolio/api/services/account-balance/account-balance.service'; import { ApiModule } from '@ghostfolio/api/services/api/api.module'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; import { DataGatheringModule } from '@ghostfolio/api/services/data-gathering/data-gathering.module'; diff --git a/apps/api/src/app/portfolio/portfolio.module.ts b/apps/api/src/app/portfolio/portfolio.module.ts index 3b4ee5d76..cf3dd2490 100644 --- a/apps/api/src/app/portfolio/portfolio.module.ts +++ b/apps/api/src/app/portfolio/portfolio.module.ts @@ -1,8 +1,8 @@ import { AccessModule } from '@ghostfolio/api/app/access/access.module'; +import { AccountBalanceService } from '@ghostfolio/api/app/account-balance/account-balance.service'; import { AccountService } from '@ghostfolio/api/app/account/account.service'; import { OrderModule } from '@ghostfolio/api/app/order/order.module'; import { UserModule } from '@ghostfolio/api/app/user/user.module'; -import { AccountBalanceService } from '@ghostfolio/api/services/account-balance/account-balance.service'; import { ApiModule } from '@ghostfolio/api/services/api/api.module'; import { ConfigurationModule } from '@ghostfolio/api/services/configuration/configuration.module'; import { DataGatheringModule } from '@ghostfolio/api/services/data-gathering/data-gathering.module'; diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index 76aef0db1..85e914287 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -1,3 +1,4 @@ +import { AccountBalanceService } from '@ghostfolio/api/app/account-balance/account-balance.service'; import { AccountService } from '@ghostfolio/api/app/account/account.service'; import { CashDetails } from '@ghostfolio/api/app/account/interfaces/cash-details.interface'; import { Activity } from '@ghostfolio/api/app/order/interfaces/activities.interface'; @@ -12,7 +13,6 @@ import { CurrencyClusterRiskBaseCurrencyCurrentInvestment } from '@ghostfolio/ap import { CurrencyClusterRiskCurrentInvestment } from '@ghostfolio/api/models/rules/currency-cluster-risk/current-investment'; import { EmergencyFundSetup } from '@ghostfolio/api/models/rules/emergency-fund/emergency-fund-setup'; import { FeeRatioInitialInvestment } from '@ghostfolio/api/models/rules/fees/fee-ratio-initial-investment'; -import { AccountBalanceService } from '@ghostfolio/api/services/account-balance/account-balance.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 { ImpersonationService } from '@ghostfolio/api/services/impersonation/impersonation.service'; diff --git a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts index b3a916da9..aa835b00f 100644 --- a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts +++ b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts @@ -11,7 +11,11 @@ import { DataService } from '@ghostfolio/client/services/data.service'; import { ImpersonationStorageService } from '@ghostfolio/client/services/impersonation-storage.service'; import { UserService } from '@ghostfolio/client/services/user/user.service'; import { downloadAsFile } from '@ghostfolio/common/helper'; -import { HistoricalDataItem, User } from '@ghostfolio/common/interfaces'; +import { + AccountBalancesResponse, + HistoricalDataItem, + User +} from '@ghostfolio/common/interfaces'; import { OrderWithAccount } from '@ghostfolio/common/types'; import Big from 'big.js'; import { format, parseISO } from 'date-fns'; @@ -20,6 +24,7 @@ import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; import { AccountDetailDialogParams } from './interfaces/interfaces'; +import { hasPermission, permissions } from '@ghostfolio/common/permissions'; @Component({ host: { class: 'd-flex flex-column h-100' }, @@ -29,11 +34,13 @@ import { AccountDetailDialogParams } from './interfaces/interfaces'; styleUrls: ['./account-detail-dialog.component.scss'] }) export class AccountDetailDialog implements OnDestroy, OnInit { + public accountBalances: AccountBalancesResponse['balances']; public activities: OrderWithAccount[]; public balance: number; public currency: string; public equity: number; public hasImpersonationId: boolean; + public hasPermissionToDeleteAccountBalance: boolean; public historicalDataItems: HistoricalDataItem[]; public isLoadingActivities: boolean; public isLoadingChart: boolean; @@ -59,6 +66,11 @@ export class AccountDetailDialog implements OnDestroy, OnInit { if (state?.user) { this.user = state.user; + this.hasPermissionToDeleteAccountBalance = hasPermission( + this.user.permissions, + permissions.deleteAccountBalance + ); + this.changeDetectorRef.markForCheck(); } }); @@ -66,7 +78,6 @@ export class AccountDetailDialog implements OnDestroy, OnInit { public ngOnInit() { this.isLoadingActivities = true; - this.isLoadingChart = true; this.dataService .fetchAccount(this.data.accountId) @@ -112,48 +123,33 @@ export class AccountDetailDialog implements OnDestroy, OnInit { this.changeDetectorRef.markForCheck(); }); - this.dataService - .fetchPortfolioPerformance({ - filters: [ - { - id: this.data.accountId, - type: 'ACCOUNT' - } - ], - range: 'max', - withExcludedAccounts: true - }) - .pipe(takeUntil(this.unsubscribeSubject)) - .subscribe(({ chart }) => { - this.historicalDataItems = chart.map( - ({ date, netWorth, netWorthInPercentage }) => { - return { - date, - value: - this.hasImpersonationId || this.user.settings.isRestrictedView - ? netWorthInPercentage - : netWorth - }; - } - ); - - this.isLoadingChart = false; - - this.changeDetectorRef.markForCheck(); - }); - this.impersonationStorageService .onChangeHasImpersonation() .pipe(takeUntil(this.unsubscribeSubject)) .subscribe((impersonationId) => { this.hasImpersonationId = !!impersonationId; }); + + this.fetchAccountBalances(); + this.fetchPortfolioPerformance(); } public onClose() { this.dialogRef.close(); } + public onDeleteAccountBalance(aId: string) { + this.dataService + .deleteAccountBalance(aId) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe({ + next: () => { + this.fetchAccountBalances(); + this.fetchPortfolioPerformance(); + } + }); + } + public onExport() { this.dataService .fetchExport( @@ -176,6 +172,51 @@ export class AccountDetailDialog implements OnDestroy, OnInit { }); } + private fetchAccountBalances() { + this.dataService + .fetchAccountBalances(this.data.accountId) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(({ balances }) => { + this.accountBalances = balances; + + this.changeDetectorRef.markForCheck(); + }); + } + + private fetchPortfolioPerformance() { + this.isLoadingChart = true; + + this.dataService + .fetchPortfolioPerformance({ + filters: [ + { + id: this.data.accountId, + type: 'ACCOUNT' + } + ], + range: 'max', + withExcludedAccounts: true + }) + .pipe(takeUntil(this.unsubscribeSubject)) + .subscribe(({ chart }) => { + this.historicalDataItems = chart.map( + ({ date, netWorth, netWorthInPercentage }) => { + return { + date, + value: + this.hasImpersonationId || this.user.settings.isRestrictedView + ? netWorthInPercentage + : netWorth + }; + } + ); + + this.isLoadingChart = false; + + this.changeDetectorRef.markForCheck(); + }); + } + public ngOnDestroy() { this.unsubscribeSubject.next(); this.unsubscribeSubject.complete(); diff --git a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html index 7e92eca85..647ba0d6f 100644 --- a/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html +++ b/apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html @@ -87,8 +87,11 @@ Cash Balances diff --git a/apps/client/src/app/services/data.service.ts b/apps/client/src/app/services/data.service.ts index c384cd476..e61fa2406 100644 --- a/apps/client/src/app/services/data.service.ts +++ b/apps/client/src/app/services/data.service.ts @@ -212,6 +212,10 @@ export class DataService { return this.http.delete(`/api/v1/account/${aId}`); } + public deleteAccountBalance(aId: string) { + return this.http.delete(`/api/v1/account-balance/${aId}`); + } + public deleteAllOrders() { return this.http.delete(`/api/v1/order/`); } diff --git a/libs/common/src/lib/permissions.ts b/libs/common/src/lib/permissions.ts index 362d15b9c..51b653f3f 100644 --- a/libs/common/src/lib/permissions.ts +++ b/libs/common/src/lib/permissions.ts @@ -12,6 +12,7 @@ export const permissions = { createUserAccount: 'createUserAccount', deleteAccess: 'deleteAccess', deleteAccount: 'deleteAcccount', + deleteAccountBalance: 'deleteAcccountBalance', deleteAuthDevice: 'deleteAuthDevice', deleteOrder: 'deleteOrder', deletePlatform: 'deletePlatform', @@ -45,6 +46,7 @@ export function getPermissions(aRole: Role): string[] { permissions.accessAssistant, permissions.createAccess, permissions.createAccount, + permissions.deleteAccountBalance, permissions.createOrder, permissions.createPlatform, permissions.createTag, @@ -75,6 +77,7 @@ export function getPermissions(aRole: Role): string[] { permissions.createOrder, permissions.deleteAccess, permissions.deleteAccount, + permissions.deleteAccountBalance, permissions.deleteAuthDevice, permissions.deleteOrder, permissions.updateAccount, diff --git a/libs/ui/src/lib/account-balances/account-balances.component.html b/libs/ui/src/lib/account-balances/account-balances.component.html index 81f8a8192..291f11529 100644 --- a/libs/ui/src/lib/account-balances/account-balances.component.html +++ b/libs/ui/src/lib/account-balances/account-balances.component.html @@ -31,6 +31,29 @@ + +
    + + + + +
    diff --git a/libs/ui/src/lib/account-balances/account-balances.component.ts b/libs/ui/src/lib/account-balances/account-balances.component.ts index c552519d6..4bcf7b26a 100644 --- a/libs/ui/src/lib/account-balances/account-balances.component.ts +++ b/libs/ui/src/lib/account-balances/account-balances.component.ts @@ -1,18 +1,19 @@ import { ChangeDetectionStrategy, - ChangeDetectorRef, Component, + EventEmitter, Input, + OnChanges, OnDestroy, OnInit, + Output, ViewChild } from '@angular/core'; import { MatSort } from '@angular/material/sort'; import { MatTableDataSource } from '@angular/material/table'; -import { DataService } from '@ghostfolio/client/services/data.service'; import { AccountBalancesResponse } from '@ghostfolio/common/interfaces'; import { get } from 'lodash'; -import { Subject, takeUntil } from 'rxjs'; +import { Subject } from 'rxjs'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, @@ -20,44 +21,48 @@ import { Subject, takeUntil } from 'rxjs'; styleUrls: ['./account-balances.component.scss'], templateUrl: './account-balances.component.html' }) -export class AccountBalancesComponent implements OnDestroy, OnInit { +export class AccountBalancesComponent implements OnChanges, OnDestroy, OnInit { + @Input() accountBalances: AccountBalancesResponse['balances']; @Input() accountId: string; @Input() locale: string; + @Input() showActions = true; + + @Output() accountBalanceDeleted = new EventEmitter(); @ViewChild(MatSort) sort: MatSort; public dataSource: MatTableDataSource< AccountBalancesResponse['balances'][0] > = new MatTableDataSource(); - public displayedColumns: string[] = ['date', 'value']; + public displayedColumns: string[] = ['date', 'value', 'actions']; private unsubscribeSubject = new Subject(); - public constructor( - private changeDetectorRef: ChangeDetectorRef, - private dataService: DataService - ) {} + public constructor() {} - public ngOnInit() { - this.fetchBalances(); - } + public ngOnInit() {} - public ngOnDestroy() { - this.unsubscribeSubject.next(); - this.unsubscribeSubject.complete(); + public ngOnChanges() { + if (this.accountBalances) { + this.dataSource = new MatTableDataSource(this.accountBalances); + + this.dataSource.sort = this.sort; + this.dataSource.sortingDataAccessor = get; + } } - private fetchBalances() { - this.dataService - .fetchAccountBalances(this.accountId) - .pipe(takeUntil(this.unsubscribeSubject)) - .subscribe(({ balances }) => { - this.dataSource = new MatTableDataSource(balances); + public onDeleteAccountBalance(aId: string) { + const confirmation = confirm( + $localize`Do you really want to delete this account balance?` + ); - this.dataSource.sort = this.sort; - this.dataSource.sortingDataAccessor = get; + if (confirmation) { + this.accountBalanceDeleted.emit(aId); + } + } - this.changeDetectorRef.markForCheck(); - }); + public ngOnDestroy() { + this.unsubscribeSubject.next(); + this.unsubscribeSubject.complete(); } } diff --git a/libs/ui/src/lib/account-balances/account-balances.module.ts b/libs/ui/src/lib/account-balances/account-balances.module.ts index cc8fb9677..210151cb2 100644 --- a/libs/ui/src/lib/account-balances/account-balances.module.ts +++ b/libs/ui/src/lib/account-balances/account-balances.module.ts @@ -1,5 +1,7 @@ import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; +import { MatMenuModule } from '@angular/material/menu'; import { MatSortModule } from '@angular/material/sort'; import { MatTableModule } from '@angular/material/table'; import { GfValueModule } from '@ghostfolio/ui/value'; @@ -9,7 +11,14 @@ import { AccountBalancesComponent } from './account-balances.component'; @NgModule({ declarations: [AccountBalancesComponent], exports: [AccountBalancesComponent], - imports: [CommonModule, GfValueModule, MatSortModule, MatTableModule], + imports: [ + CommonModule, + GfValueModule, + MatButtonModule, + MatMenuModule, + MatSortModule, + MatTableModule + ], schemas: [CUSTOM_ELEMENTS_SCHEMA] }) export class GfAccountBalancesModule {} From c1f129501a6f9ea74c11bbd6b645c547b7f08bc2 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 2 Dec 2023 17:20:10 +0100 Subject: [PATCH 191/194] Release 2.28.0 (#2709) --- CHANGELOG.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5c46a0f8b..e963b134e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ 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.28.0 - 2023-12-02 ### Added diff --git a/package.json b/package.json index e482d0051..1df537ff8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.27.1", + "version": "2.28.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From d4c939e41d087226a765d9fbbb418e9a27ac2cb2 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 3 Dec 2023 09:26:12 +0100 Subject: [PATCH 192/194] Feature/improve language localization for german 20231202 (#2710) * Update locales * Update changelog --- CHANGELOG.md | 6 + apps/client/src/locales/messages.de.xlf | 2634 ++++++++------- apps/client/src/locales/messages.es.xlf | 2634 ++++++++------- apps/client/src/locales/messages.fr.xlf | 2634 ++++++++------- apps/client/src/locales/messages.it.xlf | 2634 ++++++++------- apps/client/src/locales/messages.nl.xlf | 2634 ++++++++------- apps/client/src/locales/messages.pl.xlf | 3090 ++++++++++-------- apps/client/src/locales/messages.pt.xlf | 2634 ++++++++------- apps/client/src/locales/messages.tr.xlf | 3884 +++++++++++++---------- apps/client/src/locales/messages.xlf | 3472 +++++++++++--------- 10 files changed, 14948 insertions(+), 11308 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e963b134e..28910d5fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,12 @@ 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 + +### Changed + +- Improved the language localization for German (`de`) + ## 2.28.0 - 2023-12-02 ### Added diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index b60ff5146..3f6f209de 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -90,7 +90,7 @@ apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 69 + 73 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -220,6 +220,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 227 + + libs/ui/src/lib/account-balances/account-balances.component.html + 20 + libs/ui/src/lib/activities-table/activities-table.component.html 321 @@ -288,6 +292,10 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html 77 + + libs/ui/src/lib/account-balances/account-balances.component.html + 50 + libs/ui/src/lib/activities-table/activities-table.component.html 529 @@ -436,6 +444,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 136 + + libs/ui/src/lib/account-balances/account-balances.component.html + 11 + libs/ui/src/lib/activities-table/activities-table.component.html 152 @@ -1652,7 +1664,7 @@ apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html - 203 + 204 apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html @@ -8888,191 +8900,191 @@ Hinweise apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 @@ -9080,191 +9092,191 @@ Mit Ghostfolio kannst du dein Vermögen einfach überwachen, analysieren und visualisieren. apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 @@ -9272,191 +9284,191 @@ Tools für persönliche Finanzen apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 @@ -10196,191 +10208,191 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 26 + 27 @@ -10464,191 +10476,191 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 25 + 26 @@ -10868,191 +10880,191 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/resources-page.component.ts @@ -11859,1828 +11871,2220 @@ 37 - - Starting from / year - Ab / Jahr + + open-source-alternative-to + open-source-alternative-zu + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 22 + + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 13 + + + + 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. + Bitte beachte, dass die bereitgestellten Ghostfolio vs Informationen auf unserer unabhängigen Recherche und Analyse beruhen. Diese Webseite steht in keiner Verbindung zu oder einem anderen im Vergleich erwähnten Produkt. Da sich die Landschaft der Personal Finance Tools ständig weiterentwickelt, ist es wichtig, alle spezifischen Details oder Änderungen direkt auf der jeweiligen Produktseite zu überprüfen. Brauchen die Daten eine Auffrischung? Unterstütze uns bei der Pflege der aktuellen Daten auf GitHub. apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 - - Starting from / year - Ab / Jahr + + Ready to take your investments to the next level? + Bereit, deine Investitionen auf ein neues Levelzu bringen? apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 - - - - open-source-alternative-to - open-source-alternative-zu - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 22 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 13 + 217 - - 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. - Bitte beachte, dass die bereitgestellten Ghostfolio vs Informationen auf unserer unabhängigen Recherche und Analyse beruhen. Diese Webseite steht in keiner Verbindung zu oder einem anderen im Vergleich erwähnten Produkt. Da sich die Landschaft der Personal Finance Tools ständig weiterentwickelt, ist es wichtig, alle spezifischen Details oder Änderungen direkt auf der jeweiligen Produktseite zu überprüfen. Brauchen die Daten eine Auffrischung? Unterstütze uns bei der Pflege der aktuellen Daten auf GitHub. + + Get Started + Jetzt loslegen apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 - - Ready to take your investments to the next level? - Bereit, deine Investitionen auf ein neues Levelzu bringen? + + Switzerland + Schweiz - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 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 - 216 + 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 - 216 + 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 - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 548 + + + Global + Weltweit - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 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 - 216 + 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 - 216 + 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 - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 549 + + + United States + Vereinigte Staaten von Amerika - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 559 + + + Belgium + Belgien - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 167 + + + Germany + Deutschland - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 361 + + + Austria + Österreich - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 238 + + + Italy + Italien - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 372 + + + Netherlands + Niederlande - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 382 + + + Thailand + Thailand - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 394 + + + New Zealand + Neuseeland - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 436 + + + Czech Republic + Tschechische Republik - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 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 - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 484 + + + (Last 24 hours) + (Letzte 24 Stunden) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/open/open-page.html + 37 + + + (Last 30 days) + (Letzte 30 Tage) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/open/open-page.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/open/open-page.html + 59 + + + (Last 90 days) + (Letzte 90 Tage) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/open/open-page.html + 127 - - Get Started - Jetzt loslegen + + New + Neu - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/landing/landing-page.html + 7 + + + Choose or drop a file here + Wählen Sie eine Datei aus oder ziehen Sie sie hierhin - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 85 + + + You are using the Live Demo. + Du verwendest die Live Demo. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/app.component.html + 17 + + + One-time fee, annual account fees + Einmalige Eröffnungsgebühr, jährliche Kontoführungsgebühren - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 27 + + + Distribution of corporate earnings + Ausschüttung von Unternehmensgewinnen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 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 + Ups! Der historische Wechselkurs konnte nicht abgerufen werden vom - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 198 + + + Fee + Gebühr - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + libs/ui/src/lib/i18n.ts + 32 + + + Interest + Zins - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 280 + + + Revenue for lending out money + Ertrag für das Ausleihen von Geld - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 39 + + + Add Tag + Tag hinzufügen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 11 + + + Do you really want to delete this tag? + Möchtest du diesen Tag wirklich löschen? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-tag/admin-tag.component.ts + 78 + + + Update tag + Tag bearbeiten - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 2 + + + Add tag + Tag hinzufügen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 3 + + + France + Frankreich - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 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 - 225 + 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 - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 474 + + + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. + Ghostfolio X-ray nutzt statische Analysen, um potenzielle Probleme und Risiken in deinem Portfolio zu identifizieren. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 100 + + + Currency Cluster Risks + Währungsklumpenrisiken - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 124 - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + + + Account Cluster Risks + Kontoklumpenrisiken + + apps/client/src/app/pages/portfolio/fire/fire-page.html + 137 + + + Transfer Cash Balance + Cash-Bestand Transfer - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 9 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + Benchmark + Benchmark - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 219 + + + Version + Version - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-overview/admin-overview.html + 7 + + + Settings + Einstellungen - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 + + + From + Von - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 + + + To + Nach - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 29 + + + + Transfer + Transferieren + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 66 + + + + Finland + Finnland + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 466 + + + + Membership + Mitgliedschaft + + 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 + + + + Access + Zugang + + 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 + + + + Find holding... + Finde Position... + + libs/ui/src/lib/assistant/assistant.component.ts + 89 + + + + No entries... + Keine Einträge vorhanden... + + libs/ui/src/lib/assistant/assistant.html + 63 + + + libs/ui/src/lib/assistant/assistant.html + 84 + + + + Asset Profile + Anlageprofil + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31 + + + + Do you really want to delete this asset profile? + Möchtest du dieses Anlageprofil wirklich löschen? + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 184 + + + + Search + Suche + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + + Add Manually + Manuell hinzufügen + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. + Mit dem Finanz-Dashboard Ghostfolio können Sie Ihr Vermögen in Cash, Aktien, ETFs und Kryptowährungen über mehrere Finanzinstitute überwachen. + + apps/client/src/app/pages/i18n/i18n-page.html + 4 + + + + Last All Time High + Letztes Allzeithoch + + libs/ui/src/lib/benchmark/benchmark.component.html + 63 + + + + User + Benutzer + + apps/client/src/app/components/admin-users/admin-users.html + 29 + + + Ghostfolio vs comparison table + Ghostfolio vs Vergleichstabelle apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 - - - Switzerland - Schweiz - 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 + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 91 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 507 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - 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 + 48 - - - Global - Weltweit - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 71 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 318 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 439 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 550 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - United States - Vereinigte Staaten von Amerika - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 82 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 138 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 148 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 199 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 209 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 219 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 271 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 293 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 304 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 329 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 331 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 341 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 406 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 416 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 426 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 495 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 518 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 + + + Canada + Kanada apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 538 + 529 + + + Open Source Wealth Management Software + Open Source Software für die Vermögensverwaltung - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 560 + apps/client/src/app/pages/i18n/i18n-page.html + 13 - - Belgium - Belgien + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + aktie, app, asset, dashboard, etf, finanzen, kryptowährung, management, performance, portfolio, software, trading, vermögen, web3 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 168 + apps/client/src/app/pages/i18n/i18n-page.html + 9 - - Germany - Deutschland + + Oops, cash balance transfer has failed. + Ups, der Cash-Bestand Transfer ist fehlgeschlagen. - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 129 + apps/client/src/app/pages/accounts/accounts-page.component.ts + 305 + + + Poland + Polen apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 179 + 119 + + + South Africa + Südafrika apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 251 + 227 + + + Extreme Fear + Extreme Angst - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 261 + libs/ui/src/lib/i18n.ts + 63 + + + Extreme Greed + Extreme Gier - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 282 + libs/ui/src/lib/i18n.ts + 64 + + + Neutral + Neutral - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 316 + libs/ui/src/lib/i18n.ts + 67 + + + Oops! Could not parse historical data. + Ups! Die historischen Daten konnten nicht geparsed werden. - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 362 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 205 - - Austria - Österreich + + Do you really want to delete this system message? + Möchtest du diese Systemmeldung wirklich löschen? - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 239 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 159 - - Italy - Italien + + 50-Day Trend + 50 Tage Trend - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 373 + libs/ui/src/lib/benchmark/benchmark.component.html + 15 - - Netherlands - Niederlande + + 200-Day Trend + 200 Tage Trend - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 383 + libs/ui/src/lib/benchmark/benchmark.component.html + 39 - - Thailand - Thailand + + Cash Balances + Cash-Bestände - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 395 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 88 - - New Zealand - Neuseeland + + Starting from + Ab - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 437 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Czech Republic - Tschechische Republik - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 448 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 485 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - (Last 24 hours) - (Letzte 24 Stunden) - apps/client/src/app/pages/open/open-page.html - 37 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - (Last 30 days) - (Letzte 30 Tage) - apps/client/src/app/pages/open/open-page.html - 48 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/open/open-page.html - 59 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - (Last 90 days) - (Letzte 90 Tage) - apps/client/src/app/pages/open/open-page.html - 127 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - New - Neu - apps/client/src/app/pages/landing/landing-page.html - 7 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Choose or drop a file here - Wählen Sie eine Datei aus oder ziehen Sie sie hierhin - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 85 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - You are using the Live Demo. - Du verwendest die Live Demo. - apps/client/src/app/app.component.html - 17 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - One-time fee, annual account fees - Einmalige Eröffnungsgebühr, jährliche Kontoführungsgebühren - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 27 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Distribution of corporate earnings - Ausschüttung von Unternehmensgewinnen - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 33 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Oops! Could not get the historical exchange rate from - Ups! Der historische Wechselkurs konnte nicht abgerufen werden vom - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 198 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Fee - Gebühr - libs/ui/src/lib/i18n.ts - 32 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Interest - Zins - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 280 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Revenue for lending out money - Ertrag für das Ausleihen von Geld - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 39 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Add Tag - Tag hinzufügen - apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Do you really want to delete this tag? - Möchtest du diesen Tag wirklich löschen? - apps/client/src/app/components/admin-tag/admin-tag.component.ts - 78 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Update tag - Tag bearbeiten - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 2 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Add tag - Tag hinzufügen - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 3 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - France - Frankreich - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 110 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 459 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 475 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - Ghostfolio X-ray nutzt statische Analysen, um potenzielle Probleme und Risiken in deinem Portfolio zu identifizieren. - apps/client/src/app/pages/portfolio/fire/fire-page.html - 100 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Currency Cluster Risks - Währungsklumpenrisiken - apps/client/src/app/pages/portfolio/fire/fire-page.html - 124 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Account Cluster Risks - Kontoklumpenrisiken - apps/client/src/app/pages/portfolio/fire/fire-page.html - 137 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Transfer Cash Balance - Cash-Bestand Transfer - apps/client/src/app/components/accounts-table/accounts-table.component.html - 9 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 7 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Benchmark - Benchmark - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 219 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Version - Version - apps/client/src/app/components/admin-overview/admin-overview.html - 7 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Settings - Einstellungen - apps/client/src/app/components/user-account-settings/user-account-settings.html - 2 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - From - Von - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 11 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - To - Nach - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 29 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Transfer - Transferieren - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 66 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Finland - Finnland - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 467 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Membership - Mitgliedschaft - 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 + 185 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 39 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Access - Zugang - 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 + 185 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 45 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Find holding... - Finde Position... - libs/ui/src/lib/assistant/assistant.component.ts - 89 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - No entries... - Keine Einträge vorhanden... + + year + Jahr - libs/ui/src/lib/assistant/assistant.html - 63 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - libs/ui/src/lib/assistant/assistant.html - 84 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Asset Profile - Anlageprofil - apps/client/src/app/components/admin-jobs/admin-jobs.html - 31 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Do you really want to delete this asset profile? - Möchtest du dieses Anlageprofil wirklich löschen? - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 184 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Search - Suche - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 16 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Add Manually - Manuell hinzufügen - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 19 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - Mit dem Finanz-Dashboard Ghostfolio können Sie Ihr Vermögen in Cash, Aktien, ETFs und Kryptowährungen über mehrere Finanzinstitute überwachen. - apps/client/src/app/pages/i18n/i18n-page.html - 4 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Last All Time High - Letztes Allzeithoch - libs/ui/src/lib/benchmark/benchmark.component.html - 63 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - User - Benutzer - apps/client/src/app/components/admin-users/admin-users.html - 29 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Ghostfolio vs comparison table - Ghostfolio vs Vergleichstabelle apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 - - - Canada - Kanada - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 530 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Open Source Wealth Management Software - Open Source Software für die Vermögensverwaltung - apps/client/src/app/pages/i18n/i18n-page.html - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - aktie, app, asset, dashboard, etf, finanzen, kryptowährung, management, performance, portfolio, software, trading, vermögen, web3 - apps/client/src/app/pages/i18n/i18n-page.html - 9 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Oops, cash balance transfer has failed. - Ups, der Cash-Bestand Transfer ist fehlgeschlagen. - apps/client/src/app/pages/accounts/accounts-page.component.ts - 305 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Poland - Polen - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 120 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - South Africa - Südafrika - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 228 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Extreme Fear - Extreme Angst - libs/ui/src/lib/i18n.ts - 63 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Extreme Greed - Extreme Gier - libs/ui/src/lib/i18n.ts - 64 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Neutral - Neutral - libs/ui/src/lib/i18n.ts - 67 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Oops! Could not parse historical data. - 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 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Do you really want to delete this system message? - Möchtest du diese Systemmeldung wirklich löschen? - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 159 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - 50-Day Trend - 50 Tage Trend - libs/ui/src/lib/benchmark/benchmark.component.html - 15 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - 200-Day Trend - 200 Tage Trend + + Do you really want to delete this account balance? + Möchtest du diesen Cash-Bestand wirklich löschen? - libs/ui/src/lib/benchmark/benchmark.component.html - 39 + libs/ui/src/lib/account-balances/account-balances.component.ts + 56 diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index d5abb1ce7..f50cded65 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -91,7 +91,7 @@ apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 69 + 73 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -221,6 +221,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 227 + + libs/ui/src/lib/account-balances/account-balances.component.html + 20 + libs/ui/src/lib/activities-table/activities-table.component.html 321 @@ -289,6 +293,10 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html 77 + + libs/ui/src/lib/account-balances/account-balances.component.html + 50 + libs/ui/src/lib/activities-table/activities-table.component.html 529 @@ -437,6 +445,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 136 + + libs/ui/src/lib/account-balances/account-balances.component.html + 11 + libs/ui/src/lib/activities-table/activities-table.component.html 152 @@ -1650,7 +1662,7 @@ apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html - 203 + 204 apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html @@ -8886,191 +8898,191 @@ Notes apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 @@ -9078,191 +9090,191 @@ Effortlessly track, analyze, and visualize your wealth with Ghostfolio. apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 @@ -9270,191 +9282,191 @@ Personal Finance Tools apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 @@ -10194,191 +10206,191 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 26 + 27 @@ -10462,191 +10474,191 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 25 + 26 @@ -10866,191 +10878,191 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/resources-page.component.ts @@ -11857,1828 +11869,2220 @@ 37 - - Starting from / year - Starting from / year + + open-source-alternative-to + open-source-alternative-to + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 22 + + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 13 + + + + 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. + 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 - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 - - Starting from / year - Starting from / year + + Ready to take your investments to the next level? + Ready to take your investments to the next level? apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 - - - - open-source-alternative-to - open-source-alternative-to - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 22 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 13 + 217 - - 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. - 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. + + Get Started + Get Started apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 - - Ready to take your investments to the next level? - Ready to take your investments to the next level? + + Switzerland + Switzerland - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 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 - 216 + 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 - 216 + 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 - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 548 + + + Global + Global - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 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 - 216 + 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 - 216 + 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 - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 549 + + + United States + United States - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 559 + + + Belgium + Belgium - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 167 + + + Germany + Germany - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 361 + + + Austria + Austria - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 238 + + + Italy + Italy - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 372 + + + Netherlands + Netherlands - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 382 + + + Thailand + Thailand - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 394 + + + New Zealand + New Zealand - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 436 + + + Czech Republic + Czech Republic - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 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 - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 484 + + + (Last 24 hours) + (Last 24 hours) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/open/open-page.html + 37 + + + (Last 30 days) + (Last 30 days) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/open/open-page.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/open/open-page.html + 59 + + + (Last 90 days) + (Last 90 days) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/open/open-page.html + 127 - - Get Started - Get Started + + New + New - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/landing/landing-page.html + 7 + + + Choose or drop a file here + Choose or drop a file here - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 85 + + + You are using the Live Demo. + You are using the Live Demo. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/app.component.html + 17 + + + One-time fee, annual account fees + One-time fee, annual account fees - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 27 + + + Distribution of corporate earnings + Distribution of corporate earnings - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 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 + Oops! Could not get the historical exchange rate from - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 198 + + + Fee + Fee - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + libs/ui/src/lib/i18n.ts + 32 + + + Interest + Interest - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 280 + + + Revenue for lending out money + Revenue for lending out money - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 39 + + + Add Tag + Add Tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 11 + + + Do you really want to delete this tag? + Do you really want to delete this tag? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-tag/admin-tag.component.ts + 78 + + + Update tag + Update tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 2 + + + Add tag + Add tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 3 + + + France + France - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 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 - 225 + 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 - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 474 + + + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 100 + + + Currency Cluster Risks + Currency Cluster Risks - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 124 - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + + + Account Cluster Risks + Account Cluster Risks + + apps/client/src/app/pages/portfolio/fire/fire-page.html + 137 + + + Transfer Cash Balance + Transfer Cash Balance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 9 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + Benchmark + Benchmark - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 219 + + + Version + Version - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-overview/admin-overview.html + 7 + + + Settings + Settings - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 + + + From + From - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 + + + To + To - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 29 + + + + Transfer + Transfer + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 66 + + + + Finland + Finland + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 466 + + + + Membership + 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 + + + + Access + 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 + + + + Find holding... + Find holding... + + libs/ui/src/lib/assistant/assistant.component.ts + 89 + + + + No entries... + No entries... + + libs/ui/src/lib/assistant/assistant.html + 63 + + + libs/ui/src/lib/assistant/assistant.html + 84 + + + + Asset Profile + Asset Profile + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31 + + + + Do you really want to delete this asset profile? + Do you really want to delete this asset profile? + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 184 + + + + Search + Search + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + + Add Manually + Add Manually + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. + Ghostfolio es un dashboard de finanzas personales para hacer un seguimiento de tus activos como acciones, ETFs o criptodivisas a través de múltiples plataformas. + + apps/client/src/app/pages/i18n/i18n-page.html + 4 + + + + Last All Time High + Last All Time High + + libs/ui/src/lib/benchmark/benchmark.component.html + 63 + + + + User + User + + apps/client/src/app/components/admin-users/admin-users.html + 29 + + + Ghostfolio vs comparison table + Ghostfolio vs comparison table apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 - - - Switzerland - Switzerland - 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 + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 91 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 507 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - 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 + 48 - - - Global - Global - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 71 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 318 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 439 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 550 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - United States - United States - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 82 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 138 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 148 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 199 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 209 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 219 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 271 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 293 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 304 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 329 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 331 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 341 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 406 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 416 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 426 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 495 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 518 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 + + + Canada + Canada apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 538 + 529 + + + Open Source Wealth Management Software + Open Source Wealth Management Software - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 560 + apps/client/src/app/pages/i18n/i18n-page.html + 13 - - Belgium - Belgium + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 168 + apps/client/src/app/pages/i18n/i18n-page.html + 9 - - Germany - Germany + + Oops, cash balance transfer has failed. + Oops, cash balance transfer has failed. - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 129 + apps/client/src/app/pages/accounts/accounts-page.component.ts + 305 + + + Poland + Poland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 179 + 119 + + + South Africa + South Africa apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 251 + 227 + + + Extreme Fear + Extreme Fear - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 261 + libs/ui/src/lib/i18n.ts + 63 + + + Extreme Greed + Extreme Greed - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 282 + libs/ui/src/lib/i18n.ts + 64 + + + Neutral + Neutral - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 316 + libs/ui/src/lib/i18n.ts + 67 + + + Oops! Could not parse historical data. + Oops! Could not parse historical data. - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 362 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 205 - - Austria - Austria + + Do you really want to delete this system message? + Do you really want to delete this system message? - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 239 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 159 - - Italy - Italy + + 50-Day Trend + 50-Day Trend - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 373 + libs/ui/src/lib/benchmark/benchmark.component.html + 15 - - Netherlands - Netherlands + + 200-Day Trend + 200-Day Trend - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 383 + libs/ui/src/lib/benchmark/benchmark.component.html + 39 - - Thailand - Thailand + + Cash Balances + Cash Balances - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 395 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 88 - - New Zealand - New Zealand + + Starting from + Starting from - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 437 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Czech Republic - Czech Republic - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 448 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 485 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - (Last 24 hours) - (Last 24 hours) - apps/client/src/app/pages/open/open-page.html - 37 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - (Last 30 days) - (Last 30 days) - apps/client/src/app/pages/open/open-page.html - 48 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/open/open-page.html - 59 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - (Last 90 days) - (Last 90 days) - apps/client/src/app/pages/open/open-page.html - 127 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - New - New - apps/client/src/app/pages/landing/landing-page.html - 7 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Choose or drop a file here - Choose or drop a file here - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 85 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - You are using the Live Demo. - You are using the Live Demo. - apps/client/src/app/app.component.html - 17 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - One-time fee, annual account fees - 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 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Distribution of corporate earnings - Distribution of corporate earnings - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 33 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Oops! Could not get the historical exchange rate from - 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 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Fee - Fee - libs/ui/src/lib/i18n.ts - 32 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Interest - Interest - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 280 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Revenue for lending out money - Revenue for lending out money - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 39 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Add Tag - Add Tag - apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Do you really want to delete this tag? - Do you really want to delete this tag? - apps/client/src/app/components/admin-tag/admin-tag.component.ts - 78 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Update tag - Update tag - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 2 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Add tag - Add tag - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 3 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - France - France - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 110 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 459 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 475 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - 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 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Currency Cluster Risks - Currency Cluster Risks - apps/client/src/app/pages/portfolio/fire/fire-page.html - 124 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Account Cluster Risks - Account Cluster Risks - apps/client/src/app/pages/portfolio/fire/fire-page.html - 137 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Transfer Cash Balance - Transfer Cash Balance - apps/client/src/app/components/accounts-table/accounts-table.component.html - 9 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 7 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Benchmark - Benchmark - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 219 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Version - Version - apps/client/src/app/components/admin-overview/admin-overview.html - 7 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Settings - Settings - apps/client/src/app/components/user-account-settings/user-account-settings.html - 2 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - From - From - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 11 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - To - To - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 29 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Transfer - Transfer - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 66 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Finland - Finland - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 467 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Membership - Membership - 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 + 185 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 39 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Access - Access - 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 + 185 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 45 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Find holding... - Find holding... - libs/ui/src/lib/assistant/assistant.component.ts - 89 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - No entries... - No entries... + + year + year - libs/ui/src/lib/assistant/assistant.html - 63 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - libs/ui/src/lib/assistant/assistant.html - 84 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Asset Profile - Asset Profile - apps/client/src/app/components/admin-jobs/admin-jobs.html - 31 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Do you really want to delete this asset profile? - Do you really want to delete this asset profile? - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 184 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Search - Search - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 16 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Add Manually - Add Manually - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 19 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - Ghostfolio es un dashboard de finanzas personales para hacer un seguimiento de tus activos como acciones, ETFs o criptodivisas a través de múltiples plataformas. - apps/client/src/app/pages/i18n/i18n-page.html - 4 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Last All Time High - Last All Time High - libs/ui/src/lib/benchmark/benchmark.component.html - 63 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - User - User - apps/client/src/app/components/admin-users/admin-users.html - 29 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Ghostfolio vs comparison table - Ghostfolio vs comparison table apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 - - - Canada - Canada - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 530 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Open Source Wealth Management Software - Open Source Wealth Management Software - apps/client/src/app/pages/i18n/i18n-page.html - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - apps/client/src/app/pages/i18n/i18n-page.html - 9 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Oops, cash balance transfer has failed. - Oops, cash balance transfer has failed. - apps/client/src/app/pages/accounts/accounts-page.component.ts - 305 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Poland - Poland - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 120 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - South Africa - South Africa - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 228 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Extreme Fear - Extreme Fear - libs/ui/src/lib/i18n.ts - 63 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Extreme Greed - Extreme Greed - libs/ui/src/lib/i18n.ts - 64 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Neutral - Neutral - libs/ui/src/lib/i18n.ts - 67 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Oops! Could not parse historical data. - Oops! Could not parse historical data. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 205 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Do you really want to delete this system message? - Do you really want to delete this system message? - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 159 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - 50-Day Trend - 50-Day Trend - libs/ui/src/lib/benchmark/benchmark.component.html - 15 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - 200-Day Trend - 200-Day Trend + + Do you really want to delete this account balance? + Do you really want to delete this account balance? - libs/ui/src/lib/benchmark/benchmark.component.html - 39 + libs/ui/src/lib/account-balances/account-balances.component.ts + 56 diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 76bb8bc58..c107d8b50 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -102,7 +102,7 @@ apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 69 + 73 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -272,6 +272,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 227 + + libs/ui/src/lib/account-balances/account-balances.component.html + 20 + libs/ui/src/lib/activities-table/activities-table.component.html 321 @@ -340,6 +344,10 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html 77 + + libs/ui/src/lib/account-balances/account-balances.component.html + 50 + libs/ui/src/lib/activities-table/activities-table.component.html 529 @@ -488,6 +496,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 136 + + libs/ui/src/lib/account-balances/account-balances.component.html + 11 + libs/ui/src/lib/activities-table/activities-table.component.html 152 @@ -2401,7 +2413,7 @@ apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html - 203 + 204 apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html @@ -8885,191 +8897,191 @@ Notes apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 @@ -9077,191 +9089,191 @@ Effortlessly track, analyze, and visualize your wealth with Ghostfolio. apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 @@ -9269,191 +9281,191 @@ Personal Finance Tools apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 @@ -10193,191 +10205,191 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 26 + 27 @@ -10461,191 +10473,191 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 25 + 26 @@ -10865,191 +10877,191 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/resources-page.component.ts @@ -11856,1828 +11868,2220 @@ 37 - - Starting from / year - Starting from / year + + open-source-alternative-to + open-source-alternative-to + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 22 + + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 13 + + + + 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. + 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 - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 - - Starting from / year - Starting from / year + + Ready to take your investments to the next level? + Ready to take your investments to the next level? apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 - - - - open-source-alternative-to - open-source-alternative-to - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 22 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 13 + 217 - - 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. - 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. + + Get Started + Get Started apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 - - Ready to take your investments to the next level? - Ready to take your investments to the next level? + + Switzerland + Switzerland - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 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 - 216 + 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 - 216 + 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 - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 548 + + + Global + Global - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 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 - 216 + 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 - 216 + 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 - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 549 + + + United States + United States - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 559 + + + Belgium + Belgium - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 167 + + + Germany + Germany - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 361 + + + Austria + Austria - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 238 + + + Italy + Italy - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 372 + + + Netherlands + Netherlands - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 382 + + + Thailand + Thailand - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 394 + + + New Zealand + New Zealand - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 436 + + + Czech Republic + Czech Republic - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 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 - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 484 + + + (Last 24 hours) + (Last 24 hours) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/open/open-page.html + 37 + + + (Last 30 days) + (Last 30 days) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/open/open-page.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/open/open-page.html + 59 + + + (Last 90 days) + (Last 90 days) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/open/open-page.html + 127 - - Get Started - Get Started + + New + New - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/landing/landing-page.html + 7 + + + Choose or drop a file here + Choose or drop a file here - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 85 + + + You are using the Live Demo. + You are using the Live Demo. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/app.component.html + 17 + + + One-time fee, annual account fees + One-time fee, annual account fees - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 27 + + + Distribution of corporate earnings + Distribution of corporate earnings - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 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 + Oops! Could not get the historical exchange rate from - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 198 + + + Fee + Fee - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + libs/ui/src/lib/i18n.ts + 32 + + + Interest + Interest - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 280 + + + Revenue for lending out money + Revenue for lending out money - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 39 + + + Add Tag + Add Tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 11 + + + Do you really want to delete this tag? + Do you really want to delete this tag? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-tag/admin-tag.component.ts + 78 + + + Update tag + Update tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 2 + + + Add tag + Add tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 3 + + + France + France - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 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 - 225 + 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 - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 474 + + + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 100 + + + Currency Cluster Risks + Currency Cluster Risks - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 124 - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + + + Account Cluster Risks + Account Cluster Risks + + apps/client/src/app/pages/portfolio/fire/fire-page.html + 137 + + + Transfer Cash Balance + Transfer Cash Balance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 9 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + Benchmark + Benchmark - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 219 + + + Version + Version - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-overview/admin-overview.html + 7 + + + Settings + Settings - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 + + + From + From - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 + + + To + To - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 29 + + + + Transfer + Transfer + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 66 + + + + Finland + Finland + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 466 + + + + Membership + 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 + + + + Access + 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 + + + + Find holding... + Find holding... + + libs/ui/src/lib/assistant/assistant.component.ts + 89 + + + + No entries... + No entries... + + libs/ui/src/lib/assistant/assistant.html + 63 + + + libs/ui/src/lib/assistant/assistant.html + 84 + + + + Asset Profile + Asset Profile + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31 + + + + Do you really want to delete this asset profile? + Do you really want to delete this asset profile? + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 184 + + + + Search + Search + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + + Add Manually + Add Manually + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. + Ghostfolio est un dashboard de finances personnelles qui permet de suivre vos actifs comme les actions, les ETF ou les crypto-monnaies sur plusieurs plateformes. + + apps/client/src/app/pages/i18n/i18n-page.html + 4 + + + + Last All Time High + Last All Time High + + libs/ui/src/lib/benchmark/benchmark.component.html + 63 + + + + User + User + + apps/client/src/app/components/admin-users/admin-users.html + 29 + + + Ghostfolio vs comparison table + Ghostfolio vs comparison table apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 - - - Switzerland - Switzerland - 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 + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 91 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 507 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - 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 + 48 - - - Global - Global - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 71 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 318 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 439 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 550 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - United States - United States - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 82 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 138 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 148 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 199 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 209 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 219 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 271 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 293 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 304 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 329 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 331 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 341 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 406 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 416 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 426 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 495 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 518 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 + + + Canada + Canada apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 538 + 529 + + + Open Source Wealth Management Software + Open Source Wealth Management Software - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 560 + apps/client/src/app/pages/i18n/i18n-page.html + 13 - - Belgium - Belgium + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 168 + apps/client/src/app/pages/i18n/i18n-page.html + 9 - - Germany - Germany + + Oops, cash balance transfer has failed. + Oops, cash balance transfer has failed. - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 129 + apps/client/src/app/pages/accounts/accounts-page.component.ts + 305 + + + Poland + Poland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 179 + 119 + + + South Africa + South Africa apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 251 + 227 + + + Extreme Fear + Extreme Fear - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 261 + libs/ui/src/lib/i18n.ts + 63 + + + Extreme Greed + Extreme Greed - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 282 + libs/ui/src/lib/i18n.ts + 64 + + + Neutral + Neutral - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 316 + libs/ui/src/lib/i18n.ts + 67 + + + Oops! Could not parse historical data. + Oops! Could not parse historical data. - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 362 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 205 - - Austria - Austria + + Do you really want to delete this system message? + Do you really want to delete this system message? - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 239 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 159 - - Italy - Italy + + 50-Day Trend + 50-Day Trend - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 373 + libs/ui/src/lib/benchmark/benchmark.component.html + 15 - - Netherlands - Netherlands + + 200-Day Trend + 200-Day Trend - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 383 + libs/ui/src/lib/benchmark/benchmark.component.html + 39 - - Thailand - Thailand + + Cash Balances + Cash Balances - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 395 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 88 - - New Zealand - New Zealand + + Starting from + Starting from - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 437 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Czech Republic - Czech Republic - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 448 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 485 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - (Last 24 hours) - (Last 24 hours) - apps/client/src/app/pages/open/open-page.html - 37 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - (Last 30 days) - (Last 30 days) - apps/client/src/app/pages/open/open-page.html - 48 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/open/open-page.html - 59 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - (Last 90 days) - (Last 90 days) - apps/client/src/app/pages/open/open-page.html - 127 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - New - New - apps/client/src/app/pages/landing/landing-page.html - 7 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Choose or drop a file here - Choose or drop a file here - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 85 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - You are using the Live Demo. - You are using the Live Demo. - apps/client/src/app/app.component.html - 17 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - One-time fee, annual account fees - 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 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Distribution of corporate earnings - Distribution of corporate earnings - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 33 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Oops! Could not get the historical exchange rate from - 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 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Fee - Fee - libs/ui/src/lib/i18n.ts - 32 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Interest - Interest - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 280 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Revenue for lending out money - Revenue for lending out money - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 39 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Add Tag - Add Tag - apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Do you really want to delete this tag? - Do you really want to delete this tag? - apps/client/src/app/components/admin-tag/admin-tag.component.ts - 78 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Update tag - Update tag - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 2 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Add tag - Add tag - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 3 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - France - France - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 110 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 459 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 475 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - 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 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Currency Cluster Risks - Currency Cluster Risks - apps/client/src/app/pages/portfolio/fire/fire-page.html - 124 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Account Cluster Risks - Account Cluster Risks - apps/client/src/app/pages/portfolio/fire/fire-page.html - 137 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Transfer Cash Balance - Transfer Cash Balance - apps/client/src/app/components/accounts-table/accounts-table.component.html - 9 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 7 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Benchmark - Benchmark - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 219 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Version - Version - apps/client/src/app/components/admin-overview/admin-overview.html - 7 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Settings - Settings - apps/client/src/app/components/user-account-settings/user-account-settings.html - 2 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - From - From - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 11 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - To - To - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 29 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Transfer - Transfer - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 66 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Finland - Finland - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 467 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Membership - Membership - 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 + 185 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 39 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Access - Access - 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 + 185 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 45 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Find holding... - Find holding... - libs/ui/src/lib/assistant/assistant.component.ts - 89 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - No entries... - No entries... + + year + year - libs/ui/src/lib/assistant/assistant.html - 63 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - libs/ui/src/lib/assistant/assistant.html - 84 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Asset Profile - Asset Profile - apps/client/src/app/components/admin-jobs/admin-jobs.html - 31 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Do you really want to delete this asset profile? - Do you really want to delete this asset profile? - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 184 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Search - Search - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 16 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Add Manually - Add Manually - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 19 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - Ghostfolio est un dashboard de finances personnelles qui permet de suivre vos actifs comme les actions, les ETF ou les crypto-monnaies sur plusieurs plateformes. - apps/client/src/app/pages/i18n/i18n-page.html - 4 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Last All Time High - Last All Time High - libs/ui/src/lib/benchmark/benchmark.component.html - 63 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - User - User - apps/client/src/app/components/admin-users/admin-users.html - 29 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Ghostfolio vs comparison table - Ghostfolio vs comparison table apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 - - - Canada - Canada - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 530 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Open Source Wealth Management Software - Open Source Wealth Management Software - apps/client/src/app/pages/i18n/i18n-page.html - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - apps/client/src/app/pages/i18n/i18n-page.html - 9 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Oops, cash balance transfer has failed. - Oops, cash balance transfer has failed. - apps/client/src/app/pages/accounts/accounts-page.component.ts - 305 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Poland - Poland - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 120 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - South Africa - South Africa - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 228 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Extreme Fear - Extreme Fear - libs/ui/src/lib/i18n.ts - 63 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Extreme Greed - Extreme Greed - libs/ui/src/lib/i18n.ts - 64 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Neutral - Neutral - libs/ui/src/lib/i18n.ts - 67 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Oops! Could not parse historical data. - Oops! Could not parse historical data. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 205 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Do you really want to delete this system message? - Do you really want to delete this system message? - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 159 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - 50-Day Trend - 50-Day Trend - libs/ui/src/lib/benchmark/benchmark.component.html - 15 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - 200-Day Trend - 200-Day Trend + + Do you really want to delete this account balance? + Do you really want to delete this account balance? - libs/ui/src/lib/benchmark/benchmark.component.html - 39 + libs/ui/src/lib/account-balances/account-balances.component.ts + 56 diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 6d434a3b0..fa83ef57a 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -91,7 +91,7 @@ apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 69 + 73 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -221,6 +221,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 227 + + libs/ui/src/lib/account-balances/account-balances.component.html + 20 + libs/ui/src/lib/activities-table/activities-table.component.html 321 @@ -289,6 +293,10 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html 77 + + libs/ui/src/lib/account-balances/account-balances.component.html + 50 + libs/ui/src/lib/activities-table/activities-table.component.html 529 @@ -437,6 +445,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 136 + + libs/ui/src/lib/account-balances/account-balances.component.html + 11 + libs/ui/src/lib/activities-table/activities-table.component.html 152 @@ -1650,7 +1662,7 @@ apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html - 203 + 204 apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html @@ -8886,191 +8898,191 @@ Note apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 @@ -9078,191 +9090,191 @@ Monitora, analizza e visualizza facilmente la tua ricchezza con Ghostfolio. apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 @@ -9270,191 +9282,191 @@ Strumenti di finanza personale apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 @@ -10194,191 +10206,191 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 26 + 27 @@ -10462,191 +10474,191 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 25 + 26 @@ -10866,191 +10878,191 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/resources-page.component.ts @@ -11857,1828 +11869,2220 @@ 37 - - Starting from / year - A partire da / anno + + open-source-alternative-to + alternativa-open-source-a + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 22 + + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 13 + + + + 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. + Nota bene: le informazioni fornite si basano sulle nostre ricerche e analisi indipendenti. Questo sito web non è affiliato con o a qualsiasi altro prodotto citato nel confronto. Poiché il panorama degli strumenti di finanza personale si evolve, è essenziale verificare qualsiasi dettaglio o modifica specifica direttamente nella pagina del prodotto in questione. I dati hanno bisogno di essere aggiornati? Aiutaci a mantenere i dati accurati su GitHub. apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 - - Starting from / year - A partire da / anno + + Ready to take your investments to the next level? + Sei pronto a portare il tuo investimento al livello successivo? apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 - - - - open-source-alternative-to - alternativa-open-source-a - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 22 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 13 + 217 - - 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. - Nota bene: le informazioni fornite si basano sulle nostre ricerche e analisi indipendenti. Questo sito web non è affiliato con o a qualsiasi altro prodotto citato nel confronto. Poiché il panorama degli strumenti di finanza personale si evolve, è essenziale verificare qualsiasi dettaglio o modifica specifica direttamente nella pagina del prodotto in questione. I dati hanno bisogno di essere aggiornati? Aiutaci a mantenere i dati accurati su GitHub. + + Get Started + Inizia apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 - - Ready to take your investments to the next level? - Sei pronto a portare il tuo investimento al livello successivo? + + Switzerland + Svizzera - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 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 - 216 + 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 - 216 + 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 - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 548 + + + Global + Globale - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 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 - 216 + 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 - 216 + 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 - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 549 + + + United States + Stati Uniti - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 559 + + + Belgium + Belgio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 167 + + + Germany + Germania - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 361 + + + Austria + Austria - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 238 + + + Italy + Italia - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 372 + + + Netherlands + Paesi Bassi - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 382 + + + Thailand + Thailandia - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 394 + + + New Zealand + Nuova Zelanda - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 436 + + + Czech Republic + Repubblica Ceca - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 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 - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 484 + + + (Last 24 hours) + (Ultime 24 ore) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/open/open-page.html + 37 + + + (Last 30 days) + (Ultimi 30 giorni) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/open/open-page.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/open/open-page.html + 59 + + + (Last 90 days) + (Ultimi 90 giorni) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/open/open-page.html + 127 - - Get Started - Inizia + + New + Nuovo - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/landing/landing-page.html + 7 + + + Choose or drop a file here + Choose or drop a file here - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 85 + + + You are using the Live Demo. + You are using the Live Demo. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/app.component.html + 17 + + + One-time fee, annual account fees + One-time fee, annual account fees - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 27 + + + Distribution of corporate earnings + Distribution of corporate earnings - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 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 + Oops! Could not get the historical exchange rate from - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 198 + + + Fee + Fee - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + libs/ui/src/lib/i18n.ts + 32 + + + Interest + Interest - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 280 + + + Revenue for lending out money + Revenue for lending out money - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 39 + + + Add Tag + Add Tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 11 + + + Do you really want to delete this tag? + Do you really want to delete this tag? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-tag/admin-tag.component.ts + 78 + + + Update tag + Update tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 2 + + + Add tag + Add tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 3 + + + France + France - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 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 - 225 + 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 - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 474 + + + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 100 + + + Currency Cluster Risks + Currency Cluster Risks - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 124 - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + + + Account Cluster Risks + Account Cluster Risks + + apps/client/src/app/pages/portfolio/fire/fire-page.html + 137 + + + Transfer Cash Balance + Transfer Cash Balance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 9 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + Benchmark + Benchmark - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 219 + + + Version + Version - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-overview/admin-overview.html + 7 + + + Settings + Settings - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 + + + From + From - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 + + + To + To - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 29 + + + + Transfer + Transfer + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 66 + + + + Finland + Finland + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 466 + + + + Membership + 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 + + + + Access + 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 + + + + Find holding... + Find holding... + + libs/ui/src/lib/assistant/assistant.component.ts + 89 + + + + No entries... + No entries... + + libs/ui/src/lib/assistant/assistant.html + 63 + + + libs/ui/src/lib/assistant/assistant.html + 84 + + + + Asset Profile + Asset Profile + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31 + + + + Do you really want to delete this asset profile? + Do you really want to delete this asset profile? + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 184 + + + + Search + Search + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + + Add Manually + Add Manually + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. + Ghostfolio è un dashboard di finanza personale per tenere traccia delle vostre attività come azioni, ETF o criptovalute su più piattaforme. + + apps/client/src/app/pages/i18n/i18n-page.html + 4 + + + + Last All Time High + Last All Time High + + libs/ui/src/lib/benchmark/benchmark.component.html + 63 + + + + User + User + + apps/client/src/app/components/admin-users/admin-users.html + 29 + + + Ghostfolio vs comparison table + Ghostfolio vs comparison table apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 - - - Switzerland - Svizzera - 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 + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 91 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 507 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - 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 + 48 - - - Global - Globale - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 71 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 318 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 439 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 550 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - United States - Stati Uniti - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 82 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 138 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 148 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 199 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 209 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 219 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 271 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 293 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 304 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 329 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 331 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 341 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 406 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 416 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 426 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 495 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 518 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 + + + Canada + Canada apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 538 + 529 + + + Open Source Wealth Management Software + Open Source Wealth Management Software - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 560 + apps/client/src/app/pages/i18n/i18n-page.html + 13 - - Belgium - Belgio + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 168 + apps/client/src/app/pages/i18n/i18n-page.html + 9 - - Germany - Germania + + Oops, cash balance transfer has failed. + Oops, cash balance transfer has failed. - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 129 + apps/client/src/app/pages/accounts/accounts-page.component.ts + 305 + + + Poland + Poland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 179 + 119 + + + South Africa + South Africa apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 251 + 227 + + + Extreme Fear + Extreme Fear - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 261 + libs/ui/src/lib/i18n.ts + 63 + + + Extreme Greed + Extreme Greed - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 282 + libs/ui/src/lib/i18n.ts + 64 + + + Neutral + Neutral - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 316 + libs/ui/src/lib/i18n.ts + 67 + + + Oops! Could not parse historical data. + Oops! Could not parse historical data. - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 362 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 205 - - Austria - Austria + + Do you really want to delete this system message? + Do you really want to delete this system message? - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 239 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 159 - - Italy - Italia + + 50-Day Trend + 50-Day Trend - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 373 + libs/ui/src/lib/benchmark/benchmark.component.html + 15 - - Netherlands - Paesi Bassi + + 200-Day Trend + 200-Day Trend - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 383 + libs/ui/src/lib/benchmark/benchmark.component.html + 39 - - Thailand - Thailandia + + Cash Balances + Cash Balances - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 395 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 88 - - New Zealand - Nuova Zelanda + + Starting from + Starting from - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 437 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Czech Republic - Repubblica Ceca - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 448 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 485 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - (Last 24 hours) - (Ultime 24 ore) - apps/client/src/app/pages/open/open-page.html - 37 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - (Last 30 days) - (Ultimi 30 giorni) - apps/client/src/app/pages/open/open-page.html - 48 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/open/open-page.html - 59 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - (Last 90 days) - (Ultimi 90 giorni) - apps/client/src/app/pages/open/open-page.html - 127 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - New - Nuovo - apps/client/src/app/pages/landing/landing-page.html - 7 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Choose or drop a file here - Choose or drop a file here - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 85 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - You are using the Live Demo. - You are using the Live Demo. - apps/client/src/app/app.component.html - 17 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - One-time fee, annual account fees - 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 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Distribution of corporate earnings - Distribution of corporate earnings - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 33 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Oops! Could not get the historical exchange rate from - 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 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Fee - Fee - libs/ui/src/lib/i18n.ts - 32 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Interest - Interest - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 280 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Revenue for lending out money - Revenue for lending out money - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 39 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Add Tag - Add Tag - apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Do you really want to delete this tag? - Do you really want to delete this tag? - apps/client/src/app/components/admin-tag/admin-tag.component.ts - 78 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Update tag - Update tag - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 2 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Add tag - Add tag - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 3 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - France - France - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 110 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 459 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 475 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - 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 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Currency Cluster Risks - Currency Cluster Risks - apps/client/src/app/pages/portfolio/fire/fire-page.html - 124 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Account Cluster Risks - Account Cluster Risks - apps/client/src/app/pages/portfolio/fire/fire-page.html - 137 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Transfer Cash Balance - Transfer Cash Balance - apps/client/src/app/components/accounts-table/accounts-table.component.html - 9 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 7 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Benchmark - Benchmark - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 219 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Version - Version - apps/client/src/app/components/admin-overview/admin-overview.html - 7 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Settings - Settings - apps/client/src/app/components/user-account-settings/user-account-settings.html - 2 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - From - From - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 11 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - To - To - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 29 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Transfer - Transfer - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 66 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Finland - Finland - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 467 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Membership - Membership - 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 + 185 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 39 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Access - Access - 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 + 185 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 45 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Find holding... - Find holding... - libs/ui/src/lib/assistant/assistant.component.ts - 89 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - No entries... - No entries... + + year + year - libs/ui/src/lib/assistant/assistant.html - 63 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - libs/ui/src/lib/assistant/assistant.html - 84 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Asset Profile - Asset Profile - apps/client/src/app/components/admin-jobs/admin-jobs.html - 31 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Do you really want to delete this asset profile? - Do you really want to delete this asset profile? - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 184 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Search - Search - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 16 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Add Manually - Add Manually - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 19 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - Ghostfolio è un dashboard di finanza personale per tenere traccia delle vostre attività come azioni, ETF o criptovalute su più piattaforme. - apps/client/src/app/pages/i18n/i18n-page.html - 4 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Last All Time High - Last All Time High - libs/ui/src/lib/benchmark/benchmark.component.html - 63 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - User - User - apps/client/src/app/components/admin-users/admin-users.html - 29 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Ghostfolio vs comparison table - Ghostfolio vs comparison table apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 - - - Canada - Canada - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 530 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Open Source Wealth Management Software - Open Source Wealth Management Software - apps/client/src/app/pages/i18n/i18n-page.html - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - apps/client/src/app/pages/i18n/i18n-page.html - 9 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Oops, cash balance transfer has failed. - Oops, cash balance transfer has failed. - apps/client/src/app/pages/accounts/accounts-page.component.ts - 305 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Poland - Poland - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 120 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - South Africa - South Africa - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 228 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Extreme Fear - Extreme Fear - libs/ui/src/lib/i18n.ts - 63 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Extreme Greed - Extreme Greed - libs/ui/src/lib/i18n.ts - 64 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Neutral - Neutral - libs/ui/src/lib/i18n.ts - 67 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Oops! Could not parse historical data. - Oops! Could not parse historical data. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 205 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Do you really want to delete this system message? - Do you really want to delete this system message? - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 159 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - 50-Day Trend - 50-Day Trend - libs/ui/src/lib/benchmark/benchmark.component.html - 15 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - 200-Day Trend - 200-Day Trend + + Do you really want to delete this account balance? + Do you really want to delete this account balance? - libs/ui/src/lib/benchmark/benchmark.component.html - 39 + libs/ui/src/lib/account-balances/account-balances.component.ts + 56 diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 4723717fe..b103891ca 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -90,7 +90,7 @@ apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 69 + 73 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -220,6 +220,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 227 + + libs/ui/src/lib/account-balances/account-balances.component.html + 20 + libs/ui/src/lib/activities-table/activities-table.component.html 321 @@ -288,6 +292,10 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html 77 + + libs/ui/src/lib/account-balances/account-balances.component.html + 50 + libs/ui/src/lib/activities-table/activities-table.component.html 529 @@ -436,6 +444,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 136 + + libs/ui/src/lib/account-balances/account-balances.component.html + 11 + libs/ui/src/lib/activities-table/activities-table.component.html 152 @@ -1649,7 +1661,7 @@ apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html - 203 + 204 apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html @@ -8885,191 +8897,191 @@ Notities apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 @@ -9077,191 +9089,191 @@ Volg, analyseer en visualiseer moeiteloos je vermogen met Ghostfolio. apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 @@ -9269,191 +9281,191 @@ Tools voor persoonlijke financiën apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 @@ -10193,191 +10205,191 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 26 + 27 @@ -10461,191 +10473,191 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 25 + 26 @@ -10865,191 +10877,191 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/resources-page.component.ts @@ -11856,1828 +11868,2220 @@ 37 - - Starting from / year - Vanaf / jaar + + open-source-alternative-to + open-source-alternatief-voor + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 22 + + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 13 + + + + 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. + Houd er rekening mee dat de verstrekte informatie gebaseerd is op ons onafhankelijk onderzoek en analyse. Deze website is niet gelieerd aan of een ander product dat in de vergelijking wordt genoemd. Aangezien het landschap van tools voor persoonlijke financiën evolueert, is het essentieel om specifieke details of wijzigingen rechtstreeks op de betreffende productpagina te controleren. Hebben je gegevens een opfrisbeurt nodig? Help ons nauwkeurige gegevens te onderhouden over GitHub. apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 - - Starting from / year - Vanaf / jaar + + Ready to take your investments to the next level? + Klaar om je investeringen naar een hoger niveau te brengen? apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 - - - - open-source-alternative-to - open-source-alternatief-voor - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 22 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 13 + 217 - - 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. - Houd er rekening mee dat de verstrekte informatie gebaseerd is op ons onafhankelijk onderzoek en analyse. Deze website is niet gelieerd aan of een ander product dat in de vergelijking wordt genoemd. Aangezien het landschap van tools voor persoonlijke financiën evolueert, is het essentieel om specifieke details of wijzigingen rechtstreeks op de betreffende productpagina te controleren. Hebben je gegevens een opfrisbeurt nodig? Help ons nauwkeurige gegevens te onderhouden over GitHub. + + Get Started + Aan de slag apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 - - Ready to take your investments to the next level? - Klaar om je investeringen naar een hoger niveau te brengen? + + Switzerland + Zwitserland - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 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 - 216 + 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 - 216 + 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 - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 548 + + + Global + Wereldwijd - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 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 - 216 + 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 - 216 + 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 - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 549 + + + United States + Verenigde Staten - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 559 + + + Belgium + België - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 167 + + + Germany + Duitsland - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 361 + + + Austria + Oostenrijk - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 238 + + + Italy + Italië - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 372 + + + Netherlands + Nederland - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 382 + + + Thailand + Thailand - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 394 + + + New Zealand + Nieuw-Zeeland - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 436 + + + Czech Republic + Tsjechië - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 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 - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 484 + + + (Last 24 hours) + (Laatste 24 uur) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/open/open-page.html + 37 + + + (Last 30 days) + (Laatste 30 dagen) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/open/open-page.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/open/open-page.html + 59 + + + (Last 90 days) + (Laatste 90 dagen) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/open/open-page.html + 127 - - Get Started - Aan de slag + + New + New - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/landing/landing-page.html + 7 + + + Choose or drop a file here + Choose or drop a file here - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 85 + + + You are using the Live Demo. + You are using the Live Demo. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/app.component.html + 17 + + + One-time fee, annual account fees + One-time fee, annual account fees - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 27 + + + Distribution of corporate earnings + Distribution of corporate earnings - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 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 + Oops! Could not get the historical exchange rate from - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 198 + + + Fee + Fee - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + libs/ui/src/lib/i18n.ts + 32 + + + Interest + Interest - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 280 + + + Revenue for lending out money + Revenue for lending out money - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 39 + + + Add Tag + Add Tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 11 + + + Do you really want to delete this tag? + Do you really want to delete this tag? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-tag/admin-tag.component.ts + 78 + + + Update tag + Update tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 2 + + + Add tag + Add tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 3 + + + France + France - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 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 - 225 + 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 - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 474 + + + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 100 + + + Currency Cluster Risks + Currency Cluster Risks - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 124 - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + + + Account Cluster Risks + Account Cluster Risks + + apps/client/src/app/pages/portfolio/fire/fire-page.html + 137 + + + Transfer Cash Balance + Transfer Cash Balance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 9 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + Benchmark + Benchmark - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 219 + + + Version + Version - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-overview/admin-overview.html + 7 + + + Settings + Settings - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 + + + From + From - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 + + + To + To - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 29 + + + + Transfer + Transfer + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 66 + + + + Finland + Finland + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 466 + + + + Membership + 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 + + + + Access + 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 + + + + Find holding... + Find holding... + + libs/ui/src/lib/assistant/assistant.component.ts + 89 + + + + No entries... + No entries... + + libs/ui/src/lib/assistant/assistant.html + 63 + + + libs/ui/src/lib/assistant/assistant.html + 84 + + + + Asset Profile + Asset Profile + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31 + + + + Do you really want to delete this asset profile? + Do you really want to delete this asset profile? + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 184 + + + + Search + Search + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + + Add Manually + Add Manually + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. + Ghostfolio is een persoonlijk financieel dashboard om uw activa zoals aandelen, ETF’s of cryptocurrencies over meerdere platforms bij te houden. + + apps/client/src/app/pages/i18n/i18n-page.html + 4 + + + + Last All Time High + Last All Time High + + libs/ui/src/lib/benchmark/benchmark.component.html + 63 + + + + User + User + + apps/client/src/app/components/admin-users/admin-users.html + 29 + + + Ghostfolio vs comparison table + Ghostfolio vs comparison table apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 - - - Switzerland - Zwitserland - 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 + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 91 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 507 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - 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 + 48 - - - Global - Wereldwijd - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 71 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 318 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 439 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 550 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - United States - Verenigde Staten - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 82 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 138 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 148 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 199 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 209 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 219 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 271 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 293 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 304 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 329 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 331 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 341 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 406 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 416 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 426 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 495 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 518 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 + + + Canada + Canada apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 538 + 529 + + + Open Source Wealth Management Software + Open Source Wealth Management Software - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 560 + apps/client/src/app/pages/i18n/i18n-page.html + 13 - - Belgium - België + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 168 + apps/client/src/app/pages/i18n/i18n-page.html + 9 - - Germany - Duitsland + + Oops, cash balance transfer has failed. + Oops, cash balance transfer has failed. - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 129 + apps/client/src/app/pages/accounts/accounts-page.component.ts + 305 + + + Poland + Poland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 179 + 119 + + + South Africa + South Africa apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 251 + 227 + + + Extreme Fear + Extreme Fear - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 261 + libs/ui/src/lib/i18n.ts + 63 + + + Extreme Greed + Extreme Greed - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 282 + libs/ui/src/lib/i18n.ts + 64 + + + Neutral + Neutral - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 316 + libs/ui/src/lib/i18n.ts + 67 + + + Oops! Could not parse historical data. + Oops! Could not parse historical data. - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 362 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 205 - - Austria - Oostenrijk + + Do you really want to delete this system message? + Do you really want to delete this system message? - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 239 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 159 - - Italy - Italië + + 50-Day Trend + 50-Day Trend - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 373 + libs/ui/src/lib/benchmark/benchmark.component.html + 15 - - Netherlands - Nederland + + 200-Day Trend + 200-Day Trend - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 383 + libs/ui/src/lib/benchmark/benchmark.component.html + 39 - - Thailand - Thailand + + Cash Balances + Cash Balances - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 395 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 88 - - New Zealand - Nieuw-Zeeland + + Starting from + Starting from - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 437 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Czech Republic - Tsjechië - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 448 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 485 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - (Last 24 hours) - (Laatste 24 uur) - apps/client/src/app/pages/open/open-page.html - 37 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - (Last 30 days) - (Laatste 30 dagen) - apps/client/src/app/pages/open/open-page.html - 48 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/open/open-page.html - 59 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - (Last 90 days) - (Laatste 90 dagen) - apps/client/src/app/pages/open/open-page.html - 127 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - New - New - apps/client/src/app/pages/landing/landing-page.html - 7 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Choose or drop a file here - Choose or drop a file here - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 85 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - You are using the Live Demo. - You are using the Live Demo. - apps/client/src/app/app.component.html - 17 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - One-time fee, annual account fees - 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 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Distribution of corporate earnings - Distribution of corporate earnings - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 33 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Oops! Could not get the historical exchange rate from - 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 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Fee - Fee - libs/ui/src/lib/i18n.ts - 32 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Interest - Interest - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 280 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Revenue for lending out money - Revenue for lending out money - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 39 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Add Tag - Add Tag - apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Do you really want to delete this tag? - Do you really want to delete this tag? - apps/client/src/app/components/admin-tag/admin-tag.component.ts - 78 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Update tag - Update tag - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 2 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Add tag - Add tag - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 3 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - France - France - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 110 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 459 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 475 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - 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 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Currency Cluster Risks - Currency Cluster Risks - apps/client/src/app/pages/portfolio/fire/fire-page.html - 124 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Account Cluster Risks - Account Cluster Risks - apps/client/src/app/pages/portfolio/fire/fire-page.html - 137 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Transfer Cash Balance - Transfer Cash Balance - apps/client/src/app/components/accounts-table/accounts-table.component.html - 9 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 7 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Benchmark - Benchmark - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 219 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Version - Version - apps/client/src/app/components/admin-overview/admin-overview.html - 7 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Settings - Settings - apps/client/src/app/components/user-account-settings/user-account-settings.html - 2 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - From - From - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 11 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - To - To - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 29 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Transfer - Transfer - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 66 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Finland - Finland - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 467 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Membership - Membership - 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 + 185 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 39 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Access - Access - 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 + 185 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 45 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Find holding... - Find holding... - libs/ui/src/lib/assistant/assistant.component.ts - 89 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - No entries... - No entries... + + year + year - libs/ui/src/lib/assistant/assistant.html - 63 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - libs/ui/src/lib/assistant/assistant.html - 84 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Asset Profile - Asset Profile - apps/client/src/app/components/admin-jobs/admin-jobs.html - 31 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Do you really want to delete this asset profile? - Do you really want to delete this asset profile? - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 184 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Search - Search - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 16 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Add Manually - Add Manually - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 19 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - Ghostfolio is een persoonlijk financieel dashboard om uw activa zoals aandelen, ETF’s of cryptocurrencies over meerdere platforms bij te houden. - apps/client/src/app/pages/i18n/i18n-page.html - 4 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Last All Time High - Last All Time High - libs/ui/src/lib/benchmark/benchmark.component.html - 63 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - User - User - apps/client/src/app/components/admin-users/admin-users.html - 29 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Ghostfolio vs comparison table - Ghostfolio vs comparison table apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 - - - Canada - Canada - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 530 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Open Source Wealth Management Software - Open Source Wealth Management Software - apps/client/src/app/pages/i18n/i18n-page.html - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - apps/client/src/app/pages/i18n/i18n-page.html - 9 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Oops, cash balance transfer has failed. - Oops, cash balance transfer has failed. - apps/client/src/app/pages/accounts/accounts-page.component.ts - 305 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Poland - Poland - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 120 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - South Africa - South Africa - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 228 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Extreme Fear - Extreme Fear - libs/ui/src/lib/i18n.ts - 63 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Extreme Greed - Extreme Greed - libs/ui/src/lib/i18n.ts - 64 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Neutral - Neutral - libs/ui/src/lib/i18n.ts - 67 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Oops! Could not parse historical data. - Oops! Could not parse historical data. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 205 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Do you really want to delete this system message? - Do you really want to delete this system message? - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 159 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - 50-Day Trend - 50-Day Trend - libs/ui/src/lib/benchmark/benchmark.component.html - 15 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - 200-Day Trend - 200-Day Trend + + Do you really want to delete this account balance? + Do you really want to delete this account balance? - libs/ui/src/lib/benchmark/benchmark.component.html - 39 + libs/ui/src/lib/account-balances/account-balances.component.ts + 56 diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index 7211c04ab..3971bd557 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -82,191 +82,191 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 25 + 26 @@ -346,191 +346,191 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 26 + 27 @@ -750,191 +750,191 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/resources-page.component.ts @@ -1038,7 +1038,7 @@ apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html - 203 + 204 apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html @@ -1534,7 +1534,7 @@ apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 69 + 73 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -1716,6 +1716,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 227 + + libs/ui/src/lib/account-balances/account-balances.component.html + 20 + libs/ui/src/lib/activities-table/activities-table.component.html 321 @@ -1784,6 +1788,10 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html 77 + + libs/ui/src/lib/account-balances/account-balances.component.html + 50 + libs/ui/src/lib/activities-table/activities-table.component.html 529 @@ -1932,6 +1940,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 136 + + libs/ui/src/lib/account-balances/account-balances.component.html + 11 + libs/ui/src/lib/activities-table/activities-table.component.html 152 @@ -11115,2572 +11127,2964 @@ 164 - - Starting from / year - Starting from / year + + Notes + Notes apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 - - Starting from / year - Starting from / year + + 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. + 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 - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 - - Notes - Notes + + Ready to take your investments to the next level? + Ready to take your investments to the next level? apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 - - 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. - 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. + + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 - - Ready to take your investments to the next level? - Ready to take your investments to the next level? + + Get Started + Get Started apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 - - Effortlessly track, analyze, and visualize your wealth with Ghostfolio. - Effortlessly track, analyze, and visualize your wealth with Ghostfolio. + + Personal Finance Tools + Personal Finance Tools apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 - - Get Started - Get Started + + Switzerland + Switzerland - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 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 - 225 + 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 - 225 + 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 - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 548 + + + Global + Global - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 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 - 225 + 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 - 225 + 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 - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 549 + + + United States + United States - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 559 + + + France + France - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 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 - 225 + 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 - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 474 + + + Poland + Poland - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 119 + + + Germany + Germany - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 361 + + + Belgium + Belgium - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 167 + + + South Africa + South Africa - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 227 + + + Austria + Austria - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 238 + + + Italy + Italy - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 372 + + + Netherlands + Netherlands - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 382 + + + Thailand + Thailand - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 394 + + + New Zealand + New Zealand - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 436 - - Personal Finance Tools - Personal Finance Tools + + Czech Republic + Czech Republic - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 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 - 301 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 484 + + + Finland + Finland - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 466 + + + Canada + Canada - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 529 + + + Resources + Resources - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/pages/resources/resources-page-routing.module.ts + 12 + + + Guides + Guides - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/pages/resources/resources-page.html + 5 + + + Glossary + Glossary - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/pages/resources/resources-page.html + 75 + + + Membership + Membership - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 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 - 301 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 39 + + + Access + Access - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 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 - 301 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 45 + + + My Ghostfolio + My Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 32 + + + Oops, authentication has failed. + Oops, authentication has failed. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/pages/webauthn/webauthn-page.html + 18 + + + Try again + Try again - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/pages/webauthn/webauthn-page.html + 26 + + + Go back to Home Page + Go back to Home Page - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/pages/webauthn/webauthn-page.html + 30 + + + Import Activities + Import Activities - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/activities-table/activities-table.component.html + 16 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/activities-table/activities-table.component.html + 453 + + + Import Dividends + Import Dividends - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/activities-table/activities-table.component.html + 35 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/activities-table/activities-table.component.html + 464 + + + Export Activities + Export Activities - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/activities-table/activities-table.component.html + 47 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/activities-table/activities-table.component.html + 476 + + + Export Drafts as ICS + Export Drafts as ICS - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/activities-table/activities-table.component.html + 59 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/activities-table/activities-table.component.html + 488 + + + Delete all Activities + Delete all Activities - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/activities-table/activities-table.component.html + 69 + + + Draft + Draft - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/activities-table/activities-table.component.html + 189 + + + Clone + Clone - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/activities-table/activities-table.component.html + 513 + + + Export Draft as ICS + Export Draft as ICS - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/activities-table/activities-table.component.html + 523 + + + Do you really want to delete this activity? + Do you really want to delete this activity? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/activities-table/activities-table.component.ts + 227 + + + Filter by account, currency, symbol or type... + Filter by account, currency, symbol or type... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/activities-table/activities-table.component.ts + 427 + + + Find holding... + Find holding... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/assistant/assistant.component.ts + 89 + + + No entries... + No entries... - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/assistant/assistant.html + 63 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/assistant/assistant.html + 84 + + + Asset Profiles + Asset Profiles - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/assistant/assistant.html + 67 + + + Index + Index - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/benchmark/benchmark.component.html + 3 + + + Last All Time High + Last All Time High - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/benchmark/benchmark.component.html + 63 + + + Change from All Time High + Change from All Time High - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/benchmark/benchmark.component.html + 79 + + + from ATH + from ATH - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/benchmark/benchmark.component.html + 81 + + + Market data provided by + Market data provided by - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html + 2 + + + Savings Rate per Month + Savings Rate per Month - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 10 + + + Annual Interest Rate + Annual Interest Rate - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 21 + + + Retirement Date + Retirement Date - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 32 + + + Projected Total Amount + Projected Total Amount - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 60 + + + Interest + Interest - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 341 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/i18n.ts + 33 + + + Savings + Savings - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 351 + + + Allocation + Allocation - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 98 - - Switzerland - Switzerland + + Show all + Show all - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 69 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 172 + + + Account + Account - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 91 + libs/ui/src/lib/i18n.ts + 4 + + + Asia-Pacific + Asia-Pacific - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 507 + libs/ui/src/lib/i18n.ts + 5 + + + Asset Class + Asset Class - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 549 + libs/ui/src/lib/i18n.ts + 6 - - Global - Global + + Asset Sub Class + Asset Sub Class - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 71 + libs/ui/src/lib/i18n.ts + 7 + + + Core + Core - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 318 + libs/ui/src/lib/i18n.ts + 8 + + + Switch to Ghostfolio Premium or Ghostfolio Open Source easily + Switch to Ghostfolio Premium or Ghostfolio Open Source easily - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 439 + libs/ui/src/lib/i18n.ts + 9 + + + Switch to Ghostfolio Premium easily + Switch to Ghostfolio Premium easily - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 550 + libs/ui/src/lib/i18n.ts + 10 - - United States - United States + + Switch to Ghostfolio Open Source or Ghostfolio Basic easily + Switch to Ghostfolio Open Source or Ghostfolio Basic easily - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 82 + libs/ui/src/lib/i18n.ts + 11 + + + Emergency Fund + Emergency Fund - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 138 + libs/ui/src/lib/i18n.ts + 12 + + + Grant + Grant - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 148 + libs/ui/src/lib/i18n.ts + 13 + + + Higher Risk + Higher Risk - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 190 + libs/ui/src/lib/i18n.ts + 14 + + + This activity already exists. + This activity already exists. - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 199 + libs/ui/src/lib/i18n.ts + 15 + + + Japan + Japan - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 209 + libs/ui/src/lib/i18n.ts + 16 + + + Lower Risk + Lower Risk - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 219 + libs/ui/src/lib/i18n.ts + 17 + + + Month + Month - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 271 + libs/ui/src/lib/i18n.ts + 18 + + + Months + Months - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 293 + libs/ui/src/lib/i18n.ts + 19 + + + Other + Other - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 304 + libs/ui/src/lib/i18n.ts + 20 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 329 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 384 + + + Preset + Preset - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 331 + libs/ui/src/lib/i18n.ts + 21 + + + Retirement Provision + Retirement Provision - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 341 + libs/ui/src/lib/i18n.ts + 22 + + + Satellite + Satellite - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 406 + libs/ui/src/lib/i18n.ts + 23 + + + Symbol + Symbol - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 416 + libs/ui/src/lib/i18n.ts + 24 + + + Tag + Tag - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 426 + libs/ui/src/lib/i18n.ts + 25 + + + Year + Year - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 495 + libs/ui/src/lib/i18n.ts + 26 + + + Years + Years - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 518 + libs/ui/src/lib/i18n.ts + 27 + + + Buy + Buy - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 538 + libs/ui/src/lib/i18n.ts + 30 + + + Fee + Fee - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 560 + libs/ui/src/lib/i18n.ts + 32 - - France - France + + Valuable + Valuable - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 110 + libs/ui/src/lib/i18n.ts + 34 + + + Liability + Liability - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 459 + libs/ui/src/lib/i18n.ts + 35 + + + Sell + Sell - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 475 + libs/ui/src/lib/i18n.ts + 36 - - Poland - Poland + + Cash + Cash - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 120 + libs/ui/src/lib/i18n.ts + 39 - - Germany - Germany + + Commodity + Commodity - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 129 + libs/ui/src/lib/i18n.ts + 40 + + + Equity + Equity - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 179 + libs/ui/src/lib/i18n.ts + 41 + + + Fixed Income + Fixed Income - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 251 + libs/ui/src/lib/i18n.ts + 42 + + + Real Estate + Real Estate - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 261 + libs/ui/src/lib/i18n.ts + 43 + + + Bond + Bond - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 282 + libs/ui/src/lib/i18n.ts + 46 + + + Cryptocurrency + Cryptocurrency - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 316 + libs/ui/src/lib/i18n.ts + 47 + + + ETF + ETF - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 362 + libs/ui/src/lib/i18n.ts + 48 - - Belgium - Belgium + + Mutual Fund + Mutual Fund - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 168 + libs/ui/src/lib/i18n.ts + 49 - - South Africa - South Africa + + Precious Metal + Precious Metal - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 228 + libs/ui/src/lib/i18n.ts + 50 - - Austria - Austria + + Private Equity + Private Equity - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 239 + libs/ui/src/lib/i18n.ts + 51 - - Italy - Italy + + Stock + Stock - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 373 + libs/ui/src/lib/i18n.ts + 52 - - Netherlands - Netherlands + + Africa + Africa - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 383 + libs/ui/src/lib/i18n.ts + 55 - - Thailand - Thailand + + Asia + Asia - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 395 + libs/ui/src/lib/i18n.ts + 56 - - New Zealand - New Zealand + + Europe + Europe - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 437 + libs/ui/src/lib/i18n.ts + 57 - - Czech Republic - Czech Republic - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 448 - + + North America + North America - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 485 + libs/ui/src/lib/i18n.ts + 58 - - Finland - Finland + + Oceania + Oceania - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 467 + libs/ui/src/lib/i18n.ts + 59 - - Canada - Canada + + South America + South America - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 530 + libs/ui/src/lib/i18n.ts + 60 - - Resources - Resources + + Extreme Fear + Extreme Fear - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 12 + libs/ui/src/lib/i18n.ts + 63 - - Guides - Guides + + Extreme Greed + Extreme Greed - apps/client/src/app/pages/resources/resources-page.html - 5 + libs/ui/src/lib/i18n.ts + 64 - - Glossary - Glossary + + Neutral + Neutral - apps/client/src/app/pages/resources/resources-page.html - 75 + libs/ui/src/lib/i18n.ts + 67 - + Membership Membership - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + libs/ui/src/lib/membership-card/membership-card.component.html + 18 + + + + Valid until + Valid until + + libs/ui/src/lib/membership-card/membership-card.component.html 22 + + + Time to add your first activity. + Time to add your first activity. - apps/client/src/app/pages/user-account/user-account-page.component.ts - 39 + libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html + 12 - - Access - Access + + No data available + No data available - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 27 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 386 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 45 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 399 - - My Ghostfolio - My Ghostfolio + + 50-Day Trend + 50-Day Trend - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 32 + libs/ui/src/lib/benchmark/benchmark.component.html + 15 - - Oops, authentication has failed. - Oops, authentication has failed. + + 200-Day Trend + 200-Day Trend - apps/client/src/app/pages/webauthn/webauthn-page.html - 18 + libs/ui/src/lib/benchmark/benchmark.component.html + 39 - - Try again - Try again + + Cash Balances + Cash Balances - apps/client/src/app/pages/webauthn/webauthn-page.html - 26 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 88 - - Go back to Home Page - Go back to Home Page + + Starting from + Starting from - apps/client/src/app/pages/webauthn/webauthn-page.html - 30 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Import Activities - 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 + 185 - libs/ui/src/lib/activities-table/activities-table.component.html - 453 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Import Dividends - 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 + 185 - libs/ui/src/lib/activities-table/activities-table.component.html - 464 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Export Activities - 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 + 185 - libs/ui/src/lib/activities-table/activities-table.component.html - 476 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Export Drafts as ICS - 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 + 185 - libs/ui/src/lib/activities-table/activities-table.component.html - 488 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Delete all Activities - 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 + 185 - - - Draft - 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 + 185 - - - Clone - 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 + 185 - - - Export Draft as ICS - 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 + 185 - - - Do you really want to delete this activity? - Do you really want to delete this activity? - libs/ui/src/lib/activities-table/activities-table.component.ts - 227 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Filter by account, currency, symbol or type... - 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 + 185 - - - Find holding... - Find holding... - libs/ui/src/lib/assistant/assistant.component.ts - 89 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - No entries... - No entries... - 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 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Asset Profiles - Asset Profiles - libs/ui/src/lib/assistant/assistant.html - 67 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Index - Index - libs/ui/src/lib/benchmark/benchmark.component.html - 3 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Last All Time High - Last All Time High - libs/ui/src/lib/benchmark/benchmark.component.html - 63 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Change from All Time High - 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 + 185 - - - from ATH - from ATH - libs/ui/src/lib/benchmark/benchmark.component.html - 81 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Market data provided by - 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 + 185 - - - Savings Rate per Month - 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 + 185 - - - Annual Interest Rate - 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 + 185 - - - Retirement Date - 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 + 185 - - - Projected Total Amount - 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 + 185 - - - Interest - 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 + 185 - libs/ui/src/lib/i18n.ts - 33 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Savings - 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 + 185 - - - Allocation - 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 + 185 - - - Show all - 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 + 185 - - - Account - Account - libs/ui/src/lib/i18n.ts - 4 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Asia-Pacific - Asia-Pacific - libs/ui/src/lib/i18n.ts - 5 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Asset Class - Asset Class - libs/ui/src/lib/i18n.ts - 6 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Asset Sub Class - Asset Sub Class - libs/ui/src/lib/i18n.ts - 7 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Core - Core - libs/ui/src/lib/i18n.ts - 8 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Switch to Ghostfolio Premium or Ghostfolio Open Source easily - 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 + 185 - - - Switch to Ghostfolio Premium easily - 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 + 185 - - - Switch to Ghostfolio Open Source or Ghostfolio Basic easily - 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 + 185 - - - Emergency Fund - Emergency Fund - libs/ui/src/lib/i18n.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Grant - Grant - libs/ui/src/lib/i18n.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Higher Risk - Higher Risk - libs/ui/src/lib/i18n.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - This activity already exists. - This activity already exists. - libs/ui/src/lib/i18n.ts - 15 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Japan - Japan - libs/ui/src/lib/i18n.ts - 16 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Lower Risk - Lower Risk - libs/ui/src/lib/i18n.ts - 17 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Month - Month - libs/ui/src/lib/i18n.ts - 18 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - - Months - Months - libs/ui/src/lib/i18n.ts - 19 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - - Other - Other - 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 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - - Preset - Preset - libs/ui/src/lib/i18n.ts - 21 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - - Retirement Provision - Retirement Provision - libs/ui/src/lib/i18n.ts - 22 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - - Satellite - Satellite - libs/ui/src/lib/i18n.ts - 23 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - - Symbol - Symbol - libs/ui/src/lib/i18n.ts - 24 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - - Tag - Tag - libs/ui/src/lib/i18n.ts - 25 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - - Year - Year - libs/ui/src/lib/i18n.ts - 26 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - - Years - Years - libs/ui/src/lib/i18n.ts - 27 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - Buy - Buy + + year + year + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + - libs/ui/src/lib/i18n.ts - 30 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Fee - Fee - libs/ui/src/lib/i18n.ts - 32 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Valuable - Valuable - libs/ui/src/lib/i18n.ts - 34 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Liability - Liability - libs/ui/src/lib/i18n.ts - 35 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Sell - Sell - libs/ui/src/lib/i18n.ts - 36 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Cash - Cash - libs/ui/src/lib/i18n.ts - 39 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Commodity - Commodity - libs/ui/src/lib/i18n.ts - 40 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Equity - Equity - libs/ui/src/lib/i18n.ts - 41 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Fixed Income - Fixed Income - libs/ui/src/lib/i18n.ts - 42 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Real Estate - Real Estate - libs/ui/src/lib/i18n.ts - 43 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Bond - Bond - libs/ui/src/lib/i18n.ts - 46 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Cryptocurrency - Cryptocurrency - libs/ui/src/lib/i18n.ts - 47 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - ETF - ETF - libs/ui/src/lib/i18n.ts - 48 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Mutual Fund - Mutual Fund - libs/ui/src/lib/i18n.ts - 49 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Precious Metal - Precious Metal - libs/ui/src/lib/i18n.ts - 50 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Private Equity - Private Equity - libs/ui/src/lib/i18n.ts - 51 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Stock - Stock - libs/ui/src/lib/i18n.ts - 52 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Africa - Africa - libs/ui/src/lib/i18n.ts - 55 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Asia - Asia - libs/ui/src/lib/i18n.ts - 56 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Europe - Europe - libs/ui/src/lib/i18n.ts - 57 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - North America - North America - libs/ui/src/lib/i18n.ts - 58 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Oceania - Oceania - libs/ui/src/lib/i18n.ts - 59 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - South America - South America - libs/ui/src/lib/i18n.ts - 60 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Extreme Fear - Extreme Fear - libs/ui/src/lib/i18n.ts - 63 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Extreme Greed - Extreme Greed - libs/ui/src/lib/i18n.ts - 64 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Neutral - Neutral - libs/ui/src/lib/i18n.ts - 67 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Membership - 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 + 191 - - - Valid until - 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 + 191 - - - Time to add your first activity. - Time to add your first activity. - libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - No data available - No data available - 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 + 191 - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 399 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - 50-Day Trend - 50-Day Trend - libs/ui/src/lib/benchmark/benchmark.component.html - 15 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - 200-Day Trend - 200-Day Trend + + Do you really want to delete this account balance? + Do you really want to delete this account balance? - libs/ui/src/lib/benchmark/benchmark.component.html - 39 + libs/ui/src/lib/account-balances/account-balances.component.ts + 56 diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 6b0e450a3..2c358c8cd 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -102,7 +102,7 @@ apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 69 + 73 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -272,6 +272,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 227 + + libs/ui/src/lib/account-balances/account-balances.component.html + 20 + libs/ui/src/lib/activities-table/activities-table.component.html 321 @@ -340,6 +344,10 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html 77 + + libs/ui/src/lib/account-balances/account-balances.component.html + 50 + libs/ui/src/lib/activities-table/activities-table.component.html 529 @@ -488,6 +496,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 136 + + libs/ui/src/lib/account-balances/account-balances.component.html + 11 + libs/ui/src/lib/activities-table/activities-table.component.html 152 @@ -2321,7 +2333,7 @@ apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html - 203 + 204 apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html @@ -8885,191 +8897,191 @@ Notes apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 196 @@ -9077,191 +9089,191 @@ Effortlessly track, analyze, and visualize your wealth with Ghostfolio. apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 221 @@ -9269,191 +9281,191 @@ Personal Finance Tools apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 302 @@ -10193,191 +10205,191 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 26 + 27 @@ -10461,191 +10473,191 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 25 + 26 @@ -10865,191 +10877,191 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/resources-page.component.ts @@ -11856,1828 +11868,2220 @@ 37 - - Starting from / year - Starting from / year + + open-source-alternative-to + open-source-alternative-to + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts + 22 + + + apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts + 13 + + + + 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. + 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 - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 204 - - Starting from / year - Starting from / year + + Ready to take your investments to the next level? + Ready to take your investments to the next level? apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 - - - - open-source-alternative-to - open-source-alternative-to - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page-routing.module.ts - 22 - - - apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts - 13 + 217 - - 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. - 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. + + Get Started + Get Started apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 226 - - Ready to take your investments to the next level? - Ready to take your investments to the next level? + + Switzerland + Switzerland - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 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 - 216 + 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 - 216 + 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 - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 548 + + + Global + Global - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 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 - 216 + 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 - 216 + 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 - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 549 + + + United States + United States - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 559 + + + Belgium + Belgium - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 167 + + + Germany + Germany - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + 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 - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 361 + + + Austria + Austria - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 238 + + + Italy + Italy - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 372 + + + Netherlands + Netherlands - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 382 + + + Thailand + Thailand - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 394 + + + New Zealand + New Zealand - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 436 + + + Czech Republic + Czech Republic - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 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 - 216 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 484 + + + (Last 24 hours) + (Last 24 hours) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/open/open-page.html + 37 + + + (Last 30 days) + (Last 30 days) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/open/open-page.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/open/open-page.html + 59 + + + (Last 90 days) + (Last 90 days) - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + apps/client/src/app/pages/open/open-page.html + 127 - - Get Started - Get Started + + New + New - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/landing/landing-page.html + 7 + + + Choose or drop a file here + Choose or drop a file here - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 85 + + + You are using the Live Demo. + You are using the Live Demo. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/app.component.html + 17 + + + One-time fee, annual account fees + One-time fee, annual account fees - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 27 + + + Distribution of corporate earnings + Distribution of corporate earnings - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 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 + Oops! Could not get the historical exchange rate from - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 198 + + + Fee + Fee - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + libs/ui/src/lib/i18n.ts + 32 + + + Interest + Interest - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 280 + + + Revenue for lending out money + Revenue for lending out money - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 39 + + + Add Tag + Add Tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 11 + + + Do you really want to delete this tag? + Do you really want to delete this tag? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-tag/admin-tag.component.ts + 78 + + + Update tag + Update tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 2 + + + Add tag + Add tag - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 3 + + + France + France - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 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 - 225 + 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 - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 474 + + + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 100 + + + Currency Cluster Risks + Currency Cluster Risks - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 124 - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + + + Account Cluster Risks + Account Cluster Risks + + apps/client/src/app/pages/portfolio/fire/fire-page.html + 137 + + + Transfer Cash Balance + Transfer Cash Balance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 9 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 + + + Benchmark + Benchmark - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 219 + + + Version + Version - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/admin-overview/admin-overview.html + 7 + + + Settings + Settings - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 + + + From + From - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 + + + To + To - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 29 + + + + Transfer + Transfer + + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 66 + + + + Finland + Finland + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 466 + + + + Membership + 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 + + + + Access + 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 + + + + Find holding... + Find holding... + + libs/ui/src/lib/assistant/assistant.component.ts + 89 + + + + No entries... + No entries... + + libs/ui/src/lib/assistant/assistant.html + 63 + + + libs/ui/src/lib/assistant/assistant.html + 84 + + + + Asset Profile + Asset Profile + + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31 + + + + Do you really want to delete this asset profile? + Do you really want to delete this asset profile? + + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 184 + + + + Search + Search + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 + + + + Add Manually + Add Manually + + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 + + + + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. + Ghostfolio é um dashboard de finanças pessoais para acompanhar os seus activos como acções, ETFs ou criptomoedas em múltiplas plataformas. + + apps/client/src/app/pages/i18n/i18n-page.html + 4 + + + + Last All Time High + Last All Time High + + libs/ui/src/lib/benchmark/benchmark.component.html + 63 + + + + User + User + + apps/client/src/app/components/admin-users/admin-users.html + 29 + + + Ghostfolio vs comparison table + Ghostfolio vs comparison table apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 48 - - - Switzerland - Switzerland - 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 + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 91 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 507 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - 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 + 48 - - - Global - Global - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 71 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 318 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 439 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 550 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - United States - United States - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 82 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 138 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 148 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 190 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 199 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 209 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 219 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 271 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 293 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 304 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 329 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 331 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 341 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 406 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 416 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 426 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 495 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 518 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 + + + Canada + Canada apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 538 + 529 + + + Open Source Wealth Management Software + Open Source Wealth Management Software - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 560 + apps/client/src/app/pages/i18n/i18n-page.html + 13 - - Belgium - Belgium + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 168 + apps/client/src/app/pages/i18n/i18n-page.html + 9 - - Germany - Germany + + Oops, cash balance transfer has failed. + Oops, cash balance transfer has failed. - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 129 + apps/client/src/app/pages/accounts/accounts-page.component.ts + 305 + + + Poland + Poland apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 179 + 119 + + + South Africa + South Africa apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 251 + 227 + + + Extreme Fear + Extreme Fear - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 261 + libs/ui/src/lib/i18n.ts + 63 + + + Extreme Greed + Extreme Greed - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 282 + libs/ui/src/lib/i18n.ts + 64 + + + Neutral + Neutral - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 316 + libs/ui/src/lib/i18n.ts + 67 + + + Oops! Could not parse historical data. + Oops! Could not parse historical data. - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 362 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 205 - - Austria - Austria + + Do you really want to delete this system message? + Do you really want to delete this system message? - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 239 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 159 - - Italy - Italy + + 50-Day Trend + 50-Day Trend - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 373 + libs/ui/src/lib/benchmark/benchmark.component.html + 15 - - Netherlands - Netherlands + + 200-Day Trend + 200-Day Trend - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 383 + libs/ui/src/lib/benchmark/benchmark.component.html + 39 - - Thailand - Thailand + + Cash Balances + Cash Balances - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 395 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 88 - - New Zealand - New Zealand + + Starting from + Starting from - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 437 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Czech Republic - Czech Republic - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 448 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 485 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - (Last 24 hours) - (Last 24 hours) - apps/client/src/app/pages/open/open-page.html - 37 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - (Last 30 days) - (Last 30 days) - apps/client/src/app/pages/open/open-page.html - 48 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/open/open-page.html - 59 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - (Last 90 days) - (Last 90 days) - apps/client/src/app/pages/open/open-page.html - 127 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - New - New - apps/client/src/app/pages/landing/landing-page.html - 7 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Choose or drop a file here - Choose or drop a file here - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 85 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - You are using the Live Demo. - You are using the Live Demo. - apps/client/src/app/app.component.html - 17 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - One-time fee, annual account fees - 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 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Distribution of corporate earnings - Distribution of corporate earnings - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 33 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Oops! Could not get the historical exchange rate from - 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 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Fee - Fee - libs/ui/src/lib/i18n.ts - 32 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Interest - Interest - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 280 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Revenue for lending out money - Revenue for lending out money - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 39 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Add Tag - Add Tag - apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Do you really want to delete this tag? - Do you really want to delete this tag? - apps/client/src/app/components/admin-tag/admin-tag.component.ts - 78 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Update tag - Update tag - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 2 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Add tag - Add tag - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 3 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - France - France - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 110 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 459 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 475 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - 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 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Currency Cluster Risks - Currency Cluster Risks - apps/client/src/app/pages/portfolio/fire/fire-page.html - 124 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Account Cluster Risks - Account Cluster Risks - apps/client/src/app/pages/portfolio/fire/fire-page.html - 137 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Transfer Cash Balance - Transfer Cash Balance - apps/client/src/app/components/accounts-table/accounts-table.component.html - 9 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 7 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Benchmark - Benchmark - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 219 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Version - Version - apps/client/src/app/components/admin-overview/admin-overview.html - 7 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Settings - Settings - apps/client/src/app/components/user-account-settings/user-account-settings.html - 2 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - From - From - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 11 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - To - To - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 29 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Transfer - Transfer - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 66 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Finland - Finland - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 467 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Membership - Membership - 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 + 185 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 39 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Access - Access - 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 + 185 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 45 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Find holding... - Find holding... - libs/ui/src/lib/assistant/assistant.component.ts - 89 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - No entries... - No entries... + + year + year - libs/ui/src/lib/assistant/assistant.html - 63 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - libs/ui/src/lib/assistant/assistant.html - 84 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Asset Profile - Asset Profile - apps/client/src/app/components/admin-jobs/admin-jobs.html - 31 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Do you really want to delete this asset profile? - Do you really want to delete this asset profile? - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 184 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Search - Search - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 16 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Add Manually - Add Manually - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 19 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - Ghostfolio é um dashboard de finanças pessoais para acompanhar os seus activos como acções, ETFs ou criptomoedas em múltiplas plataformas. - apps/client/src/app/pages/i18n/i18n-page.html - 4 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Last All Time High - Last All Time High - libs/ui/src/lib/benchmark/benchmark.component.html - 63 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - User - User - apps/client/src/app/components/admin-users/admin-users.html - 29 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Ghostfolio vs comparison table - Ghostfolio vs comparison table apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 - - - Canada - Canada - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 530 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Open Source Wealth Management Software - Open Source Wealth Management Software - apps/client/src/app/pages/i18n/i18n-page.html - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - apps/client/src/app/pages/i18n/i18n-page.html - 9 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Oops, cash balance transfer has failed. - Oops, cash balance transfer has failed. - apps/client/src/app/pages/accounts/accounts-page.component.ts - 305 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Poland - Poland - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 120 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - South Africa - South Africa - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 228 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Extreme Fear - Extreme Fear - libs/ui/src/lib/i18n.ts - 63 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Extreme Greed - Extreme Greed - libs/ui/src/lib/i18n.ts - 64 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Neutral - Neutral - libs/ui/src/lib/i18n.ts - 67 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Oops! Could not parse historical data. - Oops! Could not parse historical data. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 205 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Do you really want to delete this system message? - Do you really want to delete this system message? - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 159 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - 50-Day Trend - 50-Day Trend - libs/ui/src/lib/benchmark/benchmark.component.html - 15 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - 200-Day Trend - 200-Day Trend + + Do you really want to delete this account balance? + Do you really want to delete this account balance? - libs/ui/src/lib/benchmark/benchmark.component.html - 39 + libs/ui/src/lib/account-balances/account-balances.component.ts + 56 diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 3905e92bb..fd1b43788 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -82,191 +82,191 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 25 + 26 @@ -346,191 +346,191 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 26 + 27 @@ -750,191 +750,191 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/resources-page.component.ts @@ -1014,7 +1014,7 @@ apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html - 203 + 204 apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html @@ -1526,7 +1526,7 @@ apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 69 + 73 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -1680,6 +1680,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 227 + + libs/ui/src/lib/account-balances/account-balances.component.html + 20 + libs/ui/src/lib/activities-table/activities-table.component.html 321 @@ -1748,6 +1752,10 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html 77 + + libs/ui/src/lib/account-balances/account-balances.component.html + 50 + libs/ui/src/lib/activities-table/activities-table.component.html 529 @@ -1896,6 +1904,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 136 + + libs/ui/src/lib/account-balances/account-balances.component.html + 11 + libs/ui/src/lib/activities-table/activities-table.component.html 152 @@ -10380,3304 +10392,3696 @@ 164 - - Starting from / year - Starting from / year + + Notes + Notes apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 - - Starting from / year - Starting from / year + + 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. + 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 - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 - - Notes - Notes + + Ready to take your investments to the next level? + Ready to take your investments to the next level? apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 - - 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. - 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. + + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 - - Ready to take your investments to the next level? - Ready to take your investments to the next level? + + Get Started + Get Started apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 - - Effortlessly track, analyze, and visualize your wealth with Ghostfolio. - Effortlessly track, analyze, and visualize your wealth with Ghostfolio. + + Personal Finance Tools + Personal Finance Tools apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 - - Get Started - Get Started + + Switzerland + Switzerland - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 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 - 225 + 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 - 225 + 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 - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 548 + + + Global + Global - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 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 - 225 + 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 - 225 + 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 - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 549 + + + United States + United States - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 559 + + + Belgium + Belgium - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 167 + + + Germany + Germany - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 361 + + + Austria + Austria - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 238 + + + Italy + Italy - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 372 + + + Netherlands + Netherlands - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 382 + + + Thailand + Thailand - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 394 + + + New Zealand + New Zealand - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 436 + + + Czech Republic + Czech Republic - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 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 - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 484 + + + Resources + Resources - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/resources/resources-page-routing.module.ts + 12 + + + Guides + Guides - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/resources/resources-page.html + 5 + + + Glossary + Glossary - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/resources/resources-page.html + 75 + + + Grant access + Grant access - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 7 - - Personal Finance Tools - Personal Finance Tools + + Public + Public - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 + + + My Ghostfolio + My Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 32 + + + Auto + Auto - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 31 + + + Please enter your coupon code: + Please enter your coupon code: - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 110 + + + Could not redeem coupon code + Could not redeem coupon code - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 120 + + + Coupon code has been redeemed + Coupon code has been redeemed - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 132 + + + Reload + Reload - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 133 + + + Do you really want to remove this sign in method? + Do you really want to remove this sign in method? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 182 + + + Membership + Membership - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/membership-card/membership-card.component.html + 18 + + + Valid until + Valid until - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/membership-card/membership-card.component.html + 22 + + + Upgrade + Upgrade - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 18 + + + Renew + Renew - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 21 + + + per year + per year - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 33 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 - - - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/pages/pricing/pricing-page.html + 332 + + + Try Premium + Try Premium - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 42 + + + Redeem Coupon + Redeem Coupon - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 55 + + + Presenter View + Presenter View - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 7 + + + Protection for sensitive information like absolute performances and quantity values + Protection for sensitive information like absolute performances and quantity values - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 8 + + + Base Currency + Base Currency - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 27 + + + Language + Language - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 48 + + + Locale + Locale - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 95 + + + Date and number format + Date and number format - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 97 + + + Appearance + Appearance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 118 + + + Auto + Auto - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 130 + + + Light + Light - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 131 + + + Dark + Dark - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 132 + + + Distraction-free experience for turbulent times + Distraction-free experience for turbulent times - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 142 + + + Biometric Authentication + Biometric Authentication - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 158 + + + Sign in with fingerprint + Sign in with fingerprint - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 159 + + + Experimental Features + Experimental Features - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 176 + + + Sneak peek at upcoming functionality + Sneak peek at upcoming functionality - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 177 + + + User ID + User ID - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 192 + + + Export Data + Export Data - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 199 + + + Granted Access + Granted Access - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-access/user-account-access.html + 5 + + + Oops, authentication has failed. + Oops, authentication has failed. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/pages/webauthn/webauthn-page.html + 18 + + + Try again + Try again - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/pages/webauthn/webauthn-page.html + 26 + + + Go back to Home Page + Go back to Home Page - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/pages/webauthn/webauthn-page.html + 30 + + + Import Activities + Import Activities - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/activities-table/activities-table.component.html + 16 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/activities-table/activities-table.component.html + 453 + + + Import Dividends + Import Dividends - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/activities-table/activities-table.component.html + 35 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/activities-table/activities-table.component.html + 464 + + + Export Activities + Export Activities - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/activities-table/activities-table.component.html + 47 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/activities-table/activities-table.component.html + 476 + + + Export Drafts as ICS + Export Drafts as ICS - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/activities-table/activities-table.component.html + 59 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/activities-table/activities-table.component.html + 488 - - Switzerland - Switzerland + + Delete all Activities + Delete all Activities - apps/client/src/app/pages/resources/personal-finance-tools/products.ts + libs/ui/src/lib/activities-table/activities-table.component.html 69 + + + Draft + Draft - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 91 + libs/ui/src/lib/activities-table/activities-table.component.html + 189 + + + Clone + Clone - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 507 + libs/ui/src/lib/activities-table/activities-table.component.html + 513 + + + Export Draft as ICS + Export Draft as ICS - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 549 + libs/ui/src/lib/activities-table/activities-table.component.html + 523 - - Global - Global + + Do you really want to delete this activity? + Do you really want to delete this activity? - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 71 + libs/ui/src/lib/activities-table/activities-table.component.ts + 227 + + + Filter by account, currency, symbol or type... + Filter by account, currency, symbol or type... - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 318 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 439 + libs/ui/src/lib/activities-table/activities-table.component.ts + 427 + + + Index + Index - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 550 + libs/ui/src/lib/benchmark/benchmark.component.html + 3 - - United States - United States + + Change from All Time High + Change from All Time High - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 82 + libs/ui/src/lib/benchmark/benchmark.component.html + 79 + + + from ATH + from ATH - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 138 + libs/ui/src/lib/benchmark/benchmark.component.html + 81 + + + Market data provided by + Market data provided by - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 148 + libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html + 2 + + + Savings Rate per Month + Savings Rate per Month - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 190 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 10 + + + Annual Interest Rate + Annual Interest Rate - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 199 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 21 + + + Retirement Date + Retirement Date - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 209 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 32 + + + Projected Total Amount + Projected Total Amount - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 219 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 60 + + + Interest + Interest - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 271 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 341 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 293 + libs/ui/src/lib/i18n.ts + 33 + + + Savings + Savings - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 304 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 351 + + + Allocation + Allocation - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 329 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 98 + + + Show all + Show all - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 331 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 172 + + + Account + Account - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 341 + libs/ui/src/lib/i18n.ts + 4 + + + Asia-Pacific + Asia-Pacific - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 406 + libs/ui/src/lib/i18n.ts + 5 + + + Asset Class + Asset Class - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 416 + libs/ui/src/lib/i18n.ts + 6 + + + Asset Sub Class + Asset Sub Class - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 426 + libs/ui/src/lib/i18n.ts + 7 + + + Core + Core - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 495 + libs/ui/src/lib/i18n.ts + 8 + + + Switch to Ghostfolio Premium or Ghostfolio Open Source easily + Switch to Ghostfolio Premium or Ghostfolio Open Source easily - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 518 + libs/ui/src/lib/i18n.ts + 9 + + + Switch to Ghostfolio Premium easily + Switch to Ghostfolio Premium easily - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 538 + libs/ui/src/lib/i18n.ts + 10 + + + Switch to Ghostfolio Open Source or Ghostfolio Basic easily + Switch to Ghostfolio Open Source or Ghostfolio Basic easily - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 560 + libs/ui/src/lib/i18n.ts + 11 - - Belgium - Belgium + + Emergency Fund + Emergency Fund - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 168 + libs/ui/src/lib/i18n.ts + 12 - - Germany - Germany + + Grant + Grant - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 129 + libs/ui/src/lib/i18n.ts + 13 + + + Higher Risk + Higher Risk - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 179 + libs/ui/src/lib/i18n.ts + 14 + + + This activity already exists. + This activity already exists. - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 251 + libs/ui/src/lib/i18n.ts + 15 + + + Japan + Japan - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 261 + libs/ui/src/lib/i18n.ts + 16 + + + Lower Risk + Lower Risk - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 282 + libs/ui/src/lib/i18n.ts + 17 + + + Month + Month - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 316 + libs/ui/src/lib/i18n.ts + 18 + + + Months + Months - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 362 + libs/ui/src/lib/i18n.ts + 19 - - Austria - Austria + + Other + Other - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 239 + libs/ui/src/lib/i18n.ts + 20 - - - Italy - Italy - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 373 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 384 - - Netherlands - Netherlands + + Preset + Preset - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 383 + libs/ui/src/lib/i18n.ts + 21 - - Thailand - Thailand + + Retirement Provision + Retirement Provision - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 395 + libs/ui/src/lib/i18n.ts + 22 - - New Zealand - New Zealand + + Satellite + Satellite - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 437 + libs/ui/src/lib/i18n.ts + 23 - - Czech Republic - Czech Republic - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 448 - + + Symbol + Symbol - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 485 + libs/ui/src/lib/i18n.ts + 24 - - Resources - Resources + + Tag + Tag - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 12 + libs/ui/src/lib/i18n.ts + 25 - - Guides - Guides + + Year + Yıl - apps/client/src/app/pages/resources/resources-page.html - 5 + libs/ui/src/lib/i18n.ts + 26 - - Glossary - Glossary + + Years + Years - apps/client/src/app/pages/resources/resources-page.html - 75 + libs/ui/src/lib/i18n.ts + 27 - - Grant access - Grant access + + Buy + Buy - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 7 + libs/ui/src/lib/i18n.ts + 30 - - Public - Public + + Valuable + Valuable - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 24 + libs/ui/src/lib/i18n.ts + 34 - - My Ghostfolio - My Ghostfolio + + Liability + Liability - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 32 + libs/ui/src/lib/i18n.ts + 35 - - Auto - Auto + + Sell + Sell - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 31 + libs/ui/src/lib/i18n.ts + 36 - - Please enter your coupon code: - Please enter your coupon code: + + Cash + Cash - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 110 + libs/ui/src/lib/i18n.ts + 39 - - Could not redeem coupon code - Could not redeem coupon code + + Commodity + Commodity - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 120 + libs/ui/src/lib/i18n.ts + 40 - - Coupon code has been redeemed - Coupon code has been redeemed + + Equity + Equity - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 132 + libs/ui/src/lib/i18n.ts + 41 - - Reload - Reload + + Fixed Income + Fixed Income - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 133 + libs/ui/src/lib/i18n.ts + 42 - - Do you really want to remove this sign in method? - Do you really want to remove this sign in method? + + Real Estate + Real Estate - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 182 + libs/ui/src/lib/i18n.ts + 43 - - Membership - Membership + + Bond + Bond - libs/ui/src/lib/membership-card/membership-card.component.html - 18 + libs/ui/src/lib/i18n.ts + 46 - - Valid until - Valid until + + Cryptocurrency + Cryptocurrency - libs/ui/src/lib/membership-card/membership-card.component.html - 22 + libs/ui/src/lib/i18n.ts + 47 - - Upgrade - Upgrade + + ETF + ETF - apps/client/src/app/components/user-account-membership/user-account-membership.html - 18 + libs/ui/src/lib/i18n.ts + 48 - - Renew - Renew + + Mutual Fund + Mutual Fund - apps/client/src/app/components/user-account-membership/user-account-membership.html - 21 + libs/ui/src/lib/i18n.ts + 49 - - per year - per year + + Precious Metal + Precious Metal - apps/client/src/app/components/user-account-membership/user-account-membership.html - 33 + libs/ui/src/lib/i18n.ts + 50 + + + Private Equity + Private Equity - apps/client/src/app/pages/pricing/pricing-page.html - 332 + libs/ui/src/lib/i18n.ts + 51 - - Try Premium - Try Premium + + Stock + Stock - apps/client/src/app/components/user-account-membership/user-account-membership.html - 42 + libs/ui/src/lib/i18n.ts + 52 - - Redeem Coupon - Redeem Coupon + + Africa + Africa - apps/client/src/app/components/user-account-membership/user-account-membership.html + libs/ui/src/lib/i18n.ts 55 - - Presenter View - Presenter View + + Asia + Asia - apps/client/src/app/components/user-account-settings/user-account-settings.html - 7 + libs/ui/src/lib/i18n.ts + 56 - - Protection for sensitive information like absolute performances and quantity values - Protection for sensitive information like absolute performances and quantity values + + Europe + Europe - apps/client/src/app/components/user-account-settings/user-account-settings.html - 8 + libs/ui/src/lib/i18n.ts + 57 - - Base Currency - Base Currency + + North America + North America - apps/client/src/app/components/user-account-settings/user-account-settings.html - 27 + libs/ui/src/lib/i18n.ts + 58 - - Language - Language + + Oceania + Oceania - apps/client/src/app/components/user-account-settings/user-account-settings.html - 48 + libs/ui/src/lib/i18n.ts + 59 - - Locale - Locale + + South America + South America - apps/client/src/app/components/user-account-settings/user-account-settings.html - 95 + libs/ui/src/lib/i18n.ts + 60 - - Date and number format - Date and number format + + Time to add your first activity. + Time to add your first activity. - apps/client/src/app/components/user-account-settings/user-account-settings.html - 97 + libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html + 12 - - Appearance - Appearance + + No data available + No data available - apps/client/src/app/components/user-account-settings/user-account-settings.html - 118 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 386 - - - Auto - Auto - apps/client/src/app/components/user-account-settings/user-account-settings.html - 130 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 399 - - Light - Light + + You are using the Live Demo. + You are using the Live Demo. - apps/client/src/app/components/user-account-settings/user-account-settings.html - 131 + apps/client/src/app/app.component.html + 17 - - Dark - Dark + + Interest + Interest - apps/client/src/app/components/user-account-settings/user-account-settings.html - 132 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 280 - - Distraction-free experience for turbulent times - Distraction-free experience for turbulent times + + New + New - apps/client/src/app/components/user-account-settings/user-account-settings.html - 142 + apps/client/src/app/pages/landing/landing-page.html + 7 - - Biometric Authentication - Biometric Authentication + + (Last 24 hours) + (Last 24 hours) - apps/client/src/app/components/user-account-settings/user-account-settings.html - 158 + apps/client/src/app/pages/open/open-page.html + 37 - - Sign in with fingerprint - Sign in with fingerprint + + (Last 30 days) + (Last 30 days) - apps/client/src/app/components/user-account-settings/user-account-settings.html - 159 + apps/client/src/app/pages/open/open-page.html + 48 - - - Experimental Features - Experimental Features - apps/client/src/app/components/user-account-settings/user-account-settings.html - 176 + apps/client/src/app/pages/open/open-page.html + 59 - - Sneak peek at upcoming functionality - Sneak peek at upcoming functionality + + (Last 90 days) + (Last 90 days) - apps/client/src/app/components/user-account-settings/user-account-settings.html - 177 + apps/client/src/app/pages/open/open-page.html + 127 - - User ID - User ID + + One-time fee, annual account fees + One-time fee, annual account fees - apps/client/src/app/components/user-account-settings/user-account-settings.html - 192 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 27 - - Export Data - Export Data + + Distribution of corporate earnings + Distribution of corporate earnings - apps/client/src/app/components/user-account-settings/user-account-settings.html - 199 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 33 - - Granted Access - Granted Access + + Revenue for lending out money + Revenue for lending out money - apps/client/src/app/components/user-account-access/user-account-access.html - 5 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 39 - - Oops, authentication has failed. - Oops, authentication has failed. + + Oops! Could not get the historical exchange rate from + Oops! Could not get the historical exchange rate from - apps/client/src/app/pages/webauthn/webauthn-page.html - 18 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 198 - - Try again - Try again + + Choose or drop a file here + Choose or drop a file here - apps/client/src/app/pages/webauthn/webauthn-page.html - 26 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 85 - - Go back to Home Page - Go back to Home Page + + Fee + Fee - apps/client/src/app/pages/webauthn/webauthn-page.html - 30 + libs/ui/src/lib/i18n.ts + 32 - - Import Activities - Import Activities - - libs/ui/src/lib/activities-table/activities-table.component.html - 16 - + + Add Tag + Add Tag - libs/ui/src/lib/activities-table/activities-table.component.html - 453 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 11 - - Import Dividends - Import Dividends + + Do you really want to delete this tag? + Do you really want to delete this tag? - libs/ui/src/lib/activities-table/activities-table.component.html - 35 + apps/client/src/app/components/admin-tag/admin-tag.component.ts + 78 + + + Update tag + Update tag - libs/ui/src/lib/activities-table/activities-table.component.html - 464 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 2 - - Export Activities - Export Activities + + Add tag + Add tag - libs/ui/src/lib/activities-table/activities-table.component.html - 47 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 3 + + + France + France - libs/ui/src/lib/activities-table/activities-table.component.html - 476 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 109 - - - Export Drafts as ICS - Export Drafts as ICS - libs/ui/src/lib/activities-table/activities-table.component.html - 59 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 458 - libs/ui/src/lib/activities-table/activities-table.component.html - 488 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 474 - - Delete all Activities - Delete all Activities + + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - libs/ui/src/lib/activities-table/activities-table.component.html - 69 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 100 - - Draft - Draft + + Currency Cluster Risks + Currency Cluster Risks - libs/ui/src/lib/activities-table/activities-table.component.html - 189 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 124 - - Clone - Clone + + Account Cluster Risks + Account Cluster Risks - libs/ui/src/lib/activities-table/activities-table.component.html - 513 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 137 - - Export Draft as ICS - Export Draft as ICS + + Transfer Cash Balance + Transfer Cash Balance - libs/ui/src/lib/activities-table/activities-table.component.html - 523 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 9 - - - Do you really want to delete this activity? - Do you really want to delete this activity? - libs/ui/src/lib/activities-table/activities-table.component.ts - 227 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 - - Filter by account, currency, symbol or type... - Filter by account, currency, symbol or type... + + Benchmark + Benchmark - libs/ui/src/lib/activities-table/activities-table.component.ts - 427 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 219 - - Index - Index + + Version + Version - libs/ui/src/lib/benchmark/benchmark.component.html - 3 + apps/client/src/app/components/admin-overview/admin-overview.html + 7 - - Change from All Time High - Change from All Time High + + Settings + Settings - libs/ui/src/lib/benchmark/benchmark.component.html - 79 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 - - from ATH - from ATH + + From + From - libs/ui/src/lib/benchmark/benchmark.component.html - 81 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 - - Market data provided by - Market data provided by + + To + To - libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html - 2 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 29 - - Savings Rate per Month - Savings Rate per Month + + Transfer + Transfer - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 10 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 66 - - Annual Interest Rate - Annual Interest Rate + + Finland + Finland - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 21 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 466 - - Retirement Date - Retirement Date + + Membership + Membership - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 32 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 22 - - - Projected Total Amount - Projected Total Amount - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 60 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 39 - - Interest - Interest + + Access + Access - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 341 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 27 - libs/ui/src/lib/i18n.ts - 33 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 45 - - Savings - Savings + + Find holding... + Find holding... - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 351 + libs/ui/src/lib/assistant/assistant.component.ts + 89 - - Allocation - Allocation + + No entries... + No entries... - libs/ui/src/lib/holdings-table/holdings-table.component.html - 98 + libs/ui/src/lib/assistant/assistant.html + 63 - - - Show all - Show all - libs/ui/src/lib/holdings-table/holdings-table.component.html - 172 + libs/ui/src/lib/assistant/assistant.html + 84 - - Account - Account + + Asset Profile + Asset Profile - libs/ui/src/lib/i18n.ts - 4 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31 - - Asia-Pacific - Asia-Pacific + + Do you really want to delete this asset profile? + Do you really want to delete this asset profile? - libs/ui/src/lib/i18n.ts - 5 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 184 - - Asset Class - Asset Class + + Search + Search - libs/ui/src/lib/i18n.ts - 6 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 - - Asset Sub Class - Asset Sub Class + + Add Manually + Add Manually - libs/ui/src/lib/i18n.ts - 7 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 - - Core - Core + + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. + Ghostfolio, hisse senetleri, ETF’ler veya kripto para birimleri gibi varlıklarınızı birden fazla platformda takip etmenizi sağlayan bir kişisel finans panosudur. - libs/ui/src/lib/i18n.ts - 8 + apps/client/src/app/pages/i18n/i18n-page.html + 4 - - Switch to Ghostfolio Premium or Ghostfolio Open Source easily - Switch to Ghostfolio Premium or Ghostfolio Open Source easily + + Last All Time High + Last All Time High - libs/ui/src/lib/i18n.ts - 9 + libs/ui/src/lib/benchmark/benchmark.component.html + 63 - - Switch to Ghostfolio Premium easily - Switch to Ghostfolio Premium easily + + User + User - libs/ui/src/lib/i18n.ts - 10 + apps/client/src/app/components/admin-users/admin-users.html + 29 - - Switch to Ghostfolio Open Source or Ghostfolio Basic easily - Switch to Ghostfolio Open Source or Ghostfolio Basic easily + + Ghostfolio vs comparison table + Ghostfolio vs comparison table - libs/ui/src/lib/i18n.ts - 11 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Emergency Fund - Emergency Fund - libs/ui/src/lib/i18n.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Grant - Grant - libs/ui/src/lib/i18n.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Higher Risk - Higher Risk - libs/ui/src/lib/i18n.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - This activity already exists. - This activity already exists. - libs/ui/src/lib/i18n.ts - 15 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Japan - Japan - libs/ui/src/lib/i18n.ts - 16 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Lower Risk - Lower Risk - libs/ui/src/lib/i18n.ts - 17 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Month - Month - libs/ui/src/lib/i18n.ts - 18 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Months - Months - libs/ui/src/lib/i18n.ts - 19 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Other - Other - libs/ui/src/lib/i18n.ts - 20 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 384 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Preset - Preset - libs/ui/src/lib/i18n.ts - 21 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Retirement Provision - Retirement Provision - libs/ui/src/lib/i18n.ts - 22 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Satellite - Satellite - libs/ui/src/lib/i18n.ts - 23 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Symbol - Symbol - libs/ui/src/lib/i18n.ts - 24 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Tag - Tag - libs/ui/src/lib/i18n.ts - 25 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Year - Yıl - libs/ui/src/lib/i18n.ts - 26 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Years - Years - libs/ui/src/lib/i18n.ts - 27 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Buy - Buy - libs/ui/src/lib/i18n.ts - 30 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Valuable - Valuable - libs/ui/src/lib/i18n.ts - 34 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Liability - Liability - libs/ui/src/lib/i18n.ts - 35 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Sell - Sell - libs/ui/src/lib/i18n.ts - 36 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Cash - Cash - libs/ui/src/lib/i18n.ts - 39 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Commodity - Commodity - libs/ui/src/lib/i18n.ts - 40 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Equity - Equity - libs/ui/src/lib/i18n.ts - 41 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Fixed Income - Fixed Income - libs/ui/src/lib/i18n.ts - 42 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Real Estate - Real Estate - libs/ui/src/lib/i18n.ts - 43 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Bond - Bond - libs/ui/src/lib/i18n.ts - 46 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Cryptocurrency - Cryptocurrency - libs/ui/src/lib/i18n.ts - 47 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - ETF - ETF - libs/ui/src/lib/i18n.ts + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html 48 - - - Mutual Fund - Mutual Fund - libs/ui/src/lib/i18n.ts - 49 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Precious Metal - Precious Metal - libs/ui/src/lib/i18n.ts - 50 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Private Equity - Private Equity - libs/ui/src/lib/i18n.ts - 51 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Stock - Stock - libs/ui/src/lib/i18n.ts - 52 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Africa - Africa - libs/ui/src/lib/i18n.ts - 55 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Asia - Asia - libs/ui/src/lib/i18n.ts - 56 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Europe - Europe - libs/ui/src/lib/i18n.ts - 57 + 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 + 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 + 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 + 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 + 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 + 48 - - North America - North America + + Canada + Canada + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 529 + + + + Open Source Wealth Management Software + 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 + 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. + Oops, cash balance transfer has failed. + + apps/client/src/app/pages/accounts/accounts-page.component.ts + 305 + + + + Poland + Poland + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 119 + + + + South Africa + South Africa + + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 227 + + + + Extreme Fear + Extreme Fear libs/ui/src/lib/i18n.ts - 58 + 63 - - Oceania - Oceania + + Extreme Greed + Extreme Greed libs/ui/src/lib/i18n.ts - 59 + 64 - - South America - South America + + Neutral + Neutral libs/ui/src/lib/i18n.ts - 60 + 67 - - Time to add your first activity. - Time to add your first activity. + + Oops! Could not parse historical data. + Oops! Could not parse historical data. - libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html - 12 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 205 - - No data available - No data available + + Do you really want to delete this system message? + Do you really want to delete this system message? - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 386 + apps/client/src/app/components/admin-overview/admin-overview.component.ts + 159 + + + 50-Day Trend + 50-Day Trend - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 399 + libs/ui/src/lib/benchmark/benchmark.component.html + 15 - - You are using the Live Demo. - You are using the Live Demo. + + 200-Day Trend + 200-Day Trend - apps/client/src/app/app.component.html - 17 + libs/ui/src/lib/benchmark/benchmark.component.html + 39 - - Interest - Interest + + Cash Balances + Cash Balances - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 280 + apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html + 88 - - New - New + + Starting from + Starting from - apps/client/src/app/pages/landing/landing-page.html - 7 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - - (Last 24 hours) - (Last 24 hours) - apps/client/src/app/pages/open/open-page.html - 37 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - - (Last 30 days) - (Last 30 days) - apps/client/src/app/pages/open/open-page.html - 48 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - apps/client/src/app/pages/open/open-page.html - 59 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - - (Last 90 days) - (Last 90 days) - apps/client/src/app/pages/open/open-page.html - 127 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - - One-time fee, annual account fees - 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 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - - Distribution of corporate earnings - Distribution of corporate earnings - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 33 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - - Revenue for lending out money - Revenue for lending out money - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 39 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - - Oops! Could not get the historical exchange rate from - 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 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - Choose or drop a file here - Choose or drop a file here + + year + year - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 85 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Fee - Fee - libs/ui/src/lib/i18n.ts - 32 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Add Tag - Add Tag - apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Do you really want to delete this tag? - Do you really want to delete this tag? - apps/client/src/app/components/admin-tag/admin-tag.component.ts - 78 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Update tag - Update tag - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 2 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Add tag - Add tag - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 3 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - France - France - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 110 + 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 - 459 + 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 - 475 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - 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 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Currency Cluster Risks - Currency Cluster Risks - apps/client/src/app/pages/portfolio/fire/fire-page.html - 124 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Account Cluster Risks - Account Cluster Risks - apps/client/src/app/pages/portfolio/fire/fire-page.html - 137 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Transfer Cash Balance - Transfer Cash Balance - apps/client/src/app/components/accounts-table/accounts-table.component.html - 9 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 7 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Benchmark - Benchmark - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 219 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Version - Version - apps/client/src/app/components/admin-overview/admin-overview.html - 7 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Settings - Settings - apps/client/src/app/components/user-account-settings/user-account-settings.html - 2 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - From - From - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 11 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - To - To - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 29 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Transfer - Transfer - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 66 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Finland - Finland - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 467 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Membership - Membership - 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 + 186 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 39 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Access - Access - 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 + 186 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 45 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Find holding... - Find holding... - libs/ui/src/lib/assistant/assistant.component.ts - 89 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - No entries... - No entries... - libs/ui/src/lib/assistant/assistant.html - 63 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - libs/ui/src/lib/assistant/assistant.html - 84 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Asset Profile - Asset Profile - apps/client/src/app/components/admin-jobs/admin-jobs.html - 31 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Do you really want to delete this asset profile? - Do you really want to delete this asset profile? - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 184 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Search - Search - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 16 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Add Manually - Add Manually - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 19 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - Ghostfolio, hisse senetleri, ETF’ler veya kripto para birimleri gibi varlıklarınızı birden fazla platformda takip etmenizi sağlayan bir kişisel finans panosudur. - apps/client/src/app/pages/i18n/i18n-page.html - 4 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Last All Time High - Last All Time High - libs/ui/src/lib/benchmark/benchmark.component.html - 63 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - User - User - apps/client/src/app/components/admin-users/admin-users.html - 29 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 - - - Ghostfolio vs comparison table - Ghostfolio vs comparison table apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 186 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 191 - - - Canada - Canada - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 530 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Open Source Wealth Management Software - Open Source Wealth Management Software - apps/client/src/app/pages/i18n/i18n-page.html - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - apps/client/src/app/pages/i18n/i18n-page.html - 9 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Oops, cash balance transfer has failed. - Oops, cash balance transfer has failed. - apps/client/src/app/pages/accounts/accounts-page.component.ts - 305 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Poland - Poland - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 120 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - South Africa - South Africa - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 228 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Extreme Fear - Extreme Fear - libs/ui/src/lib/i18n.ts - 63 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Extreme Greed - Extreme Greed - libs/ui/src/lib/i18n.ts - 64 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Neutral - Neutral - libs/ui/src/lib/i18n.ts - 67 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Oops! Could not parse historical data. - Oops! Could not parse historical data. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 205 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Do you really want to delete this system message? - Do you really want to delete this system message? - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 159 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - 50-Day Trend - 50-Day Trend - libs/ui/src/lib/benchmark/benchmark.component.html - 15 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - 200-Day Trend - 200-Day Trend + + Do you really want to delete this account balance? + Do you really want to delete this account balance? - libs/ui/src/lib/benchmark/benchmark.component.html - 39 + libs/ui/src/lib/account-balances/account-balances.component.ts + 56 diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 791cef853..2c04c01a4 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -82,191 +82,191 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 25 + 26 apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 25 + 26 @@ -344,191 +344,191 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 26 + 27 apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 26 + 27 @@ -742,191 +742,191 @@ apps/client/src/app/pages/resources/personal-finance-tools/products/allvue-systems-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/altoo-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/basil-finance-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/beanvest-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/capitally-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/capmon-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/compound-planning-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/copilot-money-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/de.fi-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/delta-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/divvydiary-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/eightfigures-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/empower-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/exirio-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/finary-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/finwise-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/folishare-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/getquin-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/gospatz-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/intuit-mint-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/justetf-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/kubera-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/magnifi-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/markets.sh-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/maybe-finance-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/monarch-money-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/monse-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/parqet-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/plannix-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/portfolio-dividend-tracker-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/portseido-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/projectionlab-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/rocket-money-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/seeking-alpha-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/sharesight-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/simple-portfolio-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/snowball-analytics-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/stockle-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/stockmarketeye-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/sumio-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/tiller-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/utluna-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/vyzer-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/wealthica-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/whal-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/yeekatee-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/personal-finance-tools/products/ynab-page.component.ts - 28 + 29 apps/client/src/app/pages/resources/resources-page.component.ts @@ -1001,7 +1001,7 @@ apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html - 203 + 204 apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html @@ -1495,7 +1495,7 @@ apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html - 69 + 73 apps/client/src/app/components/accounts-table/accounts-table.component.html @@ -1645,6 +1645,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 227 + + libs/ui/src/lib/account-balances/account-balances.component.html + 20 + libs/ui/src/lib/activities-table/activities-table.component.html 321 @@ -1711,6 +1715,10 @@ apps/client/src/app/components/admin-tag/admin-tag.component.html 77 + + libs/ui/src/lib/account-balances/account-balances.component.html + 50 + libs/ui/src/lib/activities-table/activities-table.component.html 529 @@ -1844,6 +1852,10 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html 136 + + libs/ui/src/lib/account-balances/account-balances.component.html + 11 + libs/ui/src/lib/activities-table/activities-table.component.html 152 @@ -10019,3079 +10031,3469 @@ 164 - - Starting from / year + + Notes apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 184 + 196 - - Starting from / year + + 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 - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 189 + 204 - - Notes + + Ready to take your investments to the next level? apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 195 + 217 - - 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. + + Effortlessly track, analyze, and visualize your wealth with Ghostfolio. apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 203 + 221 - - Ready to take your investments to the next level? + + Get Started apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 216 + 226 - - Effortlessly track, analyze, and visualize your wealth with Ghostfolio. + + Personal Finance Tools apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 220 + 302 - - Get Started + + Switzerland - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 559 + + + Belgium - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 167 + + + Germany - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 361 + + + Austria - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + 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 - 225 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 484 + + + Resources - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + 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 - 225 + apps/client/src/app/pages/resources/resources-page.html + 5 + + + Glossary - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/pages/resources/resources-page.html + 75 + + + Grant access - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 225 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 7 - - Personal Finance Tools + + Public - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html + 24 + + + My Ghostfolio - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 32 + + + Auto - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 31 + + + Please enter your coupon code: - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 110 + + + Could not redeem coupon code - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 120 + + + Coupon code has been redeemed - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 132 + + + Reload - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-membership/user-account-membership.component.ts + 133 + + + Do you really want to remove this sign in method? - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.component.ts + 182 + + + Membership - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 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 - 301 + libs/ui/src/lib/membership-card/membership-card.component.html + 22 + + + Upgrade - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 18 + + + Renew - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 21 + + + Try Premium - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 42 + + + Redeem Coupon - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-membership/user-account-membership.html + 55 + + + Presenter View - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 7 + + + Protection for sensitive information like absolute performances and quantity values - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 8 + + + Base Currency - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 27 + + + Language - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 48 + + + Locale - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 95 + + + Date and number format - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 97 + + + Appearance - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 118 + + + Auto - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 130 + + + Light - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 131 + + + Dark - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 132 + + + Distraction-free experience for turbulent times - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 142 + + + Biometric Authentication - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 158 + + + Sign in with fingerprint - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 159 + + + Experimental Features - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 176 + + + Sneak peek at upcoming functionality - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 177 + + + User ID - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 192 + + + Export Data - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 199 + + + Granted Access - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + apps/client/src/app/components/user-account-access/user-account-access.html + 5 + + + Oops, authentication has failed. - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 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 - 301 + 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 - 301 + apps/client/src/app/pages/webauthn/webauthn-page.html + 30 + + + Import Activities - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/activities-table/activities-table.component.html + 16 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 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 - 301 + libs/ui/src/lib/activities-table/activities-table.component.html + 35 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 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 - 301 + libs/ui/src/lib/activities-table/activities-table.component.html + 47 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/activities-table/activities-table.component.html + 476 + + + Export Drafts as ICS - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + libs/ui/src/lib/activities-table/activities-table.component.html + 59 - apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 301 + 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 - 301 + 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 - 301 + 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 - 301 + 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 - 301 + libs/ui/src/lib/activities-table/activities-table.component.html + 523 - - Switzerland + + Do you really want to delete this activity? - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 69 + libs/ui/src/lib/activities-table/activities-table.component.ts + 227 + + + Filter by account, currency, symbol or type... - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 91 + libs/ui/src/lib/activities-table/activities-table.component.ts + 427 + + + Index - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 507 + libs/ui/src/lib/benchmark/benchmark.component.html + 3 + + + Change from All Time High - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 549 + libs/ui/src/lib/benchmark/benchmark.component.html + 79 - - Global + + from ATH - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 71 + libs/ui/src/lib/benchmark/benchmark.component.html + 81 + + + Market data provided by - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 318 + 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/products.ts - 439 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 10 + + + Annual Interest Rate - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 550 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 21 - - United States + + Retirement Date - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 82 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 32 + + + Projected Total Amount - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 138 + libs/ui/src/lib/fire-calculator/fire-calculator.component.html + 60 + + + Interest - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 148 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 341 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 190 + libs/ui/src/lib/i18n.ts + 33 + + + Savings - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 199 + libs/ui/src/lib/fire-calculator/fire-calculator.component.ts + 351 + + + Allocation - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 209 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 98 + + + Show all - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 219 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 271 - - - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 293 + libs/ui/src/lib/holdings-table/holdings-table.component.html + 172 + + + Account - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 304 + libs/ui/src/lib/i18n.ts + 4 + + + Asia-Pacific - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 329 + libs/ui/src/lib/i18n.ts + 5 + + + Asset Class - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 331 + libs/ui/src/lib/i18n.ts + 6 + + + Asset Sub Class - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 341 + libs/ui/src/lib/i18n.ts + 7 + + + Core - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 406 + 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/products.ts - 416 + libs/ui/src/lib/i18n.ts + 9 + + + Switch to Ghostfolio Premium easily - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 426 + 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/products.ts - 495 + libs/ui/src/lib/i18n.ts + 11 + + + Emergency Fund - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 518 + libs/ui/src/lib/i18n.ts + 12 + + + Grant - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 538 + libs/ui/src/lib/i18n.ts + 13 + + + Higher Risk - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 560 + libs/ui/src/lib/i18n.ts + 14 - - Belgium + + This activity already exists. - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 168 + libs/ui/src/lib/i18n.ts + 15 - - Germany + + Japan - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 129 + libs/ui/src/lib/i18n.ts + 16 + + + Lower Risk - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 179 + libs/ui/src/lib/i18n.ts + 17 + + + Month - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 251 + libs/ui/src/lib/i18n.ts + 18 + + + Months - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 261 + libs/ui/src/lib/i18n.ts + 19 + + + Other - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 282 + libs/ui/src/lib/i18n.ts + 20 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 316 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 384 + + + Preset - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 362 + libs/ui/src/lib/i18n.ts + 21 - - Austria + + Retirement Provision - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 239 + libs/ui/src/lib/i18n.ts + 22 - - Italy + + Satellite - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 373 + libs/ui/src/lib/i18n.ts + 23 - - Netherlands + + Symbol - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 383 + libs/ui/src/lib/i18n.ts + 24 - - Thailand + + Tag - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 395 + libs/ui/src/lib/i18n.ts + 25 - - New Zealand + + Year - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 437 + libs/ui/src/lib/i18n.ts + 26 - - Czech Republic + + Years - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 448 + libs/ui/src/lib/i18n.ts + 27 + + + Buy - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 485 + libs/ui/src/lib/i18n.ts + 30 - - Resources + + Valuable - apps/client/src/app/pages/resources/resources-page-routing.module.ts - 12 + libs/ui/src/lib/i18n.ts + 34 - - Guides + + Liability - apps/client/src/app/pages/resources/resources-page.html - 5 + libs/ui/src/lib/i18n.ts + 35 - - Glossary + + Sell - apps/client/src/app/pages/resources/resources-page.html - 75 + libs/ui/src/lib/i18n.ts + 36 - - Grant access + + Cash - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 7 + libs/ui/src/lib/i18n.ts + 39 - - Public + + Commodity - apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html - 24 + libs/ui/src/lib/i18n.ts + 40 - - My Ghostfolio + + Equity - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 32 + libs/ui/src/lib/i18n.ts + 41 - - Auto + + Fixed Income - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 31 + libs/ui/src/lib/i18n.ts + 42 - - Please enter your coupon code: + + Real Estate - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 110 + libs/ui/src/lib/i18n.ts + 43 - - Could not redeem coupon code + + Bond - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 120 + libs/ui/src/lib/i18n.ts + 46 - - Coupon code has been redeemed + + Cryptocurrency - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 132 + libs/ui/src/lib/i18n.ts + 47 - - Reload + + ETF - apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 133 + libs/ui/src/lib/i18n.ts + 48 - - Do you really want to remove this sign in method? + + Mutual Fund - apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 182 + libs/ui/src/lib/i18n.ts + 49 - - Membership + + Precious Metal - libs/ui/src/lib/membership-card/membership-card.component.html - 18 + libs/ui/src/lib/i18n.ts + 50 - - Valid until + + Private Equity - libs/ui/src/lib/membership-card/membership-card.component.html - 22 + libs/ui/src/lib/i18n.ts + 51 - - Upgrade + + Stock - apps/client/src/app/components/user-account-membership/user-account-membership.html - 18 + libs/ui/src/lib/i18n.ts + 52 - - Renew + + Africa - apps/client/src/app/components/user-account-membership/user-account-membership.html - 21 + libs/ui/src/lib/i18n.ts + 55 - - Try Premium + + Asia - apps/client/src/app/components/user-account-membership/user-account-membership.html - 42 + libs/ui/src/lib/i18n.ts + 56 - - Redeem Coupon + + Europe - apps/client/src/app/components/user-account-membership/user-account-membership.html - 55 + libs/ui/src/lib/i18n.ts + 57 - - Presenter View + + North America - apps/client/src/app/components/user-account-settings/user-account-settings.html - 7 + libs/ui/src/lib/i18n.ts + 58 - - Protection for sensitive information like absolute performances and quantity values + + Oceania - apps/client/src/app/components/user-account-settings/user-account-settings.html - 8 + libs/ui/src/lib/i18n.ts + 59 - - Base Currency + + South America - apps/client/src/app/components/user-account-settings/user-account-settings.html - 27 + libs/ui/src/lib/i18n.ts + 60 - - Language + + Time to add your first activity. - apps/client/src/app/components/user-account-settings/user-account-settings.html - 48 + libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html + 12 - - Locale + + No data available - apps/client/src/app/components/user-account-settings/user-account-settings.html - 95 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 386 - - - Date and number format - apps/client/src/app/components/user-account-settings/user-account-settings.html - 97 + libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts + 399 - - Appearance + + Choose or drop a file here - apps/client/src/app/components/user-account-settings/user-account-settings.html - 118 + apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html + 85 - - Auto + + You are using the Live Demo. - apps/client/src/app/components/user-account-settings/user-account-settings.html - 130 + apps/client/src/app/app.component.html + 17 - - Light + + Fee - apps/client/src/app/components/user-account-settings/user-account-settings.html - 131 + libs/ui/src/lib/i18n.ts + 32 - - Dark + + Distribution of corporate earnings - apps/client/src/app/components/user-account-settings/user-account-settings.html - 132 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 33 - - Distraction-free experience for turbulent times + + Oops! Could not get the historical exchange rate from - apps/client/src/app/components/user-account-settings/user-account-settings.html - 142 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 198 - - Biometric Authentication + + One-time fee, annual account fees - apps/client/src/app/components/user-account-settings/user-account-settings.html - 158 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 27 - - Sign in with fingerprint + + Revenue for lending out money - apps/client/src/app/components/user-account-settings/user-account-settings.html - 159 + apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html + 39 - - Experimental Features + + Interest - apps/client/src/app/components/user-account-settings/user-account-settings.html - 176 + apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html + 280 - - Sneak peek at upcoming functionality + + Add tag - apps/client/src/app/components/user-account-settings/user-account-settings.html - 177 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 3 - - User ID + + Do you really want to delete this tag? - apps/client/src/app/components/user-account-settings/user-account-settings.html - 192 + apps/client/src/app/components/admin-tag/admin-tag.component.ts + 78 - - Export Data + + France - apps/client/src/app/components/user-account-settings/user-account-settings.html - 199 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 109 - - - Granted Access - apps/client/src/app/components/user-account-access/user-account-access.html - 5 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 458 - - - Oops, authentication has failed. - apps/client/src/app/pages/webauthn/webauthn-page.html - 18 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 474 - - Try again + + Update tag - apps/client/src/app/pages/webauthn/webauthn-page.html - 26 + apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html + 2 - - Go back to Home Page + + Add Tag - apps/client/src/app/pages/webauthn/webauthn-page.html - 30 + apps/client/src/app/components/admin-tag/admin-tag.component.html + 11 - - Import Activities - - libs/ui/src/lib/activities-table/activities-table.component.html - 16 - + + Ghostfolio X-ray uses static analysis to identify potential issues and risks in your portfolio. - libs/ui/src/lib/activities-table/activities-table.component.html - 453 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 100 - - Import Dividends + + Currency Cluster Risks - libs/ui/src/lib/activities-table/activities-table.component.html - 35 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 124 + + + Account Cluster Risks - libs/ui/src/lib/activities-table/activities-table.component.html - 464 + apps/client/src/app/pages/portfolio/fire/fire-page.html + 137 - - Export Activities - - libs/ui/src/lib/activities-table/activities-table.component.html - 47 - + + Benchmark - libs/ui/src/lib/activities-table/activities-table.component.html - 476 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html + 219 - - Export Drafts as ICS - - libs/ui/src/lib/activities-table/activities-table.component.html - 59 - + + Settings - libs/ui/src/lib/activities-table/activities-table.component.html - 488 + apps/client/src/app/components/user-account-settings/user-account-settings.html + 2 - - Delete all Activities + + Membership - libs/ui/src/lib/activities-table/activities-table.component.html - 69 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 22 - - - Draft - libs/ui/src/lib/activities-table/activities-table.component.html - 189 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 39 - - Clone + + Find holding... - libs/ui/src/lib/activities-table/activities-table.component.html - 513 + libs/ui/src/lib/assistant/assistant.component.ts + 89 - - Export Draft as ICS + + Transfer Cash Balance - libs/ui/src/lib/activities-table/activities-table.component.html - 523 + apps/client/src/app/components/accounts-table/accounts-table.component.html + 9 - - - Do you really want to delete this activity? - libs/ui/src/lib/activities-table/activities-table.component.ts - 227 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 7 - - Filter by account, currency, symbol or type... + + Access - libs/ui/src/lib/activities-table/activities-table.component.ts - 427 + apps/client/src/app/pages/user-account/user-account-page-routing.module.ts + 27 - - - Index - libs/ui/src/lib/benchmark/benchmark.component.html - 3 + apps/client/src/app/pages/user-account/user-account-page.component.ts + 45 - - Change from All Time High + + To - libs/ui/src/lib/benchmark/benchmark.component.html - 79 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 29 - - from ATH + + Transfer - libs/ui/src/lib/benchmark/benchmark.component.html - 81 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 66 - - Market data provided by + + Finland - libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html - 2 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 466 - - Savings Rate per Month + + Version - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 10 + apps/client/src/app/components/admin-overview/admin-overview.html + 7 - - Annual Interest Rate + + No entries... - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 21 + libs/ui/src/lib/assistant/assistant.html + 63 - - - Retirement Date - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 32 + libs/ui/src/lib/assistant/assistant.html + 84 - - Projected Total Amount + + From - libs/ui/src/lib/fire-calculator/fire-calculator.component.html - 60 + apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html + 11 - - Interest + + Asset Profile - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 341 + apps/client/src/app/components/admin-jobs/admin-jobs.html + 31 + + + Last All Time High - libs/ui/src/lib/i18n.ts - 33 + libs/ui/src/lib/benchmark/benchmark.component.html + 63 - - Savings + + Add Manually - libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 351 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 19 - - Allocation + + Do you really want to delete this asset profile? - libs/ui/src/lib/holdings-table/holdings-table.component.html - 98 + apps/client/src/app/components/admin-market-data/admin-market-data.component.ts + 184 - - Show all + + Search - libs/ui/src/lib/holdings-table/holdings-table.component.html - 172 + apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html + 16 - - Account + + Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms. - libs/ui/src/lib/i18n.ts + apps/client/src/app/pages/i18n/i18n-page.html 4 - - Asia-Pacific + + User - libs/ui/src/lib/i18n.ts - 5 + apps/client/src/app/components/admin-users/admin-users.html + 29 - - Asset Class + + Ghostfolio vs comparison table - libs/ui/src/lib/i18n.ts - 6 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Asset Sub Class - libs/ui/src/lib/i18n.ts - 7 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Core - libs/ui/src/lib/i18n.ts - 8 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - 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 + 48 - - - 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 + 48 - - - 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 + 48 - - - Emergency Fund - libs/ui/src/lib/i18n.ts - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Grant - libs/ui/src/lib/i18n.ts - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Higher Risk - libs/ui/src/lib/i18n.ts - 14 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - This activity already exists. - libs/ui/src/lib/i18n.ts - 15 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Japan - libs/ui/src/lib/i18n.ts - 16 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Lower Risk - libs/ui/src/lib/i18n.ts - 17 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Month - libs/ui/src/lib/i18n.ts - 18 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Months - libs/ui/src/lib/i18n.ts - 19 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Other - libs/ui/src/lib/i18n.ts - 20 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 384 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Preset - libs/ui/src/lib/i18n.ts - 21 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Retirement Provision - libs/ui/src/lib/i18n.ts - 22 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Satellite - libs/ui/src/lib/i18n.ts - 23 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Symbol - libs/ui/src/lib/i18n.ts - 24 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Tag - libs/ui/src/lib/i18n.ts - 25 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - - Year - libs/ui/src/lib/i18n.ts - 26 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 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 + 48 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 48 - - Years + + Canada - libs/ui/src/lib/i18n.ts - 27 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 529 - - Buy + + Open Source Wealth Management Software - libs/ui/src/lib/i18n.ts - 30 + apps/client/src/app/pages/i18n/i18n-page.html + 13 - - Valuable + + app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - libs/ui/src/lib/i18n.ts - 34 + apps/client/src/app/pages/i18n/i18n-page.html + 9 - - Liability + + Oops, cash balance transfer has failed. - libs/ui/src/lib/i18n.ts - 35 + apps/client/src/app/pages/accounts/accounts-page.component.ts + 305 - - Sell + + Poland - libs/ui/src/lib/i18n.ts - 36 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 119 - - Cash + + Extreme Fear libs/ui/src/lib/i18n.ts - 39 + 63 - - Commodity + + Extreme Greed libs/ui/src/lib/i18n.ts - 40 + 64 - - Equity + + Neutral libs/ui/src/lib/i18n.ts - 41 + 67 - - Fixed Income + + South Africa - libs/ui/src/lib/i18n.ts - 42 + apps/client/src/app/pages/resources/personal-finance-tools/products.ts + 227 - - Real Estate + + Oops! Could not parse historical data. - libs/ui/src/lib/i18n.ts - 43 + apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts + 205 - - Bond + + Do you really want to delete this system message? - libs/ui/src/lib/i18n.ts - 46 + 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 + + + + year + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 186 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Cryptocurrency - libs/ui/src/lib/i18n.ts - 47 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - ETF - libs/ui/src/lib/i18n.ts - 48 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Mutual Fund - libs/ui/src/lib/i18n.ts - 49 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Precious Metal - libs/ui/src/lib/i18n.ts - 50 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Private Equity - libs/ui/src/lib/i18n.ts - 51 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Stock - libs/ui/src/lib/i18n.ts - 52 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Africa - libs/ui/src/lib/i18n.ts - 55 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Asia - libs/ui/src/lib/i18n.ts - 56 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Europe - libs/ui/src/lib/i18n.ts - 57 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - North America - libs/ui/src/lib/i18n.ts - 58 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Oceania - libs/ui/src/lib/i18n.ts - 59 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - South America - libs/ui/src/lib/i18n.ts - 60 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Time to add your first activity. - libs/ui/src/lib/no-transactions-info/no-transactions-info.component.html - 12 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - No data available - 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 + 191 - libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 399 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Choose or drop a file here - apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html - 85 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - You are using the Live Demo. - apps/client/src/app/app.component.html - 17 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Fee - libs/ui/src/lib/i18n.ts - 32 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Distribution of corporate earnings - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 33 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - 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 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - 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 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Revenue for lending out money - apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 39 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - - Interest - apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 280 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 191 - - Add tag + + Starting from - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 3 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Do you really want to delete this tag? - apps/client/src/app/components/admin-tag/admin-tag.component.ts - 78 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - France - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 110 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 459 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 475 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Update tag - apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.html - 2 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Add Tag - apps/client/src/app/components/admin-tag/admin-tag.component.html - 11 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - 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 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Currency Cluster Risks - apps/client/src/app/pages/portfolio/fire/fire-page.html - 124 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Account Cluster Risks - apps/client/src/app/pages/portfolio/fire/fire-page.html - 137 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Benchmark - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html - 219 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Settings - apps/client/src/app/components/user-account-settings/user-account-settings.html - 2 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Membership - 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 + 185 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 39 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Find holding... - libs/ui/src/lib/assistant/assistant.component.ts - 89 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Transfer Cash Balance - apps/client/src/app/components/accounts-table/accounts-table.component.html - 9 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 7 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Access - 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 + 185 - apps/client/src/app/pages/user-account/user-account-page.component.ts - 45 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 + + + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - To - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 29 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Transfer - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 66 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Finland - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 467 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Version - apps/client/src/app/components/admin-overview/admin-overview.html - 7 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - No entries... - 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 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - From - apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.html - 11 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Asset Profile - apps/client/src/app/components/admin-jobs/admin-jobs.html - 31 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Last All Time High - libs/ui/src/lib/benchmark/benchmark.component.html - 63 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Add Manually - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 19 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Do you really want to delete this asset profile? - apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 184 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Search - apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html - 16 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - 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 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - User - apps/client/src/app/components/admin-users/admin-users.html - 29 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 185 - - - Ghostfolio vs comparison table apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 185 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html - 48 + 190 - - - Canada - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 530 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - - Open Source Wealth Management Software - apps/client/src/app/pages/i18n/i18n-page.html - 13 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - - app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3 - apps/client/src/app/pages/i18n/i18n-page.html - 9 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - - Oops, cash balance transfer has failed. - apps/client/src/app/pages/accounts/accounts-page.component.ts - 305 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - - Poland - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 120 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - - Extreme Fear - libs/ui/src/lib/i18n.ts - 63 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - - Extreme Greed - libs/ui/src/lib/i18n.ts - 64 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - - Neutral - libs/ui/src/lib/i18n.ts - 67 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - - South Africa - apps/client/src/app/pages/resources/personal-finance-tools/products.ts - 228 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - - Oops! Could not parse historical data. - apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts - 205 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - - Do you really want to delete this system message? - apps/client/src/app/components/admin-overview/admin-overview.component.ts - 159 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - - 200-Day Trend - libs/ui/src/lib/benchmark/benchmark.component.html - 39 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 - - - 50-Day Trend - libs/ui/src/lib/benchmark/benchmark.component.html - 15 + apps/client/src/app/pages/resources/personal-finance-tools/product-page-template.html + 190 From cbea8ac9d3d8958d4559af5d23f302d79e7cb9bd Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 4 Dec 2023 19:53:50 +0100 Subject: [PATCH 193/194] Feature/increase tab height on mobile (#2712) * Increase tab height on mobile * Update changelog --- CHANGELOG.md | 1 + apps/client/src/styles.scss | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 28910d5fe..ff17bac3a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Increased the height of the tabs on mobile - Improved the language localization for German (`de`) ## 2.28.0 - 2023-12-02 diff --git a/apps/client/src/styles.scss b/apps/client/src/styles.scss index 7085effc5..fbcc5e73f 100644 --- a/apps/client/src/styles.scss +++ b/apps/client/src/styles.scss @@ -539,6 +539,12 @@ ngx-skeleton-loader { --mdc-tab-indicator-active-indicator-color: transparent; } + @media (max-width: 575.98px) { + .mat-mdc-tab-link { + --mdc-secondary-navigation-tab-container-height: 3rem; + } + } + @media (min-width: 576px) { flex-direction: row-reverse; From 43f67ba832975d1f5f37f823f82b239fb10f3745 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 4 Dec 2023 19:54:43 +0100 Subject: [PATCH 194/194] Feature/upgrade ng extract i18n merge to version 2.9.0 (#2715) * Upgrade ng-extract-i18n-merge to version 2.9.0 * Update changelog --- CHANGELOG.md | 1 + package.json | 2 +- yarn.lock | 8 ++++---- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ff17bac3a..8ed160e04 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Increased the height of the tabs on mobile - Improved the language localization for German (`de`) +- Upgraded `ng-extract-i18n-merge` from version `2.8.3` to `2.9.0` ## 2.28.0 - 2023-12-02 diff --git a/package.json b/package.json index 1df537ff8..a95f3a279 100644 --- a/package.json +++ b/package.json @@ -113,7 +113,7 @@ "lodash": "4.17.21", "marked": "4.2.12", "ms": "3.0.0-canary.1", - "ng-extract-i18n-merge": "2.8.3", + "ng-extract-i18n-merge": "2.9.0", "ngx-device-detector": "5.0.1", "ngx-markdown": "15.1.0", "ngx-skeleton-loader": "7.0.0", diff --git a/yarn.lock b/yarn.lock index ac0a5db2e..85f19044e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14416,10 +14416,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.8.3: - version "2.8.3" - resolved "https://registry.yarnpkg.com/ng-extract-i18n-merge/-/ng-extract-i18n-merge-2.8.3.tgz#a092f7758df7c566df7a1d710dbc709c6a8f56d1" - integrity sha512-w6LdzpfjRBLpT7lnMEqduivjn6kg2oKDZBL6P9W5GKRZ4bgmFthAmwN1lvWrzkwcPHPARJR+qC4DBRVsv4vmkg== +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== 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"