From 753804c0111d75e23e013c94ae7475491dec740e Mon Sep 17 00:00:00 2001 From: Kenrick Tandrian <60643640+KenTandrian@users.noreply.github.com> Date: Tue, 10 Feb 2026 03:35:04 +0700 Subject: [PATCH 01/74] Task/improve activities table type safety (#6295) * Improve activities table type safety --- .../lib/interfaces/activities.interface.ts | 2 +- .../activities-table.component.html | 36 ++--- .../activities-table.component.ts | 138 +++++++++--------- 3 files changed, 90 insertions(+), 86 deletions(-) diff --git a/libs/common/src/lib/interfaces/activities.interface.ts b/libs/common/src/lib/interfaces/activities.interface.ts index 8c88cc2cf..b9e64984b 100644 --- a/libs/common/src/lib/interfaces/activities.interface.ts +++ b/libs/common/src/lib/interfaces/activities.interface.ts @@ -8,7 +8,7 @@ export interface Activity extends Order { error?: ActivityError; feeInAssetProfileCurrency: number; feeInBaseCurrency: number; - SymbolProfile?: EnhancedSymbolProfile; + SymbolProfile: EnhancedSymbolProfile; tagIds?: string[]; tags?: Tag[]; unitPriceInAssetProfileCurrency: number; diff --git a/libs/ui/src/lib/activities-table/activities-table.component.html b/libs/ui/src/lib/activities-table/activities-table.component.html index b8e1882d4..bdb1e6373 100644 --- a/libs/ui/src/lib/activities-table/activities-table.component.html +++ b/libs/ui/src/lib/activities-table/activities-table.component.html @@ -21,7 +21,7 @@ @@ -23,7 +23,7 @@ [matAutocomplete]="autocomplete" [matChipInputFor]="chipList" [matChipInputSeparatorKeyCodes]="separatorKeysCodes" - [placeholder]="placeholder" + [placeholder]="placeholder()" (matChipInputTokenEnd)="onAddFilter($event)" /> @@ -35,7 +35,7 @@ @for (filter of filterGroup.filters; track filter) { - {{ filter.label | gfSymbol }} + {{ filter.label ?? '' | gfSymbol }} } @@ -46,7 +46,7 @@ disabled mat-icon-button matSuffix - [ngClass]="{ 'd-none': !isLoading }" + [ngClass]="{ 'd-none': !isLoading() }" > diff --git a/libs/ui/src/lib/activities-filter/activities-filter.component.ts b/libs/ui/src/lib/activities-filter/activities-filter.component.ts index 34f883c67..25fad683d 100644 --- a/libs/ui/src/lib/activities-filter/activities-filter.component.ts +++ b/libs/ui/src/lib/activities-filter/activities-filter.component.ts @@ -8,14 +8,14 @@ import { ChangeDetectionStrategy, Component, ElementRef, - EventEmitter, Input, OnChanges, - OnDestroy, - Output, SimpleChanges, - ViewChild + ViewChild, + input, + output } from '@angular/core'; +import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { FormControl, ReactiveFormsModule } from '@angular/forms'; import { MatAutocomplete, @@ -30,8 +30,7 @@ import { IonIcon } from '@ionic/angular/standalone'; import { addIcons } from 'ionicons'; import { closeOutline, searchOutline } from 'ionicons/icons'; import { groupBy } from 'lodash'; -import { BehaviorSubject, Observable, Subject } from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; +import { BehaviorSubject } from 'rxjs'; import { translate } from '../i18n'; @@ -53,28 +52,26 @@ import { translate } from '../i18n'; styleUrls: ['./activities-filter.component.scss'], templateUrl: './activities-filter.component.html' }) -export class GfActivitiesFilterComponent implements OnChanges, OnDestroy { +export class GfActivitiesFilterComponent implements OnChanges { @Input() allFilters: Filter[]; - @Input() isLoading: boolean; - @Input() placeholder: string; - @Output() valueChanged = new EventEmitter(); + @ViewChild('autocomplete') protected matAutocomplete: MatAutocomplete; + @ViewChild('searchInput') protected searchInput: ElementRef; - @ViewChild('autocomplete') matAutocomplete: MatAutocomplete; - @ViewChild('searchInput') searchInput: ElementRef; + public readonly isLoading = input.required(); + public readonly placeholder = input.required(); + public readonly valueChanged = output(); - public filterGroups$: Subject = new BehaviorSubject([]); - public filters$: Subject = new BehaviorSubject([]); - public filters: Observable = this.filters$.asObservable(); - public searchControl = new FormControl(undefined); - public selectedFilters: Filter[] = []; - public separatorKeysCodes: number[] = [ENTER, COMMA]; - - private unsubscribeSubject = new Subject(); + protected readonly filterGroups$ = new BehaviorSubject([]); + protected readonly searchControl = new FormControl( + null + ); + protected selectedFilters: Filter[] = []; + protected readonly separatorKeysCodes: number[] = [ENTER, COMMA]; public constructor() { this.searchControl.valueChanges - .pipe(takeUntil(this.unsubscribeSubject)) + .pipe(takeUntilDestroyed()) .subscribe((filterOrSearchTerm) => { if (filterOrSearchTerm) { const searchTerm = @@ -97,41 +94,39 @@ export class GfActivitiesFilterComponent implements OnChanges, OnDestroy { } } - public onAddFilter({ input, value }: MatChipInputEvent) { + public onAddFilter({ chipInput, value }: MatChipInputEvent) { if (value?.trim()) { this.updateFilters(); } // Reset the input value - if (input) { - input.value = ''; + if (chipInput.inputElement) { + chipInput.inputElement.value = ''; } - this.searchControl.setValue(undefined); + this.searchControl.setValue(null); } public onRemoveFilter(aFilter: Filter) { - this.selectedFilters = this.selectedFilters.filter((filter) => { - return filter.id !== aFilter.id; + this.selectedFilters = this.selectedFilters.filter(({ id }) => { + return id !== aFilter.id; }); this.updateFilters(); } public onSelectFilter(event: MatAutocompleteSelectedEvent) { - this.selectedFilters.push( - this.allFilters.find((filter) => { - return filter.id === event.option.value; - }) - ); + const filter = this.allFilters.find(({ id }) => { + return id === event.option.value; + }); + + if (filter) { + this.selectedFilters.push(filter); + } + this.updateFilters(); this.searchInput.nativeElement.value = ''; - this.searchControl.setValue(undefined); - } - - public ngOnDestroy() { - this.unsubscribeSubject.next(); - this.unsubscribeSubject.complete(); + this.searchControl.setValue(null); } private getGroupedFilters(searchTerm?: string) { @@ -139,23 +134,23 @@ export class GfActivitiesFilterComponent implements OnChanges, OnDestroy { this.allFilters .filter((filter) => { // Filter selected filters - return !this.selectedFilters.some((selectedFilter) => { - return selectedFilter.id === filter.id; + return !this.selectedFilters.some(({ id }) => { + return id === filter.id; }); }) .filter((filter) => { if (searchTerm) { // Filter by search term return filter.label - .toLowerCase() + ?.toLowerCase() .includes(searchTerm.toLowerCase()); } return filter; }) - .sort((a, b) => a.label?.localeCompare(b.label)), - (filter) => { - return filter.type; + .sort((a, b) => (a.label ?? '').localeCompare(b.label ?? '')), + ({ type }) => { + return type; } ); From 25200bfd6d45871d109db8eca2f4004029d2a58c Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 21 Feb 2026 08:33:51 +0100 Subject: [PATCH 40/74] Task/improve usability of portfolio summary in presenter view (#6360) * Improve usability in presenter view * Update changelog --- CHANGELOG.md | 1 + .../portfolio-summary/portfolio-summary.component.html | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c0fb2b2e4..594b8faa1 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 usability of the portfolio summary tab on the home page in the _Presenter View_ - Refreshed the cryptocurrencies list - Improved the language localization for German (`de`) - Improved the language localization for Spanish (`es`) diff --git a/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html b/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html index 99e0c9a53..0e26a49a8 100644 --- a/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html +++ b/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html @@ -184,18 +184,21 @@ [ngClass]="{ 'cursor-pointer': hasPermissionToUpdateUserSettings && + !user?.settings?.isRestrictedView && user?.subscription?.type !== 'Basic' }" (click)=" hasPermissionToUpdateUserSettings && + !user?.settings?.isRestrictedView && user?.subscription?.type !== 'Basic' && onEditEmergencyFund() " > @if ( hasPermissionToUpdateUserSettings && - user?.subscription?.type !== 'Basic' && - !isLoading + !isLoading && + !user?.settings?.isRestrictedView && + user?.subscription?.type !== 'Basic' ) { Date: Sat, 21 Feb 2026 08:37:55 +0100 Subject: [PATCH 41/74] Release 2.241.0 (#6361) --- CHANGELOG.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 594b8faa1..6f485abeb 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.241.0 - 2026-02-21 ### Changed diff --git a/package-lock.json b/package-lock.json index 636147048..2a6d30cc8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ghostfolio", - "version": "2.240.0", + "version": "2.241.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ghostfolio", - "version": "2.240.0", + "version": "2.241.0", "hasInstallScript": true, "license": "AGPL-3.0", "dependencies": { diff --git a/package.json b/package.json index 4bfdd1cb1..3dcfde537 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.240.0", + "version": "2.241.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From ec92116acc0ec327c24622dd79b3ef58197accf0 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 22 Feb 2026 08:59:52 +0100 Subject: [PATCH 42/74] Task/remove unused OnDestroy hook in admin page component (#6366) * Remove unused OnDestroy hook --- .../src/app/pages/admin/admin-page.component.ts | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/apps/client/src/app/pages/admin/admin-page.component.ts b/apps/client/src/app/pages/admin/admin-page.component.ts index b9243dcb9..284d3c41d 100644 --- a/apps/client/src/app/pages/admin/admin-page.component.ts +++ b/apps/client/src/app/pages/admin/admin-page.component.ts @@ -1,7 +1,7 @@ import { TabConfiguration } from '@ghostfolio/common/interfaces'; import { internalRoutes } from '@ghostfolio/common/routes/routes'; -import { Component, OnDestroy, OnInit } from '@angular/core'; +import { Component, OnInit } from '@angular/core'; import { MatTabsModule } from '@angular/material/tabs'; import { RouterModule } from '@angular/router'; import { IonIcon } from '@ionic/angular/standalone'; @@ -14,7 +14,6 @@ import { settingsOutline } from 'ionicons/icons'; import { DeviceDetectorService } from 'ngx-device-detector'; -import { Subject } from 'rxjs'; @Component({ host: { class: 'page has-tabs' }, @@ -23,12 +22,10 @@ import { Subject } from 'rxjs'; styleUrls: ['./admin-page.scss'], templateUrl: './admin-page.html' }) -export class AdminPageComponent implements OnDestroy, OnInit { +export class AdminPageComponent implements OnInit { public deviceType: string; public tabs: TabConfiguration[] = []; - private unsubscribeSubject = new Subject(); - public constructor(private deviceService: DeviceDetectorService) { addIcons({ flashOutline, @@ -74,9 +71,4 @@ export class AdminPageComponent implements OnDestroy, OnInit { } ]; } - - public ngOnDestroy() { - this.unsubscribeSubject.next(); - this.unsubscribeSubject.complete(); - } } From e3579f6811df4e83f7e566f57b7a8b94f971b7f2 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 22 Feb 2026 09:00:45 +0100 Subject: [PATCH 43/74] Task/add missing OnDestroy hook in user account registration dialog (#6368) * Add missing OnDestroy hook --- .../user-account-registration-dialog.component.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.component.ts b/apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.component.ts index a7707ad3b..4cc0f52f8 100644 --- a/apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.component.ts +++ b/apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.component.ts @@ -9,6 +9,7 @@ import { Component, CUSTOM_ELEMENTS_SCHEMA, Inject, + OnDestroy, ViewChild } from '@angular/core'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; @@ -52,7 +53,7 @@ import { UserAccountRegistrationDialogParams } from './interfaces/interfaces'; styleUrls: ['./user-account-registration-dialog.scss'], templateUrl: 'user-account-registration-dialog.html' }) -export class GfUserAccountRegistrationDialogComponent { +export class GfUserAccountRegistrationDialogComponent implements OnDestroy { @ViewChild(MatStepper) stepper!: MatStepper; public accessToken: string; @@ -95,4 +96,9 @@ export class GfUserAccountRegistrationDialogComponent { public onChangeDislaimerChecked() { this.isDisclaimerChecked = !this.isDisclaimerChecked; } + + public ngOnDestroy() { + this.unsubscribeSubject.next(); + this.unsubscribeSubject.complete(); + } } From 5acbe25d2504a675043199a2c3cc5ab62a33e58d Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 22 Feb 2026 09:01:48 +0100 Subject: [PATCH 44/74] Task/clean up changelog (#6362) * Clean up --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f485abeb..2627f1a19 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,7 +19,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fixed an issue with `balanceInBaseCurrency` of the accounts in the value redaction interceptor for the impersonation mode - Fixed an issue with `comment` of the accounts in the value redaction interceptor for the impersonation mode - Fixed an issue with `dividendInBaseCurrency` of the accounts in the value redaction interceptor for the impersonation mode -- Fixed an issue with `dividendInBaseCurrency` of the accounts in the value redaction interceptor for the impersonation mode - Fixed an issue with `interestInBaseCurrency` of the accounts in the value redaction interceptor for the impersonation mode - Fixed an issue with `value` of the accounts in the value redaction interceptor for the impersonation mode From 97915a3ca9acaece4da9f844c566fad4fd4643ea Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 22 Feb 2026 09:02:37 +0100 Subject: [PATCH 45/74] Bugfix/fix page size for presets in market data table of admin control panel (#6363) * Fix page size for presets * Update changelog --- CHANGELOG.md | 6 ++++++ .../admin-market-data/admin-market-data.component.ts | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2627f1a19..f4a857ab3 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 page size for presets in the historical market data table of the admin control panel + ## 2.241.0 - 2026-02-21 ### Changed 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 6a079c20a..0beca6f3c 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 @@ -379,7 +379,7 @@ export class GfAdminMarketDataComponent this.pageSize = this.activeFilters.length === 1 && this.activeFilters[0].type === 'PRESET_ID' - ? undefined + ? Number.MAX_SAFE_INTEGER : DEFAULT_PAGE_SIZE; if (pageIndex === 0 && this.paginator) { From 4897f34d51e0451b18a88cded85c5bfd41d009e0 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 22 Feb 2026 10:31:59 +0100 Subject: [PATCH 46/74] Task/change account field to optional in create or update activity dialog (#6371) * Change account field to optional for every case * Update changelog --- CHANGELOG.md | 4 ++++ .../create-or-update-activity-dialog.component.ts | 15 +-------------- .../create-or-update-activity-dialog.html | 8 ++------ 3 files changed, 7 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f4a857ab3..ecd2ce5c8 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 + +- Changed the account field to optional in the create or update activity dialog + ### Fixed - Fixed the page size for presets in the historical market data table of the admin control panel diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts index 8695f04ed..fc42a504d 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts @@ -188,8 +188,7 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy { !this.data.activity?.accountId && this.mode === 'create' ? this.data.accounts[0].id - : this.data.activity?.accountId, - Validators.required + : this.data.activity?.accountId ], assetClass: [this.data.activity?.SymbolProfile?.assetClass], assetSubClass: [this.data.activity?.SymbolProfile?.assetSubClass], @@ -365,11 +364,6 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy { (this.activityForm.get('dataSource').value === 'MANUAL' && type === 'BUY') ) { - this.activityForm - .get('accountId') - .removeValidators(Validators.required); - this.activityForm.get('accountId').updateValueAndValidity(); - const currency = this.data.accounts.find(({ id }) => { return id === this.activityForm.get('accountId').value; @@ -397,11 +391,6 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy { this.activityForm.get('updateAccountBalance').disable(); this.activityForm.get('updateAccountBalance').setValue(false); } else if (['FEE', 'INTEREST', 'LIABILITY'].includes(type)) { - this.activityForm - .get('accountId') - .removeValidators(Validators.required); - this.activityForm.get('accountId').updateValueAndValidity(); - const currency = this.data.accounts.find(({ id }) => { return id === this.activityForm.get('accountId').value; @@ -447,8 +436,6 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy { this.activityForm.get('updateAccountBalance').setValue(false); } } else { - this.activityForm.get('accountId').setValidators(Validators.required); - this.activityForm.get('accountId').updateValueAndValidity(); this.activityForm .get('dataSource') .setValidators(Validators.required); diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html index 42fbd0ebf..278ddcbbd 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -84,12 +84,8 @@ > Account - @if ( - !activityForm.get('accountId').hasValidator(Validators.required) || - (!activityForm.get('accountId').value && mode === 'update') - ) { - - } + + @for (account of data.accounts; track account) {
From 3eb9d53220dd158917281db85c62dc23876e36e9 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 22 Feb 2026 10:45:14 +0100 Subject: [PATCH 47/74] Bugfix/validation of valuables (#6372) * Fix validation of valuables * Update changelog --- CHANGELOG.md | 1 + .../services/data-provider/data-provider.service.ts | 12 ++++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ecd2ce5c8..34aff43e1 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 ### Fixed +- Fixed a validation issue for valuables used in the create and import activity logic - Fixed the page size for presets in the historical market data table of the admin control panel ## 2.241.0 - 2026-02-21 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 eb9816c67..8ee8761c0 100644 --- a/apps/api/src/services/data-provider/data-provider.service.ts +++ b/apps/api/src/services/data-provider/data-provider.service.ts @@ -244,11 +244,15 @@ export class DataProviderService implements OnModuleInit { }); if (!assetProfiles[assetProfileIdentifier]) { - if (['FEE', 'INTEREST', 'LIABILITY'].includes(type)) { + if ( + (dataSource === DataSource.MANUAL && type === 'BUY') || + ['FEE', 'INTEREST', 'LIABILITY'].includes(type) + ) { const assetProfileInImport = assetProfilesWithMarketDataDto?.find( - (profile) => { + (assetProfile) => { return ( - profile.dataSource === dataSource && profile.symbol === symbol + assetProfile.dataSource === dataSource && + assetProfile.symbol === symbol ); } ); @@ -257,7 +261,7 @@ export class DataProviderService implements OnModuleInit { currency, dataSource, symbol, - name: assetProfileInImport?.name + name: assetProfileInImport?.name ?? symbol }; continue; From 98891e195c569b762389723a5258c0c8c084a945 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 22 Feb 2026 11:01:18 +0100 Subject: [PATCH 48/74] Release 2.242.0 (#6375) * Release 2.242.0 * Update changelog --- CHANGELOG.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 34aff43e1..91f80d3ba 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.242.0 - 2026-02-22 ### Changed diff --git a/package-lock.json b/package-lock.json index 2a6d30cc8..7a1ebfa67 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ghostfolio", - "version": "2.241.0", + "version": "2.242.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ghostfolio", - "version": "2.241.0", + "version": "2.242.0", "hasInstallScript": true, "license": "AGPL-3.0", "dependencies": { diff --git a/package.json b/package.json index 3dcfde537..2bf5eebe0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.241.0", + "version": "2.242.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From 14f0d2bd8b827c1cc9fe5851c604b02c897fb792 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 23 Feb 2026 17:27:04 +0100 Subject: [PATCH 49/74] Task/remove unused OnDestroy hook in OSS friends page component (#6374) * Remove unused OnDestroy hook --- .../about/oss-friends/oss-friends-page.component.ts | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/apps/client/src/app/pages/about/oss-friends/oss-friends-page.component.ts b/apps/client/src/app/pages/about/oss-friends/oss-friends-page.component.ts index bdbbdf9a7..c2e500a52 100644 --- a/apps/client/src/app/pages/about/oss-friends/oss-friends-page.component.ts +++ b/apps/client/src/app/pages/about/oss-friends/oss-friends-page.component.ts @@ -1,10 +1,9 @@ -import { Component, OnDestroy } from '@angular/core'; +import { Component } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatCardModule } from '@angular/material/card'; import { IonIcon } from '@ionic/angular/standalone'; import { addIcons } from 'ionicons'; import { arrowForwardOutline } from 'ionicons/icons'; -import { Subject } from 'rxjs'; const ossFriends = require('../../../../assets/oss-friends.json'); @@ -14,17 +13,10 @@ const ossFriends = require('../../../../assets/oss-friends.json'); styleUrls: ['./oss-friends-page.scss'], templateUrl: './oss-friends-page.html' }) -export class GfOpenSourceSoftwareFriendsPageComponent implements OnDestroy { +export class GfOpenSourceSoftwareFriendsPageComponent { public ossFriends = ossFriends.data; - private unsubscribeSubject = new Subject(); - public constructor() { addIcons({ arrowForwardOutline }); } - - public ngOnDestroy() { - this.unsubscribeSubject.next(); - this.unsubscribeSubject.complete(); - } } From c7cfc87e208d584d43875c7c336a0e171f65d371 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 23 Feb 2026 17:29:32 +0100 Subject: [PATCH 50/74] Task/remove unused OnDestroy hook in changelog page component (#6373) * Remove unused OnDestroy hook --- .../about/changelog/changelog-page.component.ts | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/apps/client/src/app/pages/about/changelog/changelog-page.component.ts b/apps/client/src/app/pages/about/changelog/changelog-page.component.ts index 69b397370..d7f583bd1 100644 --- a/apps/client/src/app/pages/about/changelog/changelog-page.component.ts +++ b/apps/client/src/app/pages/about/changelog/changelog-page.component.ts @@ -1,7 +1,6 @@ -import { Component, OnDestroy } from '@angular/core'; +import { Component } from '@angular/core'; import { MarkdownModule } from 'ngx-markdown'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; -import { Subject } from 'rxjs'; @Component({ imports: [MarkdownModule, NgxSkeletonLoaderModule], @@ -9,17 +8,10 @@ import { Subject } from 'rxjs'; styleUrls: ['./changelog-page.scss'], templateUrl: './changelog-page.html' }) -export class GfChangelogPageComponent implements OnDestroy { +export class GfChangelogPageComponent { public isLoading = true; - private unsubscribeSubject = new Subject(); - public onLoad() { this.isLoading = false; } - - public ngOnDestroy() { - this.unsubscribeSubject.next(); - this.unsubscribeSubject.complete(); - } } From f5d99bad241440651f9fe473d3f2113b44635400 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 23 Feb 2026 20:05:04 +0100 Subject: [PATCH 51/74] Bugfix/create activities of type fee, interest or liability (#6378) * Fix creation of activities with type FEE, INTEREST or LIABILITY * Update changelog --- CHANGELOG.md | 6 ++++++ .../create-or-update-activity-dialog.component.ts | 9 +++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 91f80d3ba..160b4cbf0 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 an issue when creating activities of type `FEE`, `INTEREST` or `LIABILITY` + ## 2.242.0 - 2026-02-22 ### Changed diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts index fc42a504d..c7cd63191 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts @@ -501,11 +501,12 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy { comment: this.activityForm.get('comment').value || null, currency: this.activityForm.get('currency').value, customCurrency: this.activityForm.get('currencyOfUnitPrice').value, + dataSource: ['FEE', 'INTEREST', 'LIABILITY', 'VALUABLE'].includes( + this.activityForm.get('type').value + ) + ? 'MANUAL' + : this.activityForm.get('dataSource').value, date: this.activityForm.get('date').value, - dataSource: - this.activityForm.get('type').value === 'VALUABLE' - ? 'MANUAL' - : this.activityForm.get('dataSource').value, fee: this.activityForm.get('fee').value, quantity: this.activityForm.get('quantity').value, symbol: From 7bcd18711a3cae44636f6877a3005faf5c97d193 Mon Sep 17 00:00:00 2001 From: Vic Chen Date: Tue, 24 Feb 2026 03:17:31 +0800 Subject: [PATCH 52/74] Task/improve language localization for ZH 20260217 (#6348) * Improve language localization for ZH * Update changelog --- CHANGELOG.md | 4 ++++ apps/client/src/locales/messages.zh.xlf | 8 ++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 160b4cbf0..b87e4822d 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 Chinese (`zh`) + ### Fixed - Fixed an issue when creating activities of type `FEE`, `INTEREST` or `LIABILITY` diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 9feb0e546..67007cdef 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -7891,7 +7891,7 @@ Fee Ratio (legacy) - 费率 + 费率(旧版) apps/client/src/app/pages/i18n/i18n-page.html 152 @@ -7915,7 +7915,7 @@ Fee Ratio - Fee Ratio + 费率 apps/client/src/app/pages/i18n/i18n-page.html 161 @@ -7923,7 +7923,7 @@ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) - The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) + 费用已超过您总投资金额的 ${thresholdMax}%(${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 163 @@ -7931,7 +7931,7 @@ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) - The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) + 费用未超过您总投资金额的 ${thresholdMax}%(${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 167 From 236e1aacf56e9d876f17ebdcef4328a4141fa034 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 23 Feb 2026 20:29:07 +0100 Subject: [PATCH 53/74] Task/upgrade nestjs to version 11.1.14 (#6379) * Upgrade nestjs to version 11.1.14 * Update changelog --- CHANGELOG.md | 1 + package-lock.json | 223 +++++++++++++++++++--------------------------- package.json | 16 ++-- 3 files changed, 100 insertions(+), 140 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b87e4822d..a482c10e8 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 language localization for Chinese (`zh`) +- Upgraded `nestjs` from version `11.1.8` to `11.1.14` ### Fixed diff --git a/package-lock.json b/package-lock.json index 7a1ebfa67..9d022919b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,15 +27,15 @@ "@ionic/angular": "8.7.8", "@keyv/redis": "4.4.0", "@nestjs/bull": "11.0.4", - "@nestjs/cache-manager": "3.0.1", - "@nestjs/common": "11.1.8", - "@nestjs/config": "4.0.2", - "@nestjs/core": "11.1.8", + "@nestjs/cache-manager": "3.1.0", + "@nestjs/common": "11.1.14", + "@nestjs/config": "4.0.3", + "@nestjs/core": "11.1.14", "@nestjs/event-emitter": "3.0.1", - "@nestjs/jwt": "11.0.1", + "@nestjs/jwt": "11.0.2", "@nestjs/passport": "11.0.5", - "@nestjs/platform-express": "11.1.8", - "@nestjs/schedule": "6.0.1", + "@nestjs/platform-express": "11.1.14", + "@nestjs/schedule": "6.1.1", "@nestjs/serve-static": "5.0.4", "@openrouter/ai-sdk-provider": "0.7.2", "@prisma/client": "6.19.0", @@ -107,7 +107,7 @@ "@eslint/eslintrc": "3.3.1", "@eslint/js": "9.35.0", "@nestjs/schematics": "11.0.9", - "@nestjs/testing": "11.1.8", + "@nestjs/testing": "11.1.14", "@nx/angular": "22.4.5", "@nx/eslint-plugin": "22.4.5", "@nx/jest": "22.4.5", @@ -3617,6 +3617,16 @@ "dev": true, "license": "MIT" }, + "node_modules/@borewit/text-codec": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@borewit/text-codec/-/text-codec-0.2.1.tgz", + "integrity": "sha512-k7vvKPbf7J2fZ5klGRD9AeKfUvojuZIQ3BT5u7Jfv+puwXkUBUT5PVyMDfJZpy30CBDXGMgw7fguK/lpOMBvgw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, "node_modules/@braintree/sanitize-url": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.1.tgz", @@ -7531,9 +7541,9 @@ } }, "node_modules/@nestjs/cache-manager": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@nestjs/cache-manager/-/cache-manager-3.0.1.tgz", - "integrity": "sha512-4UxTnR0fsmKL5YDalU2eLFVnL+OBebWUpX+hEduKGncrVKH4PPNoiRn1kXyOCjmzb0UvWgqubpssNouc8e0MCw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@nestjs/cache-manager/-/cache-manager-3.1.0.tgz", + "integrity": "sha512-pEIqYZrBcE8UdkJmZRduurvoUfdU+3kRPeO1R2muiMbZnRuqlki5klFFNllO9LyYWzrx98bd1j0PSPKSJk1Wbw==", "license": "MIT", "peerDependencies": { "@nestjs/common": "^9.0.0 || ^10.0.0 || ^11.0.0", @@ -7544,12 +7554,12 @@ } }, "node_modules/@nestjs/common": { - "version": "11.1.8", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.8.tgz", - "integrity": "sha512-bbsOqwld/GdBfiRNc4nnjyWWENDEicq4SH+R5AuYatvf++vf1x5JIsHB1i1KtfZMD3eRte0D4K9WXuAYil6XAg==", + "version": "11.1.14", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.14.tgz", + "integrity": "sha512-IN/tlqd7Nl9gl6f0jsWEuOrQDaCI9vHzxv0fisHysfBQzfQIkqlv5A7w4Qge02BUQyczXT9HHPgHtWHCxhjRng==", "license": "MIT", "dependencies": { - "file-type": "21.0.0", + "file-type": "21.3.0", "iterare": "1.2.1", "load-esm": "1.0.3", "tslib": "2.8.1", @@ -7575,57 +7585,24 @@ } }, "node_modules/@nestjs/config": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-4.0.2.tgz", - "integrity": "sha512-McMW6EXtpc8+CwTUwFdg6h7dYcBUpH5iUILCclAsa+MbCEvC9ZKu4dCHRlJqALuhjLw97pbQu62l4+wRwGeZqA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-4.0.3.tgz", + "integrity": "sha512-FQ3M3Ohqfl+nHAn5tp7++wUQw0f2nAk+SFKe8EpNRnIifPqvfJP6JQxPKtFLMOHbyer4X646prFG4zSRYEssQQ==", "license": "MIT", "dependencies": { - "dotenv": "16.4.7", - "dotenv-expand": "12.0.1", - "lodash": "4.17.21" + "dotenv": "17.2.3", + "dotenv-expand": "12.0.3", + "lodash": "4.17.23" }, "peerDependencies": { "@nestjs/common": "^10.0.0 || ^11.0.0", "rxjs": "^7.1.0" } }, - "node_modules/@nestjs/config/node_modules/dotenv": { - "version": "16.4.7", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", - "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/@nestjs/config/node_modules/dotenv-expand": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-12.0.1.tgz", - "integrity": "sha512-LaKRbou8gt0RNID/9RoI+J2rvXsBRPMV7p+ElHlPhcSARbCPDYcYG2s1TIzAfWv4YSgyY5taidWzzs31lNV3yQ==", - "license": "BSD-2-Clause", - "dependencies": { - "dotenv": "^16.4.5" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/@nestjs/config/node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "license": "MIT" - }, "node_modules/@nestjs/core": { - "version": "11.1.8", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.8.tgz", - "integrity": "sha512-7riWfmTmMhCJHZ5ZiaG+crj4t85IPCq/wLRuOUSigBYyFT2JZj0lVHtAdf4Davp9ouNI8GINBDt9h9b5Gz9nTw==", + "version": "11.1.14", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.14.tgz", + "integrity": "sha512-7OXPPMoDr6z+5NkoQKu4hOhfjz/YYqM3bNilPqv1WVFWrzSmuNXxvhbX69YMmNmRYascPXiwESqf5jJdjKXEww==", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -7677,13 +7654,13 @@ } }, "node_modules/@nestjs/jwt": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/@nestjs/jwt/-/jwt-11.0.1.tgz", - "integrity": "sha512-HXSsc7SAnCnjA98TsZqrE7trGtHDnYXWp4Ffy6LwSmck1QvbGYdMzBquXofX5l6tIRpeY4Qidl2Ti2CVG77Pdw==", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/@nestjs/jwt/-/jwt-11.0.2.tgz", + "integrity": "sha512-rK8aE/3/Ma45gAWfCksAXUNbOoSOUudU0Kn3rT39htPF7wsYXtKfjALKeKKJbFrIWbLjsbqfXX5bIJNvgBugGA==", "license": "MIT", "dependencies": { "@types/jsonwebtoken": "9.0.10", - "jsonwebtoken": "9.0.2" + "jsonwebtoken": "9.0.3" }, "peerDependencies": { "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0" @@ -7700,13 +7677,13 @@ } }, "node_modules/@nestjs/platform-express": { - "version": "11.1.8", - "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.8.tgz", - "integrity": "sha512-rL6pZH9BW7BnL5X2eWbJMtt86uloAKjFgyY5+L2UkizgfEp7rgAs0+Z1z0BcW2Pgu5+q8O7RKPNyHJ/9ZNz/ZQ==", + "version": "11.1.14", + "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.14.tgz", + "integrity": "sha512-Fs+/j+mBSBSXErOQJ/YdUn/HqJGSJ4pGfiJyYOyz04l42uNVnqEakvu1kXLbxMabR6vd6/h9d6Bi4tso9p7o4Q==", "license": "MIT", "dependencies": { - "cors": "2.8.5", - "express": "5.1.0", + "cors": "2.8.6", + "express": "5.2.1", "multer": "2.0.2", "path-to-regexp": "8.3.0", "tslib": "2.8.1" @@ -7721,12 +7698,12 @@ } }, "node_modules/@nestjs/schedule": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@nestjs/schedule/-/schedule-6.0.1.tgz", - "integrity": "sha512-v3yO6cSPAoBSSyH67HWnXHzuhPhSNZhRmLY38JvCt2sqY8sPMOODpcU1D79iUMFf7k16DaMEbL4Mgx61ZhiC8Q==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/@nestjs/schedule/-/schedule-6.1.1.tgz", + "integrity": "sha512-kQl1RRgi02GJ0uaUGCrXHCcwISsCsJDciCKe38ykJZgnAeeoeVWs8luWtBo4AqAAXm4nS5K8RlV0smHUJ4+2FA==", "license": "MIT", "dependencies": { - "cron": "4.3.3" + "cron": "4.4.0" }, "peerDependencies": { "@nestjs/common": "^10.0.0 || ^11.0.0", @@ -7910,9 +7887,9 @@ } }, "node_modules/@nestjs/testing": { - "version": "11.1.8", - "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.8.tgz", - "integrity": "sha512-E6K+0UTKztcPxJzLnQa7S34lFjZbrj3Z1r7c5y5WDrL1m5HD1H4AeyBhicHgdaFmxjLAva2bq0sYKy/S7cdeYA==", + "version": "11.1.14", + "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.14.tgz", + "integrity": "sha512-cQxX0ronsTbpfHz8/LYOVWXxoTxv6VoxrnuZoQaVX7QV2PSMqxWE7/9jSQR0GcqAFUEmFP34c6EJqfkjfX/k4Q==", "dev": true, "license": "MIT", "dependencies": { @@ -12408,14 +12385,13 @@ } }, "node_modules/@tokenizer/inflate": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.2.7.tgz", - "integrity": "sha512-MADQgmZT1eKjp06jpI2yozxaU9uVs4GzzgSL+uEq7bVcJ9V1ZXQkeGNql1fsSI0gMy1vhvNTNbUqrx+pZfJVmg==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@tokenizer/inflate/-/inflate-0.4.1.tgz", + "integrity": "sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==", "license": "MIT", "dependencies": { - "debug": "^4.4.0", - "fflate": "^0.8.2", - "token-types": "^6.0.0" + "debug": "^4.4.3", + "token-types": "^6.1.1" }, "engines": { "node": ">=18" @@ -16984,9 +16960,9 @@ "license": "MIT" }, "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", "license": "MIT", "dependencies": { "object-assign": "^4", @@ -16994,6 +16970,10 @@ }, "engines": { "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/corser": { @@ -17073,9 +17053,9 @@ "license": "MIT" }, "node_modules/cron": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/cron/-/cron-4.3.3.tgz", - "integrity": "sha512-B/CJj5yL3sjtlun6RtYHvoSB26EmQ2NUmhq9ZiJSyKIM4K/fqfh9aelDFlIayD2YMeFZqWLi9hHV+c+pq2Djkw==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/cron/-/cron-4.4.0.tgz", + "integrity": "sha512-fkdfq+b+AHI4cKdhZlppHveI/mgz2qpiYxcm+t5E5TsxX7QrLS1VE0+7GENEk9z0EeGPcpSciGv6ez24duWhwQ==", "license": "MIT", "dependencies": { "@types/luxon": "~3.7.0", @@ -17083,6 +17063,10 @@ }, "engines": { "node": ">=18.x" + }, + "funding": { + "type": "ko-fi", + "url": "https://ko-fi.com/intcreator" } }, "node_modules/cron-parser": { @@ -19852,18 +19836,19 @@ "license": "Apache-2.0" }, "node_modules/express": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", - "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", "license": "MIT", "dependencies": { "accepts": "^2.0.0", - "body-parser": "^2.2.0", + "body-parser": "^2.2.1", "content-disposition": "^1.0.0", "content-type": "^1.0.5", "cookie": "^0.7.1", "cookie-signature": "^1.2.1", "debug": "^4.4.0", + "depd": "^2.0.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", @@ -20129,12 +20114,6 @@ "filenamify-url": "2.1.2" } }, - "node_modules/fflate": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", - "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", - "license": "MIT" - }, "node_modules/figures": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", @@ -20175,14 +20154,14 @@ } }, "node_modules/file-type": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.0.0.tgz", - "integrity": "sha512-ek5xNX2YBYlXhiUXui3D/BXa3LdqPmoLJ7rqEx2bKJ7EAUEfmXgW0Das7Dc6Nr9MvqaOnIqiPV0mZk/r/UpNAg==", + "version": "21.3.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-21.3.0.tgz", + "integrity": "sha512-8kPJMIGz1Yt/aPEwOsrR97ZyZaD1Iqm8PClb1nYFclUCkBi0Ma5IsYNQzvSFS9ib51lWyIw5mIT9rWzI/xjpzA==", "license": "MIT", "dependencies": { - "@tokenizer/inflate": "^0.2.7", - "strtok3": "^10.2.2", - "token-types": "^6.0.0", + "@tokenizer/inflate": "^0.4.1", + "strtok3": "^10.3.4", + "token-types": "^6.1.1", "uint8array-extras": "^1.4.0" }, "engines": { @@ -24592,12 +24571,12 @@ } }, "node_modules/jsonwebtoken": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", - "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", + "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", "license": "MIT", "dependencies": { - "jws": "^3.2.2", + "jws": "^4.0.1", "lodash.includes": "^4.3.0", "lodash.isboolean": "^3.0.3", "lodash.isinteger": "^4.0.4", @@ -24613,27 +24592,6 @@ "npm": ">=6" } }, - "node_modules/jsonwebtoken/node_modules/jwa": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.2.tgz", - "integrity": "sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==", - "license": "MIT", - "dependencies": { - "buffer-equal-constant-time": "^1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jsonwebtoken/node_modules/jws": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.3.tgz", - "integrity": "sha512-byiJ0FLRdLdSVSReO/U4E7RoEyOCKnEnEPMjq3HxWtvzLsV08/i5RQKsFVNkCldrCaPr2vDNAOMsfs8T/Hze7g==", - "license": "MIT", - "dependencies": { - "jwa": "^1.4.2", - "safe-buffer": "^5.0.1" - } - }, "node_modules/jsonwebtoken/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -32900,11 +32858,12 @@ } }, "node_modules/token-types": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.0.4.tgz", - "integrity": "sha512-MD9MjpVNhVyH4fyd5rKphjvt/1qj+PtQUz65aFqAZA6XniWAuSFRjLk3e2VALEFlh9OwBpXUN7rfeqSnT/Fmkw==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.1.2.tgz", + "integrity": "sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww==", "license": "MIT", "dependencies": { + "@borewit/text-codec": "^0.2.1", "@tokenizer/token": "^0.3.0", "ieee754": "^1.2.1" }, @@ -33690,9 +33649,9 @@ "license": "MIT" }, "node_modules/uint8array-extras": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.4.0.tgz", - "integrity": "sha512-ZPtzy0hu4cZjv3z5NW9gfKnNLjoz4y6uv4HlelAjDK7sY/xOkKZv9xK/WQpcsBB3jEybChz9DPC2U/+cusjJVQ==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.5.0.tgz", + "integrity": "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==", "license": "MIT", "engines": { "node": ">=18" diff --git a/package.json b/package.json index 2bf5eebe0..5f80c3627 100644 --- a/package.json +++ b/package.json @@ -72,15 +72,15 @@ "@ionic/angular": "8.7.8", "@keyv/redis": "4.4.0", "@nestjs/bull": "11.0.4", - "@nestjs/cache-manager": "3.0.1", - "@nestjs/common": "11.1.8", - "@nestjs/config": "4.0.2", - "@nestjs/core": "11.1.8", + "@nestjs/cache-manager": "3.1.0", + "@nestjs/common": "11.1.14", + "@nestjs/config": "4.0.3", + "@nestjs/core": "11.1.14", "@nestjs/event-emitter": "3.0.1", - "@nestjs/jwt": "11.0.1", + "@nestjs/jwt": "11.0.2", "@nestjs/passport": "11.0.5", - "@nestjs/platform-express": "11.1.8", - "@nestjs/schedule": "6.0.1", + "@nestjs/platform-express": "11.1.14", + "@nestjs/schedule": "6.1.1", "@nestjs/serve-static": "5.0.4", "@openrouter/ai-sdk-provider": "0.7.2", "@prisma/client": "6.19.0", @@ -152,7 +152,7 @@ "@eslint/eslintrc": "3.3.1", "@eslint/js": "9.35.0", "@nestjs/schematics": "11.0.9", - "@nestjs/testing": "11.1.8", + "@nestjs/testing": "11.1.14", "@nx/angular": "22.4.5", "@nx/eslint-plugin": "22.4.5", "@nx/jest": "22.4.5", From cc92ecf62a014b27146338bb7a20ed6eeb525fba Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 23 Feb 2026 20:30:53 +0100 Subject: [PATCH 54/74] Release 2.243.0 (#6384) --- CHANGELOG.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a482c10e8..f806a260e 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.243.0 - 2026-02-23 ### Changed diff --git a/package-lock.json b/package-lock.json index 9d022919b..fadeca52d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ghostfolio", - "version": "2.242.0", + "version": "2.243.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ghostfolio", - "version": "2.242.0", + "version": "2.243.0", "hasInstallScript": true, "license": "AGPL-3.0", "dependencies": { diff --git a/package.json b/package.json index 5f80c3627..ad615c3a0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.242.0", + "version": "2.243.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From 90cc7af87c10a4bfc9eb00b218b2046b246c3aa6 Mon Sep 17 00:00:00 2001 From: Kenrick Tandrian <60643640+KenTandrian@users.noreply.github.com> Date: Tue, 24 Feb 2026 23:42:41 +0400 Subject: [PATCH 55/74] Task/improve type safety in fire calculator component (#6385) * fix(lib): resolve typescript errors * fix(lib): make unsubscribeSubject readonly * feat(lib): migrate outputs to signals * feat(lib): implement takeUntilDestroyed * feat(lib): add linebreak --- .../fire-calculator.component.ts | 128 ++++++++++-------- 1 file changed, 72 insertions(+), 56 deletions(-) diff --git a/libs/ui/src/lib/fire-calculator/fire-calculator.component.ts b/libs/ui/src/lib/fire-calculator/fire-calculator.component.ts index 7461f6729..8b472fc47 100644 --- a/libs/ui/src/lib/fire-calculator/fire-calculator.component.ts +++ b/libs/ui/src/lib/fire-calculator/fire-calculator.component.ts @@ -13,13 +13,13 @@ import { ChangeDetectorRef, Component, ElementRef, - EventEmitter, Input, OnChanges, OnDestroy, - Output, - ViewChild + ViewChild, + output } from '@angular/core'; +import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { FormBuilder, FormControl, @@ -55,9 +55,9 @@ import { startOfMonth, sub } from 'date-fns'; -import { isNumber } from 'lodash'; +import { isNil, isNumber } from 'lodash'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; -import { Subject, debounceTime, takeUntil } from 'rxjs'; +import { debounceTime } from 'rxjs'; import { FireCalculatorService } from './fire-calculator.service'; @@ -90,32 +90,31 @@ export class GfFireCalculatorComponent implements OnChanges, OnDestroy { @Input() retirementDate: Date; @Input() savingsRate = 0; - @Output() annualInterestRateChanged = new EventEmitter(); - @Output() calculationCompleted = - new EventEmitter(); - @Output() projectedTotalAmountChanged = new EventEmitter(); - @Output() retirementDateChanged = new EventEmitter(); - @Output() savingsRateChanged = new EventEmitter(); - @ViewChild('chartCanvas') chartCanvas: ElementRef; public calculatorForm = this.formBuilder.group({ - annualInterestRate: new FormControl(undefined), - paymentPerPeriod: new FormControl(undefined), - principalInvestmentAmount: new FormControl(undefined), - projectedTotalAmount: new FormControl(undefined), - retirementDate: new FormControl(undefined) + annualInterestRate: new FormControl(null), + paymentPerPeriod: new FormControl(null), + principalInvestmentAmount: new FormControl(null), + projectedTotalAmount: new FormControl(null), + retirementDate: new FormControl(null) }); public chart: Chart<'bar'>; public isLoading = true; public minDate = addDays(new Date(), 1); public periodsToRetire = 0; + protected readonly annualInterestRateChanged = output(); + protected readonly calculationCompleted = + output(); + protected readonly projectedTotalAmountChanged = output(); + protected readonly retirementDateChanged = output(); + protected readonly savingsRateChanged = output(); + private readonly CONTRIBUTION_PERIOD = 12; private readonly DEFAULT_RETIREMENT_DATE = startOfMonth( addYears(new Date(), 10) ); - private unsubscribeSubject = new Subject(); public constructor( private changeDetectorRef: ChangeDetectorRef, @@ -131,46 +130,56 @@ export class GfFireCalculatorComponent implements OnChanges, OnDestroy { ); this.calculatorForm.valueChanges - .pipe(takeUntil(this.unsubscribeSubject)) + .pipe(takeUntilDestroyed()) .subscribe(() => { this.initialize(); }); this.calculatorForm.valueChanges - .pipe(debounceTime(500), takeUntil(this.unsubscribeSubject)) + .pipe(debounceTime(500), takeUntilDestroyed()) .subscribe(() => { const { projectedTotalAmount, retirementDate } = this.calculatorForm.getRawValue(); - this.calculationCompleted.emit({ - projectedTotalAmount, - retirementDate - }); + if (projectedTotalAmount !== null && retirementDate !== null) { + this.calculationCompleted.emit({ + projectedTotalAmount, + retirementDate + }); + } }); this.calculatorForm .get('annualInterestRate') - .valueChanges.pipe(debounceTime(500), takeUntil(this.unsubscribeSubject)) + ?.valueChanges.pipe(debounceTime(500), takeUntilDestroyed()) .subscribe((annualInterestRate) => { - this.annualInterestRateChanged.emit(annualInterestRate); + if (annualInterestRate !== null) { + this.annualInterestRateChanged.emit(annualInterestRate); + } }); this.calculatorForm .get('paymentPerPeriod') - .valueChanges.pipe(debounceTime(500), takeUntil(this.unsubscribeSubject)) + ?.valueChanges.pipe(debounceTime(500), takeUntilDestroyed()) .subscribe((savingsRate) => { - this.savingsRateChanged.emit(savingsRate); + if (savingsRate !== null) { + this.savingsRateChanged.emit(savingsRate); + } }); this.calculatorForm .get('projectedTotalAmount') - .valueChanges.pipe(debounceTime(500), takeUntil(this.unsubscribeSubject)) + ?.valueChanges.pipe(debounceTime(500), takeUntilDestroyed()) .subscribe((projectedTotalAmount) => { - this.projectedTotalAmountChanged.emit(projectedTotalAmount); + if (projectedTotalAmount !== null) { + this.projectedTotalAmountChanged.emit(projectedTotalAmount); + } }); this.calculatorForm .get('retirementDate') - .valueChanges.pipe(debounceTime(500), takeUntil(this.unsubscribeSubject)) + ?.valueChanges.pipe(debounceTime(500), takeUntilDestroyed()) .subscribe((retirementDate) => { - this.retirementDateChanged.emit(retirementDate); + if (retirementDate !== null) { + this.retirementDateChanged.emit(retirementDate); + } }); } @@ -196,11 +205,11 @@ export class GfFireCalculatorComponent implements OnChanges, OnDestroy { this.calculatorForm.patchValue( { annualInterestRate: - this.calculatorForm.get('annualInterestRate').value, + this.calculatorForm.get('annualInterestRate')?.value, paymentPerPeriod: this.getPMT(), principalInvestmentAmount: this.calculatorForm.get( 'principalInvestmentAmount' - ).value, + )?.value, projectedTotalAmount: Math.round(this.getProjectedTotalAmount()) || 0, retirementDate: @@ -210,7 +219,7 @@ export class GfFireCalculatorComponent implements OnChanges, OnDestroy { emitEvent: false } ); - this.calculatorForm.get('principalInvestmentAmount').disable(); + this.calculatorForm.get('principalInvestmentAmount')?.disable(); this.changeDetectorRef.markForCheck(); }); @@ -219,42 +228,43 @@ export class GfFireCalculatorComponent implements OnChanges, OnDestroy { if (this.hasPermissionToUpdateUserSettings === true) { this.calculatorForm .get('annualInterestRate') - .enable({ emitEvent: false }); - this.calculatorForm.get('paymentPerPeriod').enable({ emitEvent: false }); + ?.enable({ emitEvent: false }); + this.calculatorForm.get('paymentPerPeriod')?.enable({ emitEvent: false }); this.calculatorForm .get('projectedTotalAmount') - .enable({ emitEvent: false }); + ?.enable({ emitEvent: false }); } else { this.calculatorForm .get('annualInterestRate') - .disable({ emitEvent: false }); - this.calculatorForm.get('paymentPerPeriod').disable({ emitEvent: false }); + ?.disable({ emitEvent: false }); + this.calculatorForm + .get('paymentPerPeriod') + ?.disable({ emitEvent: false }); this.calculatorForm .get('projectedTotalAmount') - .disable({ emitEvent: false }); + ?.disable({ emitEvent: false }); } - this.calculatorForm.get('retirementDate').disable({ emitEvent: false }); + this.calculatorForm.get('retirementDate')?.disable({ emitEvent: false }); } public setMonthAndYear( normalizedMonthAndYear: Date, datepicker: MatDatepicker ) { - const retirementDate = this.calculatorForm.get('retirementDate').value; + const retirementDate = + this.calculatorForm.get('retirementDate')?.value ?? + this.DEFAULT_RETIREMENT_DATE; const newRetirementDate = setMonth( setYear(retirementDate, normalizedMonthAndYear.getFullYear()), normalizedMonthAndYear.getMonth() ); - this.calculatorForm.get('retirementDate').setValue(newRetirementDate); + this.calculatorForm.get('retirementDate')?.setValue(newRetirementDate); datepicker.close(); } public ngOnDestroy() { this.chart?.destroy(); - - this.unsubscribeSubject.next(); - this.unsubscribeSubject.complete(); } private initialize() { @@ -288,8 +298,6 @@ export class GfFireCalculatorComponent implements OnChanges, OnDestroy { return `Total: ${new Intl.NumberFormat(this.locale, { currency: this.currency, - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore: Only supported from ES2020 or later currencyDisplay: 'code', style: 'currency' }).format(totalAmount)}`; @@ -426,12 +434,16 @@ export class GfFireCalculatorComponent implements OnChanges, OnDestroy { } private getPeriodsToRetire(): number { - if (this.calculatorForm.get('projectedTotalAmount').value) { + const projectedTotalAmount = this.calculatorForm.get( + 'projectedTotalAmount' + )?.value; + + if (projectedTotalAmount) { let periods = this.fireCalculatorService.calculatePeriodsToRetire({ P: this.getP(), PMT: this.getPMT(), r: this.getR(), - totalAmount: this.calculatorForm.get('projectedTotalAmount').value + totalAmount: projectedTotalAmount }); if (periods === Infinity) { @@ -453,12 +465,16 @@ export class GfFireCalculatorComponent implements OnChanges, OnDestroy { } private getPMT() { - return this.calculatorForm.get('paymentPerPeriod').value; + return this.calculatorForm.get('paymentPerPeriod')?.value ?? 0; } private getProjectedTotalAmount() { - if (this.calculatorForm.get('projectedTotalAmount').value) { - return this.calculatorForm.get('projectedTotalAmount').value; + const projectedTotalAmount = this.calculatorForm.get( + 'projectedTotalAmount' + )?.value; + + if (!isNil(projectedTotalAmount)) { + return projectedTotalAmount; } const { totalAmount } = @@ -473,12 +489,12 @@ export class GfFireCalculatorComponent implements OnChanges, OnDestroy { } private getR() { - return this.calculatorForm.get('annualInterestRate').value / 100; + return (this.calculatorForm.get('annualInterestRate')?.value ?? 0) / 100; } private getRetirementDate(): Date { if (this.periodsToRetire === Number.MAX_SAFE_INTEGER) { - return undefined; + return this.DEFAULT_RETIREMENT_DATE; } const monthsToRetire = this.periodsToRetire % 12; From 2e01c121e451406b0b4c47e76c84de627a9bd1b1 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 24 Feb 2026 20:43:17 +0100 Subject: [PATCH 56/74] Task/remove unused OnDestroy hook in resources page component (#6367) * Remove unused OnDestroy hook --- .../src/app/pages/resources/resources-page.component.ts | 8 -------- 1 file changed, 8 deletions(-) diff --git a/apps/client/src/app/pages/resources/resources-page.component.ts b/apps/client/src/app/pages/resources/resources-page.component.ts index 9db996f57..c25ef00d6 100644 --- a/apps/client/src/app/pages/resources/resources-page.component.ts +++ b/apps/client/src/app/pages/resources/resources-page.component.ts @@ -13,7 +13,6 @@ import { readerOutline } from 'ionicons/icons'; import { DeviceDetectorService } from 'ngx-device-detector'; -import { Subject } from 'rxjs'; @Component({ host: { class: 'page has-tabs' }, @@ -47,8 +46,6 @@ export class ResourcesPageComponent implements OnInit { } ]; - private unsubscribeSubject = new Subject(); - public constructor(private deviceService: DeviceDetectorService) { addIcons({ bookOutline, libraryOutline, newspaperOutline, readerOutline }); } @@ -56,9 +53,4 @@ export class ResourcesPageComponent implements OnInit { public ngOnInit() { this.deviceType = this.deviceService.getDeviceInfo().deviceType; } - - public ngOnDestroy() { - this.unsubscribeSubject.next(); - this.unsubscribeSubject.complete(); - } } From 386a77c8f746f9413f0cdb837a4fe234059963cf Mon Sep 17 00:00:00 2001 From: Kenrick Tandrian <60643640+KenTandrian@users.noreply.github.com> Date: Wed, 25 Feb 2026 22:15:06 +0400 Subject: [PATCH 57/74] Task/improve type safety in assistant components (#6396) * feat(lib): resolve typescript errors in assistant * feat(lib): resolve typescript errors in assistant list item * feat(lib): implement output signals * fix(lint): resolve warnings * fix(lib): implement inject function * fix(lib): handle errors in html files --- .../assistant-list-item.component.ts | 24 +++-- .../assistant-list-item.html | 2 +- .../src/lib/assistant/assistant.component.ts | 102 +++++++++--------- libs/ui/src/lib/assistant/assistant.html | 2 +- .../portfolio-filter-form-value.interface.ts | 8 +- 5 files changed, 70 insertions(+), 68 deletions(-) diff --git a/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.component.ts b/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.component.ts index c2ad2462e..05750cea4 100644 --- a/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.component.ts +++ b/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.component.ts @@ -7,12 +7,12 @@ import { ChangeDetectorRef, Component, ElementRef, - EventEmitter, HostBinding, Input, OnChanges, - Output, - ViewChild + ViewChild, + inject, + output } from '@angular/core'; import { Params, RouterModule } from '@angular/router'; @@ -33,21 +33,23 @@ export class GfAssistantListItemComponent implements FocusableOption, OnChanges { @HostBinding('attr.tabindex') tabindex = -1; - @HostBinding('class.has-focus') get getHasFocus() { - return this.hasFocus; - } @Input() item: SearchResultItem; - @Output() clicked = new EventEmitter(); - - @ViewChild('link') public linkElement: ElementRef; + @ViewChild('link') public linkElement: ElementRef; public hasFocus = false; public queryParams: Params; public routerLink: string[]; - public constructor(private changeDetectorRef: ChangeDetectorRef) {} + protected readonly clicked = output(); + + private readonly changeDetectorRef = inject(ChangeDetectorRef); + + @HostBinding('class.has-focus') + public get getHasFocus() { + return this.hasFocus; + } public ngOnChanges() { if (this.item?.mode === SearchMode.ACCOUNT) { @@ -65,7 +67,7 @@ export class GfAssistantListItemComponent }; this.routerLink = - internalRoutes.adminControl.subRoutes.marketData.routerLink; + internalRoutes.adminControl.subRoutes?.marketData.routerLink ?? []; } else if (this.item?.mode === SearchMode.HOLDING) { this.queryParams = { dataSource: this.item.dataSource, diff --git a/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.html b/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.html index fd2c4011d..36179b719 100644 --- a/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.html +++ b/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.html @@ -8,7 +8,7 @@ @if (item && isAsset(item)) {
{{ item?.symbol | gfSymbol }} · {{ item?.currency }} + >{{ item?.symbol ?? '' | gfSymbol }} · {{ item?.currency }} @if (item?.assetSubClassString) { · {{ item.assetSubClassString }} } diff --git a/libs/ui/src/lib/assistant/assistant.component.ts b/libs/ui/src/lib/assistant/assistant.component.ts index 2b0216613..1c67e4fa2 100644 --- a/libs/ui/src/lib/assistant/assistant.component.ts +++ b/libs/ui/src/lib/assistant/assistant.component.ts @@ -12,16 +12,15 @@ import { ChangeDetectorRef, Component, ElementRef, - EventEmitter, HostListener, Input, OnChanges, OnDestroy, OnInit, - Output, QueryList, ViewChild, - ViewChildren + ViewChildren, + output } from '@angular/core'; import { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; @@ -86,37 +85,7 @@ import { templateUrl: './assistant.html' }) export class GfAssistantComponent implements OnChanges, OnDestroy, OnInit { - @HostListener('document:keydown', ['$event']) onKeydown( - event: KeyboardEvent - ) { - if (!this.isOpen) { - return; - } - - if (event.key === 'ArrowDown' || event.key === 'ArrowUp') { - for (const item of this.assistantListItems) { - item.removeFocus(); - } - - this.keyManager.onKeydown(event); - - const currentAssistantListItem = this.getCurrentAssistantListItem(); - - if (currentAssistantListItem?.linkElement) { - currentAssistantListItem.linkElement.nativeElement?.scrollIntoView({ - behavior: 'smooth', - block: 'center' - }); - } - } else if (event.key === 'Enter') { - const currentAssistantListItem = this.getCurrentAssistantListItem(); - - if (currentAssistantListItem?.linkElement) { - currentAssistantListItem.linkElement.nativeElement?.click(); - event.stopPropagation(); - } - } - } + public static readonly SEARCH_RESULTS_DEFAULT_LIMIT = 5; @Input() deviceType: string; @Input() hasPermissionToAccessAdminControl: boolean; @@ -124,21 +93,16 @@ export class GfAssistantComponent implements OnChanges, OnDestroy, OnInit { @Input() hasPermissionToChangeFilters: boolean; @Input() user: User; - @Output() closed = new EventEmitter(); - @Output() dateRangeChanged = new EventEmitter(); - @Output() filtersChanged = new EventEmitter(); - @ViewChild('menuTrigger') menuTriggerElement: MatMenuTrigger; - @ViewChild('search', { static: true }) searchElement: ElementRef; + @ViewChild('search', { static: true }) + searchElement: ElementRef; @ViewChildren(GfAssistantListItemComponent) assistantListItems: QueryList; - public static readonly SEARCH_RESULTS_DEFAULT_LIMIT = 5; - public accounts: AccountWithPlatform[] = []; public assetClasses: Filter[] = []; - public dateRangeFormControl = new FormControl(undefined); + public dateRangeFormControl = new FormControl(null); public dateRangeOptions: DateRangeOption[] = []; public holdings: PortfolioPosition[] = []; public isLoading = { @@ -166,6 +130,10 @@ export class GfAssistantComponent implements OnChanges, OnDestroy, OnInit { }; public tags: Filter[] = []; + protected readonly closed = output(); + protected readonly dateRangeChanged = output(); + protected readonly filtersChanged = output(); + private readonly PRESELECTION_DELAY = 100; private filterTypes: Filter['type'][] = [ @@ -188,6 +156,37 @@ export class GfAssistantComponent implements OnChanges, OnDestroy, OnInit { addIcons({ closeCircleOutline, closeOutline, searchOutline }); } + @HostListener('document:keydown', ['$event']) + public onKeydown(event: KeyboardEvent) { + if (!this.isOpen) { + return; + } + + if (event.key === 'ArrowDown' || event.key === 'ArrowUp') { + for (const item of this.assistantListItems) { + item.removeFocus(); + } + + this.keyManager.onKeydown(event); + + const currentAssistantListItem = this.getCurrentAssistantListItem(); + + if (currentAssistantListItem?.linkElement) { + currentAssistantListItem.linkElement.nativeElement?.scrollIntoView({ + behavior: 'smooth', + block: 'center' + }); + } + } else if (event.key === 'Enter') { + const currentAssistantListItem = this.getCurrentAssistantListItem(); + + if (currentAssistantListItem?.linkElement) { + currentAssistantListItem.linkElement.nativeElement?.click(); + event.stopPropagation(); + } + } + } + public ngOnInit() { this.assetClasses = Object.keys(AssetClass).map((assetClass) => { return { @@ -482,7 +481,7 @@ export class GfAssistantComponent implements OnChanges, OnDestroy, OnInit { .subscribe(({ holdings }) => { this.holdings = holdings .filter(({ assetSubClass }) => { - return !['CASH'].includes(assetSubClass); + return assetSubClass && !['CASH'].includes(assetSubClass); }) .sort((a, b) => { return a.name?.localeCompare(b.name); @@ -499,23 +498,23 @@ export class GfAssistantComponent implements OnChanges, OnDestroy, OnInit { this.filtersChanged.emit([ { - id: filterValue?.account, + id: filterValue?.account ?? '', type: 'ACCOUNT' }, { - id: filterValue?.assetClass, + id: filterValue?.assetClass ?? '', type: 'ASSET_CLASS' }, { - id: filterValue?.holding?.dataSource, + id: filterValue?.holding?.dataSource ?? '', type: 'DATA_SOURCE' }, { - id: filterValue?.holding?.symbol, + id: filterValue?.holding?.symbol ?? '', type: 'SYMBOL' }, { - id: filterValue?.tag, + id: filterValue?.tag ?? '', type: 'TAG' } ]); @@ -541,7 +540,7 @@ export class GfAssistantComponent implements OnChanges, OnDestroy, OnInit { this.filterTypes.map((type) => { return { type, - id: null + id: '' }; }) ); @@ -673,7 +672,7 @@ export class GfAssistantComponent implements OnChanges, OnDestroy, OnInit { dataSource, name, symbol, - assetSubClassString: translate(assetSubClass), + assetSubClassString: translate(assetSubClass ?? ''), mode: SearchMode.ASSET_PROFILE as const }; } @@ -705,7 +704,7 @@ export class GfAssistantComponent implements OnChanges, OnDestroy, OnInit { dataSource, name, symbol, - assetSubClassString: translate(assetSubClass), + assetSubClassString: translate(assetSubClass ?? ''), mode: SearchMode.HOLDING as const }; } @@ -755,6 +754,7 @@ export class GfAssistantComponent implements OnChanges, OnDestroy, OnInit { const symbol = this.user?.settings?.['filters.symbol']; const selectedHolding = this.holdings.find((holding) => { return ( + !!(dataSource && symbol) && getAssetProfileIdentifier({ dataSource: holding.dataSource, symbol: holding.symbol diff --git a/libs/ui/src/lib/assistant/assistant.html b/libs/ui/src/lib/assistant/assistant.html index 307269262..7e19833a9 100644 --- a/libs/ui/src/lib/assistant/assistant.html +++ b/libs/ui/src/lib/assistant/assistant.html @@ -186,7 +186,7 @@
Date: Wed, 25 Feb 2026 14:50:36 -0500 Subject: [PATCH 58/74] Bugfix/handle X-ray rule exception when market price is missing (#6397) * Handle X-ray rule exception when market price is missing * Update changelog --- CHANGELOG.md | 6 ++++++ apps/api/src/models/rule.ts | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f806a260e..6b1a1c978 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 an exception by adding a fallback for missing market price values on the _X-ray_ page + ## 2.243.0 - 2026-02-23 ### Changed diff --git a/apps/api/src/models/rule.ts b/apps/api/src/models/rule.ts index 9c27e0018..622375b5b 100644 --- a/apps/api/src/models/rule.ts +++ b/apps/api/src/models/rule.ts @@ -57,7 +57,7 @@ export abstract class Rule implements RuleInterface { previousValue + this.exchangeRateDataService.toCurrency( new Big(currentValue.quantity) - .mul(currentValue.marketPrice) + .mul(currentValue.marketPrice ?? 0) .toNumber(), currentValue.currency, baseCurrency From 4cf16b8c58440d2408ab4594a10fe6b17d06de3f Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Thu, 26 Feb 2026 17:26:00 +0100 Subject: [PATCH 59/74] Task/remove unused OnDestroy hook in license page component (#6380) * Remove unused OnDestroy hook --- .../pages/about/license/license-page.component.ts | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/apps/client/src/app/pages/about/license/license-page.component.ts b/apps/client/src/app/pages/about/license/license-page.component.ts index 0dc5b2f51..d530d0418 100644 --- a/apps/client/src/app/pages/about/license/license-page.component.ts +++ b/apps/client/src/app/pages/about/license/license-page.component.ts @@ -1,6 +1,5 @@ -import { Component, OnDestroy } from '@angular/core'; +import { Component } from '@angular/core'; import { MarkdownModule } from 'ngx-markdown'; -import { Subject } from 'rxjs'; @Component({ imports: [MarkdownModule], @@ -8,11 +7,4 @@ import { Subject } from 'rxjs'; styleUrls: ['./license-page.scss'], templateUrl: './license-page.html' }) -export class GfLicensePageComponent implements OnDestroy { - private unsubscribeSubject = new Subject(); - - public ngOnDestroy() { - this.unsubscribeSubject.next(); - this.unsubscribeSubject.complete(); - } -} +export class GfLicensePageComponent {} From 69740db29215439e44d0c0a139d7f8072d4cbe7c Mon Sep 17 00:00:00 2001 From: Kenrick Tandrian <60643640+KenTandrian@users.noreply.github.com> Date: Thu, 26 Feb 2026 20:26:21 +0400 Subject: [PATCH 60/74] Task/improve type safety in currency selector (#6402) * feat(lib): resolve typescript errors * feat(lib): make input a view child signal * feat(lib): remove unsubscribe subject * feat(lib): remove ngOnDestroy * feat(lib): make currencies an input signal * feat(lib): make formControlName an input signal --- .../currency-selector.component.ts | 90 +++++++++---------- 1 file changed, 42 insertions(+), 48 deletions(-) diff --git a/libs/ui/src/lib/currency-selector/currency-selector.component.ts b/libs/ui/src/lib/currency-selector/currency-selector.component.ts index 35a911716..7b6236fbb 100644 --- a/libs/ui/src/lib/currency-selector/currency-selector.component.ts +++ b/libs/ui/src/lib/currency-selector/currency-selector.component.ts @@ -4,13 +4,16 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, + DestroyRef, DoCheck, ElementRef, - Input, - OnDestroy, OnInit, - ViewChild + ViewChild, + inject, + input, + viewChild } from '@angular/core'; +import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { FormControl, FormGroupDirective, @@ -21,15 +24,14 @@ import { import { MatAutocomplete, MatAutocompleteModule, - MatAutocompleteSelectedEvent + MatOption } from '@angular/material/autocomplete'; import { MatFormFieldControl, MatFormFieldModule } from '@angular/material/form-field'; import { MatInput, MatInputModule } from '@angular/material/input'; -import { Subject } from 'rxjs'; -import { map, startWith, takeUntil } from 'rxjs/operators'; +import { map, startWith } from 'rxjs/operators'; import { AbstractMatFormField } from '../shared/abstract-mat-form-field'; @@ -58,21 +60,19 @@ import { AbstractMatFormField } from '../shared/abstract-mat-form-field'; templateUrl: 'currency-selector.component.html' }) export class GfCurrencySelectorComponent - extends AbstractMatFormField - implements DoCheck, OnDestroy, OnInit + extends AbstractMatFormField + implements DoCheck, OnInit { - @Input() private currencies: string[] = []; - @Input() private formControlName: string; - - @ViewChild(MatInput) private input: MatInput; - @ViewChild('currencyAutocomplete') public currencyAutocomplete: MatAutocomplete; - public control = new FormControl(); + public readonly control = new FormControl(null); + public readonly currencies = input.required(); public filteredCurrencies: string[] = []; + public readonly formControlName = input.required(); - private unsubscribeSubject = new Subject(); + private readonly destroyRef = inject(DestroyRef); + private readonly input = viewChild.required(MatInput); public constructor( public readonly _elementRef: ElementRef, @@ -86,6 +86,19 @@ export class GfCurrencySelectorComponent this.controlType = 'currency-selector'; } + public get empty() { + return this.input().empty; + } + + public set value(value: string | null) { + this.control.setValue(value); + super.value = value; + } + + public focus() { + this.input().focus(); + } + public ngOnInit() { if (this.disabled) { this.control.disable(); @@ -94,17 +107,18 @@ export class GfCurrencySelectorComponent const formGroup = this.formGroupDirective.form; if (formGroup) { - const control = formGroup.get(this.formControlName); + const control = formGroup.get(this.formControlName()); if (control) { - this.value = this.currencies.find((value) => { - return value === control.value; - }); + this.value = + this.currencies().find((value) => { + return value === control.value; + }) ?? null; } } this.control.valueChanges - .pipe(takeUntil(this.unsubscribeSubject)) + .pipe(takeUntilDestroyed(this.destroyRef)) .subscribe(() => { if (super.value) { super.value = null; @@ -113,10 +127,10 @@ export class GfCurrencySelectorComponent this.control.valueChanges .pipe( - takeUntil(this.unsubscribeSubject), + takeUntilDestroyed(this.destroyRef), startWith(''), map((value) => { - return value ? this.filter(value) : this.currencies.slice(); + return value ? this.filter(value) : this.currencies().slice(); }) ) .subscribe((values) => { @@ -124,42 +138,22 @@ export class GfCurrencySelectorComponent }); } - 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.errorState = !!(this.ngControl.invalid && this.ngControl.touched); this.stateChanges.next(); } } - public onUpdateCurrency(event: MatAutocompleteSelectedEvent) { - super.value = event.option.value; - } - - public set value(value: string) { - this.control.setValue(value); - super.value = value; - } - - public ngOnDestroy() { - super.ngOnDestroy(); - - this.unsubscribeSubject.next(); - this.unsubscribeSubject.complete(); + public onUpdateCurrency({ option }: { option: MatOption }) { + super.value = option.value; } private filter(value: string) { - const filterValue = value?.toLowerCase(); + const filterValue = value.toLowerCase(); - return this.currencies.filter((currency) => { + return this.currencies().filter((currency) => { return currency.toLowerCase().startsWith(filterValue); }); } @@ -168,7 +162,7 @@ export class GfCurrencySelectorComponent const requiredCheck = super.required ? !super.value : false; if (requiredCheck) { - this.ngControl.control.setErrors({ invalidData: true }); + this.ngControl.control?.setErrors({ invalidData: true }); } } } From d4a0f48ca24ab925990853b59016b73fd2c1fa96 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Fri, 27 Feb 2026 19:50:04 +0100 Subject: [PATCH 61/74] Task/remove unused OnDestroy hook in demo page component (#6383) * Remove unused OnDestroy hook --- .../client/src/app/pages/demo/demo-page.component.ts | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/apps/client/src/app/pages/demo/demo-page.component.ts b/apps/client/src/app/pages/demo/demo-page.component.ts index 5b94fd541..235805dcc 100644 --- a/apps/client/src/app/pages/demo/demo-page.component.ts +++ b/apps/client/src/app/pages/demo/demo-page.component.ts @@ -3,9 +3,8 @@ import { InfoItem } from '@ghostfolio/common/interfaces'; import { NotificationService } from '@ghostfolio/ui/notifications'; import { DataService } from '@ghostfolio/ui/services'; -import { Component, OnDestroy } from '@angular/core'; +import { Component } from '@angular/core'; import { Router } from '@angular/router'; -import { Subject } from 'rxjs'; @Component({ host: { class: 'page' }, @@ -13,11 +12,9 @@ import { Subject } from 'rxjs'; standalone: true, templateUrl: './demo-page.html' }) -export class GfDemoPageComponent implements OnDestroy { +export class GfDemoPageComponent { public info: InfoItem; - private unsubscribeSubject = new Subject(); - public constructor( private dataService: DataService, private notificationService: NotificationService, @@ -40,9 +37,4 @@ export class GfDemoPageComponent implements OnDestroy { this.router.navigate(['/']); } - - public ngOnDestroy() { - this.unsubscribeSubject.next(); - this.unsubscribeSubject.complete(); - } } From a7434c9ba7cc9b13aed168a51bebe827951e982d Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 28 Feb 2026 08:49:15 +0100 Subject: [PATCH 62/74] Task/remove deprecated fee ratio X-ray rule (#6364) * Remove deprecated static portfolio analysis rule: Fees (Fee Ratio) * Update changelog --- CHANGELOG.md | 4 + .../src/app/portfolio/portfolio.service.ts | 8 -- apps/api/src/app/user/user.service.ts | 8 -- .../fees/fee-ratio-initial-investment.ts | 104 ------------------ apps/client/src/app/pages/i18n/i18n-page.html | 9 -- .../x-ray-rules-settings.interface.ts | 1 - 6 files changed, 4 insertions(+), 130 deletions(-) delete mode 100644 apps/api/src/models/rules/fees/fee-ratio-initial-investment.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b1a1c978..0b25ff7e6 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 + +- Removed the deprecated static portfolio analysis rule: _Fees_ (Fee Ratio) + ### Fixed - Fixed an exception by adding a fallback for missing market price values on the _X-ray_ page diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index b96f5ef70..17bd01ce4 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -13,7 +13,6 @@ import { CurrencyClusterRiskCurrentInvestment } from '@ghostfolio/api/models/rul import { EconomicMarketClusterRiskDevelopedMarkets } from '@ghostfolio/api/models/rules/economic-market-cluster-risk/developed-markets'; import { EconomicMarketClusterRiskEmergingMarkets } from '@ghostfolio/api/models/rules/economic-market-cluster-risk/emerging-markets'; import { EmergencyFundSetup } from '@ghostfolio/api/models/rules/emergency-fund/emergency-fund-setup'; -import { FeeRatioInitialInvestment } from '@ghostfolio/api/models/rules/fees/fee-ratio-initial-investment'; import { FeeRatioTotalInvestmentVolume } from '@ghostfolio/api/models/rules/fees/fee-ratio-total-investment-volume'; import { BuyingPower } from '@ghostfolio/api/models/rules/liquidity/buying-power'; import { RegionalMarketClusterRiskAsiaPacific } from '@ghostfolio/api/models/rules/regional-market-cluster-risk/asia-pacific'; @@ -1310,13 +1309,6 @@ export class PortfolioService { }), rules: await this.rulesService.evaluate( [ - new FeeRatioInitialInvestment( - this.exchangeRateDataService, - this.i18nService, - userSettings.language, - summary.committedFunds, - summary.fees - ), new FeeRatioTotalInvestmentVolume( this.exchangeRateDataService, this.i18nService, diff --git a/apps/api/src/app/user/user.service.ts b/apps/api/src/app/user/user.service.ts index 08328851d..97ab8a59f 100644 --- a/apps/api/src/app/user/user.service.ts +++ b/apps/api/src/app/user/user.service.ts @@ -12,7 +12,6 @@ import { CurrencyClusterRiskCurrentInvestment } from '@ghostfolio/api/models/rul import { EconomicMarketClusterRiskDevelopedMarkets } from '@ghostfolio/api/models/rules/economic-market-cluster-risk/developed-markets'; import { EconomicMarketClusterRiskEmergingMarkets } from '@ghostfolio/api/models/rules/economic-market-cluster-risk/emerging-markets'; import { EmergencyFundSetup } from '@ghostfolio/api/models/rules/emergency-fund/emergency-fund-setup'; -import { FeeRatioInitialInvestment } from '@ghostfolio/api/models/rules/fees/fee-ratio-initial-investment'; import { FeeRatioTotalInvestmentVolume } from '@ghostfolio/api/models/rules/fees/fee-ratio-total-investment-volume'; import { BuyingPower } from '@ghostfolio/api/models/rules/liquidity/buying-power'; import { RegionalMarketClusterRiskAsiaPacific } from '@ghostfolio/api/models/rules/regional-market-cluster-risk/asia-pacific'; @@ -377,13 +376,6 @@ export class UserService { undefined, undefined ).getSettings(user.settings.settings), - FeeRatioInitialInvestment: new FeeRatioInitialInvestment( - undefined, - undefined, - undefined, - undefined, - undefined - ).getSettings(user.settings.settings), FeeRatioTotalInvestmentVolume: new FeeRatioTotalInvestmentVolume( undefined, undefined, diff --git a/apps/api/src/models/rules/fees/fee-ratio-initial-investment.ts b/apps/api/src/models/rules/fees/fee-ratio-initial-investment.ts deleted file mode 100644 index 54c2decc9..000000000 --- a/apps/api/src/models/rules/fees/fee-ratio-initial-investment.ts +++ /dev/null @@ -1,104 +0,0 @@ -import { Rule } from '@ghostfolio/api/models/rule'; -import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-data/exchange-rate-data.service'; -import { I18nService } from '@ghostfolio/api/services/i18n/i18n.service'; -import { RuleSettings, UserSettings } from '@ghostfolio/common/interfaces'; - -/** - * @deprecated This rule is deprecated in favor of FeeRatioTotalInvestmentVolume - */ -export class FeeRatioInitialInvestment extends Rule { - private fees: number; - private totalInvestment: number; - - public constructor( - protected exchangeRateDataService: ExchangeRateDataService, - private i18nService: I18nService, - languageCode: string, - totalInvestment: number, - fees: number - ) { - super(exchangeRateDataService, { - languageCode, - key: FeeRatioInitialInvestment.name - }); - - this.fees = fees; - this.totalInvestment = totalInvestment; - } - - public evaluate(ruleSettings: Settings) { - const feeRatio = this.totalInvestment - ? this.fees / this.totalInvestment - : 0; - - if (feeRatio > ruleSettings.thresholdMax) { - return { - evaluation: this.i18nService.getTranslation({ - id: 'rule.feeRatioInitialInvestment.false', - languageCode: this.getLanguageCode(), - placeholders: { - feeRatio: (ruleSettings.thresholdMax * 100).toFixed(2), - thresholdMax: (feeRatio * 100).toPrecision(3) - } - }), - value: false - }; - } - - return { - evaluation: this.i18nService.getTranslation({ - id: 'rule.feeRatioInitialInvestment.true', - languageCode: this.getLanguageCode(), - placeholders: { - feeRatio: (feeRatio * 100).toPrecision(3), - thresholdMax: (ruleSettings.thresholdMax * 100).toFixed(2) - } - }), - value: true - }; - } - - public getCategoryName() { - return this.i18nService.getTranslation({ - id: 'rule.fees.category', - languageCode: this.getLanguageCode() - }); - } - - public getConfiguration() { - return { - threshold: { - max: 0.1, - min: 0, - step: 0.0025, - unit: '%' - }, - thresholdMax: true - }; - } - - public getName() { - return this.i18nService.getTranslation({ - id: 'rule.feeRatioInitialInvestment', - languageCode: this.getLanguageCode() - }); - } - - public getSettings({ - baseCurrency, - locale, - xRayRules - }: UserSettings): Settings { - return { - baseCurrency, - locale, - isActive: xRayRules?.[this.getKey()]?.isActive ?? true, - thresholdMax: xRayRules?.[this.getKey()]?.thresholdMax ?? 0.01 - }; - } -} - -interface Settings extends RuleSettings { - baseCurrency: string; - thresholdMax: number; -} diff --git a/apps/client/src/app/pages/i18n/i18n-page.html b/apps/client/src/app/pages/i18n/i18n-page.html index a8797c07a..99ef3039e 100644 --- a/apps/client/src/app/pages/i18n/i18n-page.html +++ b/apps/client/src/app/pages/i18n/i18n-page.html @@ -149,15 +149,6 @@
  • An emergency fund has been set up
  • -
  • Fee Ratio (legacy)
  • -
  • - The fees do exceed ${thresholdMax}% of your initial investment - (${feeRatio}%) -
  • -
  • - The fees do not exceed ${thresholdMax}% of your initial - investment (${feeRatio}%) -
  • Fee Ratio
  • The fees do exceed ${thresholdMax}% of your total investment diff --git a/libs/common/src/lib/interfaces/x-ray-rules-settings.interface.ts b/libs/common/src/lib/interfaces/x-ray-rules-settings.interface.ts index 688d4f2a0..60a76d468 100644 --- a/libs/common/src/lib/interfaces/x-ray-rules-settings.interface.ts +++ b/libs/common/src/lib/interfaces/x-ray-rules-settings.interface.ts @@ -9,7 +9,6 @@ export interface XRayRulesSettings { EconomicMarketClusterRiskDevelopedMarkets?: RuleSettings; EconomicMarketClusterRiskEmergingMarkets?: RuleSettings; EmergencyFundSetup?: RuleSettings; - FeeRatioInitialInvestment?: RuleSettings; FeeRatioTotalInvestmentVolume?: RuleSettings; RegionalMarketClusterRiskAsiaPacific?: RuleSettings; RegionalMarketClusterRiskEmergingMarkets?: RuleSettings; From 3f14e5ad3a82cdb15651778b2e23a1fe30b4d4bd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 28 Feb 2026 10:43:15 +0100 Subject: [PATCH 63/74] Task/update locales (#6356) * Update locales --- apps/client/src/locales/messages.ca.xlf | 180 ++++++++++-------------- apps/client/src/locales/messages.de.xlf | 180 ++++++++++-------------- apps/client/src/locales/messages.es.xlf | 180 ++++++++++-------------- apps/client/src/locales/messages.fr.xlf | 180 ++++++++++-------------- apps/client/src/locales/messages.it.xlf | 180 ++++++++++-------------- apps/client/src/locales/messages.ko.xlf | 180 ++++++++++-------------- apps/client/src/locales/messages.nl.xlf | 180 ++++++++++-------------- apps/client/src/locales/messages.pl.xlf | 180 ++++++++++-------------- apps/client/src/locales/messages.pt.xlf | 180 ++++++++++-------------- apps/client/src/locales/messages.tr.xlf | 180 ++++++++++-------------- apps/client/src/locales/messages.uk.xlf | 180 ++++++++++-------------- apps/client/src/locales/messages.xlf | 177 ++++++++++------------- apps/client/src/locales/messages.zh.xlf | 180 ++++++++++-------------- 13 files changed, 1014 insertions(+), 1323 deletions(-) diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 585a3d779..d878a63bf 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -455,7 +455,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 139 + 135 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -511,7 +511,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 145 + 141 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -531,15 +531,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 205 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 208 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 211 + 207 libs/ui/src/lib/account-balances/account-balances.component.html @@ -711,7 +711,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 155 + 151 libs/ui/src/lib/i18n.ts @@ -823,7 +823,7 @@ Data apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 157 libs/ui/src/lib/account-balances/account-balances.component.html @@ -1179,7 +1179,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 275 + 271 @@ -1223,7 +1223,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 + 120 @@ -1719,7 +1719,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 189 + 185 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2139,7 +2139,7 @@ Actius apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 230 + 233 @@ -2147,7 +2147,7 @@ Poder adquisitiu apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 245 + 248 @@ -2155,7 +2155,7 @@ Exclòs de l’anàlisi apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 271 + 274 @@ -2163,7 +2163,7 @@ Passius apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 299 + 302 apps/client/src/app/pages/features/features-page.html @@ -2175,7 +2175,7 @@ Valor net apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 321 + 324 @@ -2183,7 +2183,7 @@ Rendiment anualitzat apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 335 + 338 @@ -2343,7 +2343,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 363 + 362 @@ -2355,7 +2355,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -2367,7 +2367,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -2379,7 +2379,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -2399,7 +2399,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 415 + 414 @@ -3095,11 +3095,11 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 45 apps/client/src/app/pages/resources/resources-page.component.ts - 30 + 29 libs/common/src/lib/routes/routes.ts @@ -3243,7 +3243,7 @@ Com que ja has iniciat sessió, no pots accedir al compte de demostració. apps/client/src/app/pages/demo/demo-page.component.ts - 35 + 32 @@ -3516,7 +3516,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 40 + 39 libs/common/src/lib/routes/routes.ts @@ -3564,7 +3564,7 @@ Programari de gestió patrimonial de codi obert apps/client/src/app/pages/i18n/i18n-page.html - 246 + 237 @@ -4104,7 +4104,7 @@ Actualitzar el saldo d’efectiu apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 112 + 108 @@ -4112,7 +4112,7 @@ Preu unitari apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 214 + 210 libs/ui/src/lib/activities-table/activities-table.component.html @@ -4484,7 +4484,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 369 + 372 apps/client/src/app/pages/features/features-page.html @@ -4492,7 +4492,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 202 + 198 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -5345,7 +5345,7 @@ Realment voleu eliminar el saldo d’aquest compte? libs/ui/src/lib/account-balances/account-balances.component.ts - 120 + 113 @@ -5425,7 +5425,7 @@ Setmana fins avui libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5437,7 +5437,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5445,7 +5445,7 @@ Mes fins a la data libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5457,7 +5457,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5465,7 +5465,7 @@ Any fins a la data libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -5485,7 +5485,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -5497,7 +5497,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -5645,7 +5645,7 @@ Dipòsit libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 385 @@ -5657,11 +5657,11 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 356 + 359 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 387 + 395 libs/ui/src/lib/i18n.ts @@ -5673,7 +5673,7 @@ Estalvi libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 397 + 405 @@ -5753,7 +5753,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 290 + 286 libs/ui/src/lib/i18n.ts @@ -5785,7 +5785,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 309 + 305 libs/ui/src/lib/i18n.ts @@ -6049,7 +6049,7 @@ Comissió apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 258 libs/ui/src/lib/activities-table/activities-table.component.html @@ -6093,7 +6093,7 @@ Efectiu apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 216 + 219 libs/ui/src/lib/i18n.ts @@ -6757,7 +6757,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 345 + 341 apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html @@ -6813,7 +6813,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 347 + 343 libs/ui/src/lib/i18n.ts @@ -7117,7 +7117,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 45 + 44 libs/common/src/lib/routes/routes.ts @@ -7133,7 +7133,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 34 + 33 libs/common/src/lib/routes/routes.ts @@ -7339,7 +7339,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 356 + 352 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -7643,7 +7643,7 @@ Find account, holding or page... libs/ui/src/lib/assistant/assistant.component.ts - 151 + 115 @@ -7888,36 +7888,12 @@ 150 - - Fee Ratio (legacy) - Fee Ratio (legacy) - - apps/client/src/app/pages/i18n/i18n-page.html - 152 - - - - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - - apps/client/src/app/pages/i18n/i18n-page.html - 154 - - - - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - - apps/client/src/app/pages/i18n/i18n-page.html - 158 - - Fee Ratio Fee Ratio apps/client/src/app/pages/i18n/i18n-page.html - 161 + 152 @@ -7925,7 +7901,7 @@ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 163 + 154 @@ -7933,7 +7909,7 @@ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 167 + 158 @@ -8103,7 +8079,7 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 56 + 53 @@ -8392,7 +8368,7 @@ Fees apps/client/src/app/pages/i18n/i18n-page.html - 170 + 161 @@ -8440,7 +8416,7 @@ Regional Market Cluster Risks apps/client/src/app/pages/i18n/i18n-page.html - 172 + 163 @@ -8536,7 +8512,7 @@ Asia-Pacific apps/client/src/app/pages/i18n/i18n-page.html - 174 + 165 @@ -8544,7 +8520,7 @@ The Asia-Pacific market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 176 + 167 @@ -8552,7 +8528,7 @@ The Asia-Pacific market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 180 + 171 @@ -8560,7 +8536,7 @@ The Asia-Pacific market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 184 + 175 @@ -8568,7 +8544,7 @@ Emerging Markets apps/client/src/app/pages/i18n/i18n-page.html - 189 + 180 @@ -8576,7 +8552,7 @@ The Emerging Markets contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 192 + 183 @@ -8584,7 +8560,7 @@ The Emerging Markets contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 196 + 187 @@ -8592,7 +8568,7 @@ The Emerging Markets contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 200 + 191 @@ -8600,7 +8576,7 @@ Europe apps/client/src/app/pages/i18n/i18n-page.html - 204 + 195 @@ -8608,7 +8584,7 @@ The Europe market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 206 + 197 @@ -8616,7 +8592,7 @@ The Europe market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 210 + 201 @@ -8624,7 +8600,7 @@ The Europe market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 214 + 205 @@ -8632,7 +8608,7 @@ Japan apps/client/src/app/pages/i18n/i18n-page.html - 218 + 209 @@ -8640,7 +8616,7 @@ The Japan market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 220 + 211 @@ -8648,7 +8624,7 @@ The Japan market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 224 + 215 @@ -8656,7 +8632,7 @@ The Japan market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 228 + 219 @@ -8664,7 +8640,7 @@ North America apps/client/src/app/pages/i18n/i18n-page.html - 232 + 223 @@ -8672,7 +8648,7 @@ The North America market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 234 + 225 @@ -8680,7 +8656,7 @@ The North America market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 238 + 229 @@ -8688,7 +8664,7 @@ The North America market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 242 + 233 diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 2ca3a95bf..54c3f7de8 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -134,7 +134,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 139 + 135 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -178,15 +178,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 205 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 208 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 211 + 207 libs/ui/src/lib/account-balances/account-balances.component.html @@ -326,7 +326,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 155 + 151 libs/ui/src/lib/i18n.ts @@ -438,7 +438,7 @@ Datum apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 157 libs/ui/src/lib/account-balances/account-balances.component.html @@ -950,7 +950,7 @@ Kaufkraft apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 245 + 248 @@ -958,7 +958,7 @@ Gesamtvermögen apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 321 + 324 @@ -966,7 +966,7 @@ Performance pro Jahr apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 335 + 338 @@ -1074,7 +1074,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 363 + 362 @@ -1086,7 +1086,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -1098,7 +1098,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -1110,7 +1110,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -1130,7 +1130,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 415 + 414 @@ -1450,7 +1450,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 145 + 141 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -1630,7 +1630,7 @@ Da du bereits eingeloggt bist, kannst du nicht auf die Live Demo zugreifen. apps/client/src/app/pages/demo/demo-page.component.ts - 35 + 32 @@ -1694,11 +1694,11 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 45 apps/client/src/app/pages/resources/resources-page.component.ts - 30 + 29 libs/common/src/lib/routes/routes.ts @@ -1738,7 +1738,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 40 + 39 libs/common/src/lib/routes/routes.ts @@ -1978,7 +1978,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 + 120 @@ -1990,7 +1990,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 189 + 185 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2006,7 +2006,7 @@ Stückpreis apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 214 + 210 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2026,7 +2026,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 275 + 271 @@ -2546,7 +2546,7 @@ Einlage libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 385 @@ -2558,11 +2558,11 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 356 + 359 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 387 + 395 libs/ui/src/lib/i18n.ts @@ -2574,7 +2574,7 @@ Ersparnisse libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 397 + 405 @@ -2706,7 +2706,7 @@ Von der Analyse ausgenommen apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 271 + 274 @@ -2810,7 +2810,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 290 + 286 libs/ui/src/lib/i18n.ts @@ -2866,7 +2866,7 @@ Bargeld apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 216 + 219 libs/ui/src/lib/i18n.ts @@ -3158,7 +3158,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 369 + 372 apps/client/src/app/pages/features/features-page.html @@ -3166,7 +3166,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 202 + 198 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -3198,7 +3198,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 309 + 305 libs/ui/src/lib/i18n.ts @@ -3926,7 +3926,7 @@ Cash-Bestand aktualisieren apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 112 + 108 @@ -4106,7 +4106,7 @@ Verbindlichkeiten apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 299 + 302 apps/client/src/app/pages/features/features-page.html @@ -4522,7 +4522,7 @@ Anlagevermögen apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 230 + 233 @@ -5468,7 +5468,7 @@ Gebühr apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 258 libs/ui/src/lib/activities-table/activities-table.component.html @@ -5676,7 +5676,7 @@ Open Source Software für die Vermögensverwaltung apps/client/src/app/pages/i18n/i18n-page.html - 246 + 237 @@ -5776,7 +5776,7 @@ Möchtest du diesen Cash-Bestand wirklich löschen? libs/ui/src/lib/account-balances/account-balances.component.ts - 120 + 113 @@ -5952,7 +5952,7 @@ Seit Wochenbeginn libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5964,7 +5964,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5972,7 +5972,7 @@ Seit Monatsbeginn libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5984,7 +5984,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5992,7 +5992,7 @@ Seit Jahresbeginn libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -6040,7 +6040,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -6052,7 +6052,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -6781,7 +6781,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 345 + 341 apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html @@ -6837,7 +6837,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 347 + 343 libs/ui/src/lib/i18n.ts @@ -7141,7 +7141,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 45 + 44 libs/common/src/lib/routes/routes.ts @@ -7157,7 +7157,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 34 + 33 libs/common/src/lib/routes/routes.ts @@ -7363,7 +7363,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 356 + 352 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -7667,7 +7667,7 @@ Konto, Position oder Seite finden... libs/ui/src/lib/assistant/assistant.component.ts - 151 + 115 @@ -7888,36 +7888,12 @@ 150 - - Fee Ratio (legacy) - Gebührenverhältnis (veraltet) - - apps/client/src/app/pages/i18n/i18n-page.html - 152 - - - - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - Die Gebühren übersteigen ${thresholdMax}% deiner ursprünglichen Investition (${feeRatio}%) - - apps/client/src/app/pages/i18n/i18n-page.html - 154 - - - - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - Die Gebühren übersteigen ${thresholdMax}% deiner ursprünglichen Investition (${feeRatio}%) nicht - - apps/client/src/app/pages/i18n/i18n-page.html - 158 - - Fee Ratio Gebührenverhältnis apps/client/src/app/pages/i18n/i18n-page.html - 161 + 152 @@ -7925,7 +7901,7 @@ Die Gebühren übersteigen ${thresholdMax}% deines gesamten Investitionsvolumens (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 163 + 154 @@ -7933,7 +7909,7 @@ Die Gebühren übersteigen ${thresholdMax}% deines gesamten Investitionsvolumens (${feeRatio}%) nicht apps/client/src/app/pages/i18n/i18n-page.html - 167 + 158 @@ -8103,7 +8079,7 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 56 + 53 @@ -8392,7 +8368,7 @@ Gebühren apps/client/src/app/pages/i18n/i18n-page.html - 170 + 161 @@ -8440,7 +8416,7 @@ Regionale Marktklumpenrisiken apps/client/src/app/pages/i18n/i18n-page.html - 172 + 163 @@ -8536,7 +8512,7 @@ Asien-Pazifik apps/client/src/app/pages/i18n/i18n-page.html - 174 + 165 @@ -8544,7 +8520,7 @@ Der Anteil des Asien-Pazifik-Marktes deiner aktuellen Investition (${valueRatio}%) übersteigt ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 176 + 167 @@ -8552,7 +8528,7 @@ Der Anteil des Asien-Pazifik-Marktes deiner aktuellen Investition (${valueRatio}%) liegt unter ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 180 + 171 @@ -8560,7 +8536,7 @@ Der Anteil des Asien-Pazifik-Marktes deiner aktuellen Investition (${valueRatio}%) liegt im Bereich zwischen ${thresholdMin}% und ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 184 + 175 @@ -8568,7 +8544,7 @@ Schwellenländer apps/client/src/app/pages/i18n/i18n-page.html - 189 + 180 @@ -8576,7 +8552,7 @@ Der Anteil der Schwellenländer deiner aktuellen Investition (${valueRatio}%) übersteigt ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 192 + 183 @@ -8584,7 +8560,7 @@ Der Anteil der Schwellenländer deiner aktuellen Investition (${valueRatio}%) liegt unter ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 196 + 187 @@ -8592,7 +8568,7 @@ Der Anteil der Schwellenländer deiner aktuellen Investition (${valueRatio}%) liegt im Bereich zwischen ${thresholdMin}% und ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 200 + 191 @@ -8600,7 +8576,7 @@ Europa apps/client/src/app/pages/i18n/i18n-page.html - 204 + 195 @@ -8608,7 +8584,7 @@ Der Anteil des europäischen Marktes deiner aktuellen Investition (${valueRatio}%) übersteigt ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 206 + 197 @@ -8616,7 +8592,7 @@ Der Anteil des europäischen Marktes deiner aktuellen Investition (${valueRatio}%) liegt unter ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 210 + 201 @@ -8624,7 +8600,7 @@ Der Anteil des europäischen Marktes deiner aktuellen Investition (${valueRatio}%) liegt im Bereich zwischen ${thresholdMin}% und ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 214 + 205 @@ -8632,7 +8608,7 @@ Japan apps/client/src/app/pages/i18n/i18n-page.html - 218 + 209 @@ -8640,7 +8616,7 @@ Der Anteil des japanischen Marktes deiner aktuellen Investition (${valueRatio}%) übersteigt ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 220 + 211 @@ -8648,7 +8624,7 @@ Der Anteil des japanischen Marktes deiner aktuellen Investition (${valueRatio}%) liegt unter ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 224 + 215 @@ -8656,7 +8632,7 @@ Der Anteil des japanischen Marktes deiner aktuellen Investition (${valueRatio}%) liegt im Bereich zwischen ${thresholdMin}% und ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 228 + 219 @@ -8664,7 +8640,7 @@ Nordamerika apps/client/src/app/pages/i18n/i18n-page.html - 232 + 223 @@ -8672,7 +8648,7 @@ Der Anteil des nordamerikanischen Marktes deiner aktuellen Investition (${valueRatio}%) übersteigt ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 234 + 225 @@ -8680,7 +8656,7 @@ Der Anteil des nordamerikanischen Marktes deiner aktuellen Investition (${valueRatio}%) liegt unter ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 238 + 229 @@ -8688,7 +8664,7 @@ Der Anteil des nordamerikanischen Marktes deiner aktuellen Investition (${valueRatio}%) liegt im Bereich zwischen ${thresholdMin}% und ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 242 + 233 diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index ceb7d5b06..74e0810c1 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -135,7 +135,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 139 + 135 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -179,15 +179,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 205 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 208 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 211 + 207 libs/ui/src/lib/account-balances/account-balances.component.html @@ -327,7 +327,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 155 + 151 libs/ui/src/lib/i18n.ts @@ -439,7 +439,7 @@ Fecha apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 157 libs/ui/src/lib/account-balances/account-balances.component.html @@ -935,7 +935,7 @@ Capacidad de compra apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 245 + 248 @@ -943,7 +943,7 @@ Patrimonio neto apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 321 + 324 @@ -951,7 +951,7 @@ Rendimiento anualizado apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 335 + 338 @@ -1059,7 +1059,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 363 + 362 @@ -1071,7 +1071,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -1083,7 +1083,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -1095,7 +1095,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -1115,7 +1115,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 415 + 414 @@ -1435,7 +1435,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 145 + 141 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -1615,7 +1615,7 @@ Como estás conectado, no puedes acceder a la cuenta de demostración. apps/client/src/app/pages/demo/demo-page.component.ts - 35 + 32 @@ -1679,11 +1679,11 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 45 apps/client/src/app/pages/resources/resources-page.component.ts - 30 + 29 libs/common/src/lib/routes/routes.ts @@ -1723,7 +1723,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 40 + 39 libs/common/src/lib/routes/routes.ts @@ -1963,7 +1963,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 + 120 @@ -1975,7 +1975,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 189 + 185 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1991,7 +1991,7 @@ Precio unitario apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 214 + 210 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2011,7 +2011,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 275 + 271 @@ -2515,7 +2515,7 @@ Ahorros libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 397 + 405 @@ -2527,11 +2527,11 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 356 + 359 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 387 + 395 libs/ui/src/lib/i18n.ts @@ -2551,7 +2551,7 @@ Depósito libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 385 @@ -2691,7 +2691,7 @@ Excluido del análisis apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 271 + 274 @@ -2795,7 +2795,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 290 + 286 libs/ui/src/lib/i18n.ts @@ -2851,7 +2851,7 @@ Efectivo apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 216 + 219 libs/ui/src/lib/i18n.ts @@ -3135,7 +3135,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 369 + 372 apps/client/src/app/pages/features/features-page.html @@ -3143,7 +3143,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 202 + 198 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -3183,7 +3183,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 309 + 305 libs/ui/src/lib/i18n.ts @@ -3903,7 +3903,7 @@ Actualizar saldo en efectivo apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 112 + 108 @@ -4083,7 +4083,7 @@ Pasivos apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 299 + 302 apps/client/src/app/pages/features/features-page.html @@ -4499,7 +4499,7 @@ Activos apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 230 + 233 @@ -5445,7 +5445,7 @@ Tarifa apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 258 libs/ui/src/lib/activities-table/activities-table.component.html @@ -5653,7 +5653,7 @@ Software de gestión de patrimonio de código abierto apps/client/src/app/pages/i18n/i18n-page.html - 246 + 237 @@ -5753,7 +5753,7 @@ ¿Realmente desea eliminar el saldo de esta cuenta? libs/ui/src/lib/account-balances/account-balances.component.ts - 120 + 113 @@ -5929,7 +5929,7 @@ Semana hasta la fecha libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5941,7 +5941,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5949,7 +5949,7 @@ Mes hasta la fecha libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5961,7 +5961,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5969,7 +5969,7 @@ El año hasta la fecha libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -6017,7 +6017,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -6029,7 +6029,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -6758,7 +6758,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 345 + 341 apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html @@ -6814,7 +6814,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 347 + 343 libs/ui/src/lib/i18n.ts @@ -7118,7 +7118,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 45 + 44 libs/common/src/lib/routes/routes.ts @@ -7134,7 +7134,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 34 + 33 libs/common/src/lib/routes/routes.ts @@ -7340,7 +7340,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 356 + 352 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -7644,7 +7644,7 @@ Buscar cuenta, posición o página... libs/ui/src/lib/assistant/assistant.component.ts - 151 + 115 @@ -7889,36 +7889,12 @@ 150 - - Fee Ratio (legacy) - Relación de tarifas (heredado) - - apps/client/src/app/pages/i18n/i18n-page.html - 152 - - - - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - Las tarifas superan el ${thresholdMax}% de su inversión inicial (${feeRatio}%) - - apps/client/src/app/pages/i18n/i18n-page.html - 154 - - - - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - Las tarifas no superan el ${thresholdMax}% de su inversión inicial (${feeRatio}%) - - apps/client/src/app/pages/i18n/i18n-page.html - 158 - - Fee Ratio Relación de tarifas apps/client/src/app/pages/i18n/i18n-page.html - 161 + 152 @@ -7926,7 +7902,7 @@ Las tarifas superan el ${thresholdMax}% de su volumen total de inversión (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 163 + 154 @@ -7934,7 +7910,7 @@ Las tarifas no superan el ${thresholdMax}% de su volumen total de inversión (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 167 + 158 @@ -8104,7 +8080,7 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 56 + 53 @@ -8393,7 +8369,7 @@ Comisiones apps/client/src/app/pages/i18n/i18n-page.html - 170 + 161 @@ -8441,7 +8417,7 @@ Riesgos de los grupos de mercados regionales apps/client/src/app/pages/i18n/i18n-page.html - 172 + 163 @@ -8537,7 +8513,7 @@ Asia-Pacífico apps/client/src/app/pages/i18n/i18n-page.html - 174 + 165 @@ -8545,7 +8521,7 @@ La contribución al mercado de Asia-Pacífico de tu inversión actual (${valueRatio}%) supera el ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 176 + 167 @@ -8553,7 +8529,7 @@ La contribución al mercado de Asia-Pacífico de tu inversión actual (${valueRatio}%) es inferior al ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 180 + 171 @@ -8561,7 +8537,7 @@ La contribución al mercado de Asia-Pacífico de tu inversión actual (${valueRatio}%) está dentro del rango de ${thresholdMin}% y ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 184 + 175 @@ -8569,7 +8545,7 @@ Mercados emergentes apps/client/src/app/pages/i18n/i18n-page.html - 189 + 180 @@ -8577,7 +8553,7 @@ La contribución a los mercados emergentes de tu inversión actual (${valueRatio}%) supera el ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 192 + 183 @@ -8585,7 +8561,7 @@ La contribución a los mercados emergentes de tu inversión actual (${valueRatio}%) es inferior al ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 196 + 187 @@ -8593,7 +8569,7 @@ La contribución a los mercados emergentes de tu inversión actual (${valueRatio}%) está dentro del rango de ${thresholdMin}% y ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 200 + 191 @@ -8601,7 +8577,7 @@ Europa apps/client/src/app/pages/i18n/i18n-page.html - 204 + 195 @@ -8609,7 +8585,7 @@ La contribución al mercado europeo de tu inversión actual (${valueRatio}%) supera el ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 206 + 197 @@ -8617,7 +8593,7 @@ La contribución al mercado europeo de tu inversión actual (${valueRatio}%) es inferior al ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 210 + 201 @@ -8625,7 +8601,7 @@ La contribución al mercado europeo de tu inversión actual (${valueRatio}%) está dentro del rango de ${thresholdMin}% y ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 214 + 205 @@ -8633,7 +8609,7 @@ Japón apps/client/src/app/pages/i18n/i18n-page.html - 218 + 209 @@ -8641,7 +8617,7 @@ La contribución al mercado japonés de su inversión actual (${valueRatio}%) supera el ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 220 + 211 @@ -8649,7 +8625,7 @@ La contribución al mercado japonés de su inversión actual (${valueRatio}%) es inferior a ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 224 + 215 @@ -8657,7 +8633,7 @@ La contribución al mercado japonés de su inversión actual (${valueRatio}%) está dentro del rango de ${thresholdMin}% y ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 228 + 219 @@ -8665,7 +8641,7 @@ Norteamérica apps/client/src/app/pages/i18n/i18n-page.html - 232 + 223 @@ -8673,7 +8649,7 @@ La contribución del mercado de América del Norte de su inversión actual (${valueRatio}%) supera el ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 234 + 225 @@ -8681,7 +8657,7 @@ La contribución al mercado de América del Norte de su inversión actual (${valueRatio}%) es inferior a ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 238 + 229 @@ -8689,7 +8665,7 @@ La contribución al mercado de América del Norte de su inversión actual (${valueRatio}%) está dentro del rango de ${thresholdMin}% y ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 242 + 233 diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index f3a8d4942..f343cb2ad 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -142,7 +142,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 139 + 135 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -198,7 +198,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 145 + 141 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -234,15 +234,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 205 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 208 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 211 + 207 libs/ui/src/lib/account-balances/account-balances.component.html @@ -374,7 +374,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 155 + 151 libs/ui/src/lib/i18n.ts @@ -494,7 +494,7 @@ Date apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 157 libs/ui/src/lib/account-balances/account-balances.component.html @@ -698,7 +698,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 275 + 271 @@ -1218,7 +1218,7 @@ Pouvoir d’Achat apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 245 + 248 @@ -1226,7 +1226,7 @@ Exclus de l’Analyse apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 271 + 274 @@ -1234,7 +1234,7 @@ Fortune apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 321 + 324 @@ -1242,7 +1242,7 @@ Performance annualisée apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 335 + 338 @@ -1278,7 +1278,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 189 + 185 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1306,7 +1306,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 363 + 362 @@ -1318,7 +1318,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -1330,7 +1330,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -1342,7 +1342,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -1362,7 +1362,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 415 + 414 @@ -1906,7 +1906,7 @@ Puisque vous êtes déjà connecté·e, vous ne pouvez pas accéder au compte de démonstration. apps/client/src/app/pages/demo/demo-page.component.ts - 35 + 32 @@ -2018,7 +2018,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 40 + 39 libs/common/src/lib/routes/routes.ts @@ -2142,7 +2142,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 + 120 @@ -2150,7 +2150,7 @@ Prix Unitaire apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 214 + 210 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2406,7 +2406,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 369 + 372 apps/client/src/app/pages/features/features-page.html @@ -2414,7 +2414,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 202 + 198 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -2438,7 +2438,7 @@ Dépôt libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 385 @@ -2718,11 +2718,11 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 45 apps/client/src/app/pages/resources/resources-page.component.ts - 30 + 29 libs/common/src/lib/routes/routes.ts @@ -2854,11 +2854,11 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 356 + 359 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 387 + 395 libs/ui/src/lib/i18n.ts @@ -2870,7 +2870,7 @@ Épargne libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 397 + 405 @@ -2942,7 +2942,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 290 + 286 libs/ui/src/lib/i18n.ts @@ -2974,7 +2974,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 309 + 305 libs/ui/src/lib/i18n.ts @@ -3054,7 +3054,7 @@ Cash apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 216 + 219 libs/ui/src/lib/i18n.ts @@ -3902,7 +3902,7 @@ Mettre à jour le Solde apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 112 + 108 @@ -4082,7 +4082,7 @@ Dettes apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 299 + 302 apps/client/src/app/pages/features/features-page.html @@ -4498,7 +4498,7 @@ Actifs apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 230 + 233 @@ -5444,7 +5444,7 @@ Frais apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 258 libs/ui/src/lib/activities-table/activities-table.component.html @@ -5652,7 +5652,7 @@ Logiciel libre de Gestion de Patrimoine apps/client/src/app/pages/i18n/i18n-page.html - 246 + 237 @@ -5752,7 +5752,7 @@ Voulez-vous vraiment supprimer ce solde de compte ? libs/ui/src/lib/account-balances/account-balances.component.ts - 120 + 113 @@ -5928,7 +5928,7 @@ Week to date libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5940,7 +5940,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5948,7 +5948,7 @@ Month to date libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5960,7 +5960,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5968,7 +5968,7 @@ Year to date libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -6016,7 +6016,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -6028,7 +6028,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -6757,7 +6757,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 345 + 341 apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html @@ -6813,7 +6813,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 347 + 343 libs/ui/src/lib/i18n.ts @@ -7117,7 +7117,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 45 + 44 libs/common/src/lib/routes/routes.ts @@ -7133,7 +7133,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 34 + 33 libs/common/src/lib/routes/routes.ts @@ -7339,7 +7339,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 356 + 352 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -7643,7 +7643,7 @@ Find account, holding or page... libs/ui/src/lib/assistant/assistant.component.ts - 151 + 115 @@ -7888,36 +7888,12 @@ 150 - - Fee Ratio (legacy) - Ratio de frais - - apps/client/src/app/pages/i18n/i18n-page.html - 152 - - - - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - Les frais dépassent ${thresholdMax}% de votre investissement initial (${feeRatio}%) - - apps/client/src/app/pages/i18n/i18n-page.html - 154 - - - - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - Les frais ne dépassent pas ${thresholdMax}% de votre investissement initial (${feeRatio}%) - - apps/client/src/app/pages/i18n/i18n-page.html - 158 - - Fee Ratio Fee Ratio apps/client/src/app/pages/i18n/i18n-page.html - 161 + 152 @@ -7925,7 +7901,7 @@ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 163 + 154 @@ -7933,7 +7909,7 @@ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 167 + 158 @@ -8103,7 +8079,7 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 56 + 53 @@ -8392,7 +8368,7 @@ Fees apps/client/src/app/pages/i18n/i18n-page.html - 170 + 161 @@ -8440,7 +8416,7 @@ Regional Market Cluster Risks apps/client/src/app/pages/i18n/i18n-page.html - 172 + 163 @@ -8536,7 +8512,7 @@ Asia-Pacific apps/client/src/app/pages/i18n/i18n-page.html - 174 + 165 @@ -8544,7 +8520,7 @@ The Asia-Pacific market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 176 + 167 @@ -8552,7 +8528,7 @@ The Asia-Pacific market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 180 + 171 @@ -8560,7 +8536,7 @@ The Asia-Pacific market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 184 + 175 @@ -8568,7 +8544,7 @@ Emerging Markets apps/client/src/app/pages/i18n/i18n-page.html - 189 + 180 @@ -8576,7 +8552,7 @@ The Emerging Markets contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 192 + 183 @@ -8584,7 +8560,7 @@ The Emerging Markets contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 196 + 187 @@ -8592,7 +8568,7 @@ The Emerging Markets contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 200 + 191 @@ -8600,7 +8576,7 @@ Europe apps/client/src/app/pages/i18n/i18n-page.html - 204 + 195 @@ -8608,7 +8584,7 @@ The Europe market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 206 + 197 @@ -8616,7 +8592,7 @@ The Europe market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 210 + 201 @@ -8624,7 +8600,7 @@ The Europe market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 214 + 205 @@ -8632,7 +8608,7 @@ Japan apps/client/src/app/pages/i18n/i18n-page.html - 218 + 209 @@ -8640,7 +8616,7 @@ The Japan market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 220 + 211 @@ -8648,7 +8624,7 @@ The Japan market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 224 + 215 @@ -8656,7 +8632,7 @@ The Japan market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 228 + 219 @@ -8664,7 +8640,7 @@ North America apps/client/src/app/pages/i18n/i18n-page.html - 232 + 223 @@ -8672,7 +8648,7 @@ The North America market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 234 + 225 @@ -8680,7 +8656,7 @@ The North America market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 238 + 229 @@ -8688,7 +8664,7 @@ The North America market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 242 + 233 diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index f021dae49..05bb6afb2 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -135,7 +135,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 139 + 135 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -179,15 +179,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 205 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 208 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 211 + 207 libs/ui/src/lib/account-balances/account-balances.component.html @@ -327,7 +327,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 155 + 151 libs/ui/src/lib/i18n.ts @@ -439,7 +439,7 @@ Data apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 157 libs/ui/src/lib/account-balances/account-balances.component.html @@ -935,7 +935,7 @@ Potere d’acquisto apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 245 + 248 @@ -943,7 +943,7 @@ Patrimonio netto apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 321 + 324 @@ -951,7 +951,7 @@ Prestazioni annualizzate apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 335 + 338 @@ -1059,7 +1059,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 363 + 362 @@ -1071,7 +1071,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -1083,7 +1083,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -1095,7 +1095,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -1115,7 +1115,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 415 + 414 @@ -1435,7 +1435,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 145 + 141 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -1615,7 +1615,7 @@ Poiché hai già effettuato l’accesso, non puoi accedere all’account demo. apps/client/src/app/pages/demo/demo-page.component.ts - 35 + 32 @@ -1679,11 +1679,11 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 45 apps/client/src/app/pages/resources/resources-page.component.ts - 30 + 29 libs/common/src/lib/routes/routes.ts @@ -1723,7 +1723,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 40 + 39 libs/common/src/lib/routes/routes.ts @@ -1963,7 +1963,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 + 120 @@ -1975,7 +1975,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 189 + 185 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1991,7 +1991,7 @@ Prezzo unitario apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 214 + 210 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2011,7 +2011,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 275 + 271 @@ -2515,7 +2515,7 @@ Risparmio libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 397 + 405 @@ -2527,11 +2527,11 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 356 + 359 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 387 + 395 libs/ui/src/lib/i18n.ts @@ -2551,7 +2551,7 @@ Deposito libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 385 @@ -2691,7 +2691,7 @@ Escluso dall’analisi apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 271 + 274 @@ -2795,7 +2795,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 290 + 286 libs/ui/src/lib/i18n.ts @@ -2851,7 +2851,7 @@ Contanti apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 216 + 219 libs/ui/src/lib/i18n.ts @@ -3135,7 +3135,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 369 + 372 apps/client/src/app/pages/features/features-page.html @@ -3143,7 +3143,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 202 + 198 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -3183,7 +3183,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 309 + 305 libs/ui/src/lib/i18n.ts @@ -3903,7 +3903,7 @@ Aggiornamento del saldo di cassa apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 112 + 108 @@ -4083,7 +4083,7 @@ Passività apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 299 + 302 apps/client/src/app/pages/features/features-page.html @@ -4499,7 +4499,7 @@ Asset apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 230 + 233 @@ -5445,7 +5445,7 @@ Commissione apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 258 libs/ui/src/lib/activities-table/activities-table.component.html @@ -5653,7 +5653,7 @@ Software Open Source per la gestione della tua ricchezza apps/client/src/app/pages/i18n/i18n-page.html - 246 + 237 @@ -5753,7 +5753,7 @@ Vuoi veramente elimnare il saldo di questo conto? libs/ui/src/lib/account-balances/account-balances.component.ts - 120 + 113 @@ -5929,7 +5929,7 @@ Da inizio settimana libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5941,7 +5941,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5949,7 +5949,7 @@ Da inizio mese libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5961,7 +5961,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5969,7 +5969,7 @@ Da inizio anno libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -6017,7 +6017,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -6029,7 +6029,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -6758,7 +6758,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 345 + 341 apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html @@ -6814,7 +6814,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 347 + 343 libs/ui/src/lib/i18n.ts @@ -7118,7 +7118,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 45 + 44 libs/common/src/lib/routes/routes.ts @@ -7134,7 +7134,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 34 + 33 libs/common/src/lib/routes/routes.ts @@ -7340,7 +7340,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 356 + 352 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -7644,7 +7644,7 @@ Find account, holding or page... libs/ui/src/lib/assistant/assistant.component.ts - 151 + 115 @@ -7889,36 +7889,12 @@ 150 - - Fee Ratio (legacy) - Rapporto tariffario - - apps/client/src/app/pages/i18n/i18n-page.html - 152 - - - - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - Le commissioni superano il ${thresholdMax}% del tuo investimento iniziale (${feeRatio}%) - - apps/client/src/app/pages/i18n/i18n-page.html - 154 - - - - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - Le commissioni non superano il ${thresholdMax}% del tuo investimento iniziale (${feeRatio}%) - - apps/client/src/app/pages/i18n/i18n-page.html - 158 - - Fee Ratio Fee Ratio apps/client/src/app/pages/i18n/i18n-page.html - 161 + 152 @@ -7926,7 +7902,7 @@ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 163 + 154 @@ -7934,7 +7910,7 @@ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 167 + 158 @@ -8104,7 +8080,7 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 56 + 53 @@ -8393,7 +8369,7 @@ Fees apps/client/src/app/pages/i18n/i18n-page.html - 170 + 161 @@ -8441,7 +8417,7 @@ Regional Market Cluster Risks apps/client/src/app/pages/i18n/i18n-page.html - 172 + 163 @@ -8537,7 +8513,7 @@ Asia-Pacific apps/client/src/app/pages/i18n/i18n-page.html - 174 + 165 @@ -8545,7 +8521,7 @@ The Asia-Pacific market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 176 + 167 @@ -8553,7 +8529,7 @@ The Asia-Pacific market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 180 + 171 @@ -8561,7 +8537,7 @@ The Asia-Pacific market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 184 + 175 @@ -8569,7 +8545,7 @@ Emerging Markets apps/client/src/app/pages/i18n/i18n-page.html - 189 + 180 @@ -8577,7 +8553,7 @@ The Emerging Markets contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 192 + 183 @@ -8585,7 +8561,7 @@ The Emerging Markets contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 196 + 187 @@ -8593,7 +8569,7 @@ The Emerging Markets contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 200 + 191 @@ -8601,7 +8577,7 @@ Europe apps/client/src/app/pages/i18n/i18n-page.html - 204 + 195 @@ -8609,7 +8585,7 @@ The Europe market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 206 + 197 @@ -8617,7 +8593,7 @@ The Europe market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 210 + 201 @@ -8625,7 +8601,7 @@ The Europe market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 214 + 205 @@ -8633,7 +8609,7 @@ Japan apps/client/src/app/pages/i18n/i18n-page.html - 218 + 209 @@ -8641,7 +8617,7 @@ The Japan market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 220 + 211 @@ -8649,7 +8625,7 @@ The Japan market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 224 + 215 @@ -8657,7 +8633,7 @@ The Japan market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 228 + 219 @@ -8665,7 +8641,7 @@ North America apps/client/src/app/pages/i18n/i18n-page.html - 232 + 223 @@ -8673,7 +8649,7 @@ The North America market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 234 + 225 @@ -8681,7 +8657,7 @@ The North America market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 238 + 229 @@ -8689,7 +8665,7 @@ The North America market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 242 + 233 diff --git a/apps/client/src/locales/messages.ko.xlf b/apps/client/src/locales/messages.ko.xlf index f188d4924..9b7c4192e 100644 --- a/apps/client/src/locales/messages.ko.xlf +++ b/apps/client/src/locales/messages.ko.xlf @@ -388,7 +388,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 139 + 135 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -444,7 +444,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 145 + 141 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -464,15 +464,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 205 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 208 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 211 + 207 libs/ui/src/lib/account-balances/account-balances.component.html @@ -624,7 +624,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 155 + 151 libs/ui/src/lib/i18n.ts @@ -720,7 +720,7 @@ 날짜 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 157 libs/ui/src/lib/account-balances/account-balances.component.html @@ -1024,7 +1024,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 275 + 271 @@ -1068,7 +1068,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 + 120 @@ -1856,7 +1856,7 @@ 자산 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 230 + 233 @@ -1864,7 +1864,7 @@ 매수 가능 금액 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 245 + 248 @@ -1872,7 +1872,7 @@ 분석에서 제외됨 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 271 + 274 @@ -1880,7 +1880,7 @@ 부채 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 299 + 302 apps/client/src/app/pages/features/features-page.html @@ -1892,7 +1892,7 @@ 순자산 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 321 + 324 @@ -1900,7 +1900,7 @@ 연환산 성과 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 335 + 338 @@ -1936,7 +1936,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 189 + 185 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2132,7 +2132,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 363 + 362 @@ -2144,7 +2144,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -2156,7 +2156,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -2168,7 +2168,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -2188,7 +2188,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 415 + 414 @@ -2788,11 +2788,11 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 45 apps/client/src/app/pages/resources/resources-page.component.ts - 30 + 29 libs/common/src/lib/routes/routes.ts @@ -2936,7 +2936,7 @@ 이미 로그인되어 있으므로 데모 계정에 접근할 수 없습니다. apps/client/src/app/pages/demo/demo-page.component.ts - 35 + 32 @@ -3184,7 +3184,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 40 + 39 libs/common/src/lib/routes/routes.ts @@ -3224,7 +3224,7 @@ 오픈 소스 자산관리 소프트웨어 apps/client/src/app/pages/i18n/i18n-page.html - 246 + 237 @@ -3764,7 +3764,7 @@ 현금 잔액 업데이트 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 112 + 108 @@ -3772,7 +3772,7 @@ 단가 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 214 + 210 libs/ui/src/lib/activities-table/activities-table.component.html @@ -4128,7 +4128,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 369 + 372 apps/client/src/app/pages/features/features-page.html @@ -4136,7 +4136,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 202 + 198 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -4160,7 +4160,7 @@ 보증금 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 385 @@ -4941,7 +4941,7 @@ 정말로 이 계정 잔액을 삭제하시겠습니까? libs/ui/src/lib/account-balances/account-balances.component.ts - 120 + 113 @@ -5117,11 +5117,11 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 356 + 359 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 387 + 395 libs/ui/src/lib/i18n.ts @@ -5133,7 +5133,7 @@ 저금 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 397 + 405 @@ -5213,7 +5213,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 290 + 286 libs/ui/src/lib/i18n.ts @@ -5245,7 +5245,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 309 + 305 libs/ui/src/lib/i18n.ts @@ -5501,7 +5501,7 @@ 요금 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 258 libs/ui/src/lib/activities-table/activities-table.component.html @@ -5545,7 +5545,7 @@ 현금 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 216 + 219 libs/ui/src/lib/i18n.ts @@ -5953,7 +5953,7 @@ 연초 현재 libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -5961,7 +5961,7 @@ 이번주 현재까지 libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5969,7 +5969,7 @@ 월간 누계 libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5981,7 +5981,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5993,7 +5993,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -6041,7 +6041,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -6053,7 +6053,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -6742,7 +6742,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 345 + 341 apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html @@ -6830,7 +6830,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 347 + 343 libs/ui/src/lib/i18n.ts @@ -7142,7 +7142,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 45 + 44 libs/common/src/lib/routes/routes.ts @@ -7171,7 +7171,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 34 + 33 libs/common/src/lib/routes/routes.ts @@ -7364,7 +7364,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 356 + 352 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -7656,7 +7656,7 @@ 계정, 보유 또는 페이지 찾기... libs/ui/src/lib/assistant/assistant.component.ts - 151 + 115 @@ -7889,36 +7889,12 @@ 150 - - Fee Ratio (legacy) - 수수료 비율 - - apps/client/src/app/pages/i18n/i18n-page.html - 152 - - - - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - 수수료가 초기 투자금(${feeRatio}%)의 ${thresholdMax}%를 초과합니다. - - apps/client/src/app/pages/i18n/i18n-page.html - 154 - - - - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - 수수료는 초기 투자금의 ${thresholdMax}%(${feeRatio}%)를 초과하지 않습니다. - - apps/client/src/app/pages/i18n/i18n-page.html - 158 - - Fee Ratio Fee Ratio apps/client/src/app/pages/i18n/i18n-page.html - 161 + 152 @@ -7926,7 +7902,7 @@ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 163 + 154 @@ -7934,7 +7910,7 @@ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 167 + 158 @@ -8104,7 +8080,7 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 56 + 53 @@ -8401,7 +8377,7 @@ 수수료 apps/client/src/app/pages/i18n/i18n-page.html - 170 + 161 @@ -8449,7 +8425,7 @@ 지역 시장 클러스터 위험 apps/client/src/app/pages/i18n/i18n-page.html - 172 + 163 @@ -8537,7 +8513,7 @@ 아시아·태평양 apps/client/src/app/pages/i18n/i18n-page.html - 174 + 165 @@ -8545,7 +8521,7 @@ 현재 투자의 아시아 태평양 시장 기여도(${valueRatio}%)가 ${thresholdMax}%를 초과합니다. apps/client/src/app/pages/i18n/i18n-page.html - 176 + 167 @@ -8553,7 +8529,7 @@ 현재 투자의 아시아 태평양 시장 기여도(${valueRatio}%)가 ${thresholdMin}% 미만입니다. apps/client/src/app/pages/i18n/i18n-page.html - 180 + 171 @@ -8561,7 +8537,7 @@ 현재 투자의 아시아 태평양 시장 기여도(${valueRatio}%)가 ${thresholdMin}% 및 ${thresholdMax}% 범위 내에 있습니다. apps/client/src/app/pages/i18n/i18n-page.html - 184 + 175 @@ -8569,7 +8545,7 @@ 신흥시장 apps/client/src/app/pages/i18n/i18n-page.html - 189 + 180 @@ -8577,7 +8553,7 @@ 현재 투자의 신흥 시장 기여도(${valueRatio}%)가 ${thresholdMax}%를 초과합니다. apps/client/src/app/pages/i18n/i18n-page.html - 192 + 183 @@ -8585,7 +8561,7 @@ 현재 투자의 신흥 시장 기여도(${valueRatio}%)가 ${thresholdMin}% 미만입니다. apps/client/src/app/pages/i18n/i18n-page.html - 196 + 187 @@ -8593,7 +8569,7 @@ 현재 투자의 신흥 시장 기여도(${valueRatio}%)가 ${thresholdMin}% 및 ${thresholdMax}% 범위 내에 있습니다. apps/client/src/app/pages/i18n/i18n-page.html - 200 + 191 @@ -8601,7 +8577,7 @@ 유럽 apps/client/src/app/pages/i18n/i18n-page.html - 204 + 195 @@ -8609,7 +8585,7 @@ 현재 투자의 유럽 시장 기여도(${valueRatio}%)가 ${thresholdMax}%를 초과합니다. apps/client/src/app/pages/i18n/i18n-page.html - 206 + 197 @@ -8617,7 +8593,7 @@ 현재 투자의 유럽 시장 기여도(${valueRatio}%)가 ${thresholdMin}% 미만입니다. apps/client/src/app/pages/i18n/i18n-page.html - 210 + 201 @@ -8625,7 +8601,7 @@ 현재 투자의 유럽 시장 기여도(${valueRatio}%)는 ${thresholdMin}% 및 ${thresholdMax}% 범위 내에 있습니다. apps/client/src/app/pages/i18n/i18n-page.html - 214 + 205 @@ -8633,7 +8609,7 @@ 일본 apps/client/src/app/pages/i18n/i18n-page.html - 218 + 209 @@ -8641,7 +8617,7 @@ 현재 투자의 일본 시장 기여도(${valueRatio}%)가 ${thresholdMax}%를 초과합니다. apps/client/src/app/pages/i18n/i18n-page.html - 220 + 211 @@ -8649,7 +8625,7 @@ 현재 투자의 일본 시장 기여도(${valueRatio}%)가 ${thresholdMin}% 미만입니다. apps/client/src/app/pages/i18n/i18n-page.html - 224 + 215 @@ -8657,7 +8633,7 @@ 현재 투자의 일본 시장 기여도(${valueRatio}%)는 ${thresholdMin}% 및 ${thresholdMax}% 범위 내에 있습니다. apps/client/src/app/pages/i18n/i18n-page.html - 228 + 219 @@ -8665,7 +8641,7 @@ 북미 apps/client/src/app/pages/i18n/i18n-page.html - 232 + 223 @@ -8673,7 +8649,7 @@ 현재 투자의 북미 시장 기여도(${valueRatio}%)가 ${thresholdMax}%를 초과합니다. apps/client/src/app/pages/i18n/i18n-page.html - 234 + 225 @@ -8681,7 +8657,7 @@ 현재 투자의 북미 시장 기여도(${valueRatio}%)가 ${thresholdMin}% 미만입니다. apps/client/src/app/pages/i18n/i18n-page.html - 238 + 229 @@ -8689,7 +8665,7 @@ 현재 투자의 북미 시장 기여도(${valueRatio}%)가 ${thresholdMin}% 및 ${thresholdMax}% 범위 내에 있습니다. apps/client/src/app/pages/i18n/i18n-page.html - 242 + 233 diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 76a74e6fd..58928387b 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -134,7 +134,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 139 + 135 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -178,15 +178,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 205 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 208 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 211 + 207 libs/ui/src/lib/account-balances/account-balances.component.html @@ -326,7 +326,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 155 + 151 libs/ui/src/lib/i18n.ts @@ -438,7 +438,7 @@ Datum apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 157 libs/ui/src/lib/account-balances/account-balances.component.html @@ -934,7 +934,7 @@ Koopkracht apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 245 + 248 @@ -942,7 +942,7 @@ Netto waarde apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 321 + 324 @@ -950,7 +950,7 @@ Rendement per jaar apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 335 + 338 @@ -1058,7 +1058,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 363 + 362 @@ -1070,7 +1070,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -1082,7 +1082,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -1094,7 +1094,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -1114,7 +1114,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 415 + 414 @@ -1434,7 +1434,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 145 + 141 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -1614,7 +1614,7 @@ Aangezien je al ingelogd bent, heb je geen toegang tot de demo-account. apps/client/src/app/pages/demo/demo-page.component.ts - 35 + 32 @@ -1678,11 +1678,11 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 45 apps/client/src/app/pages/resources/resources-page.component.ts - 30 + 29 libs/common/src/lib/routes/routes.ts @@ -1722,7 +1722,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 40 + 39 libs/common/src/lib/routes/routes.ts @@ -1962,7 +1962,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 + 120 @@ -1974,7 +1974,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 189 + 185 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1990,7 +1990,7 @@ Prijs per eenheid apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 214 + 210 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2010,7 +2010,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 275 + 271 @@ -2514,7 +2514,7 @@ Besparingen libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 397 + 405 @@ -2526,11 +2526,11 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 356 + 359 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 387 + 395 libs/ui/src/lib/i18n.ts @@ -2550,7 +2550,7 @@ Storting libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 385 @@ -2690,7 +2690,7 @@ Uitgesloten van analyse apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 271 + 274 @@ -2794,7 +2794,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 290 + 286 libs/ui/src/lib/i18n.ts @@ -2850,7 +2850,7 @@ Contant geld apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 216 + 219 libs/ui/src/lib/i18n.ts @@ -3134,7 +3134,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 369 + 372 apps/client/src/app/pages/features/features-page.html @@ -3142,7 +3142,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 202 + 198 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -3182,7 +3182,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 309 + 305 libs/ui/src/lib/i18n.ts @@ -3902,7 +3902,7 @@ Saldo bijwerken apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 112 + 108 @@ -4082,7 +4082,7 @@ Verplichtingen apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 299 + 302 apps/client/src/app/pages/features/features-page.html @@ -4498,7 +4498,7 @@ Assets apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 230 + 233 @@ -5444,7 +5444,7 @@ Kosten apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 258 libs/ui/src/lib/activities-table/activities-table.component.html @@ -5652,7 +5652,7 @@ Open Source Vermogensbeheer Software apps/client/src/app/pages/i18n/i18n-page.html - 246 + 237 @@ -5752,7 +5752,7 @@ Wilt u dit rekeningsaldo echt verwijderen? libs/ui/src/lib/account-balances/account-balances.component.ts - 120 + 113 @@ -5928,7 +5928,7 @@ Week tot nu toe libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5940,7 +5940,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5948,7 +5948,7 @@ Maand tot nu toe libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5960,7 +5960,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5968,7 +5968,7 @@ Jaar tot nu toe libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -6016,7 +6016,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -6028,7 +6028,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -6757,7 +6757,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 345 + 341 apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html @@ -6813,7 +6813,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 347 + 343 libs/ui/src/lib/i18n.ts @@ -7117,7 +7117,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 45 + 44 libs/common/src/lib/routes/routes.ts @@ -7133,7 +7133,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 34 + 33 libs/common/src/lib/routes/routes.ts @@ -7339,7 +7339,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 356 + 352 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -7643,7 +7643,7 @@ Find account, holding or page... libs/ui/src/lib/assistant/assistant.component.ts - 151 + 115 @@ -7888,36 +7888,12 @@ 150 - - Fee Ratio (legacy) - Vergoedingsverhouding - - apps/client/src/app/pages/i18n/i18n-page.html - 152 - - - - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - De kosten overschrijden ${thresholdMax}% van uw initiële investering (${feeRatio}%) - - apps/client/src/app/pages/i18n/i18n-page.html - 154 - - - - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - De kosten bedragen niet meer dan ${thresholdMax}% van uw initiële investering (${feeRatio}%) - - apps/client/src/app/pages/i18n/i18n-page.html - 158 - - Fee Ratio Fee Ratio apps/client/src/app/pages/i18n/i18n-page.html - 161 + 152 @@ -7925,7 +7901,7 @@ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 163 + 154 @@ -7933,7 +7909,7 @@ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 167 + 158 @@ -8103,7 +8079,7 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 56 + 53 @@ -8392,7 +8368,7 @@ Kosten apps/client/src/app/pages/i18n/i18n-page.html - 170 + 161 @@ -8440,7 +8416,7 @@ Risico’s van regionale marktclusters apps/client/src/app/pages/i18n/i18n-page.html - 172 + 163 @@ -8536,7 +8512,7 @@ Azië-Pacific apps/client/src/app/pages/i18n/i18n-page.html - 174 + 165 @@ -8544,7 +8520,7 @@ De bijdrage van de Azië-Pacific markt aan je huidige investering (${valueRatio}%) overschrijdt ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 176 + 167 @@ -8552,7 +8528,7 @@ De bijdrage van de Azië-Pacific markt aan je huidige investering (${valueRatio}%) ligt onder ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 180 + 171 @@ -8560,7 +8536,7 @@ De bijdrage van de Azië-Pacific markt aan je huidige investering (${valueRatio}%) ligt binnen het bereik van ${thresholdMin}% en ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 184 + 175 @@ -8568,7 +8544,7 @@ Opkomende markten apps/client/src/app/pages/i18n/i18n-page.html - 189 + 180 @@ -8576,7 +8552,7 @@ De bijdrage van de opkomende markten aan je huidige investering (${valueRatio}%) overschrijdt ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 192 + 183 @@ -8584,7 +8560,7 @@ De bijdrage van de opkomende markten aan je huidige investering (${valueRatio}%) ligt onder ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 196 + 187 @@ -8592,7 +8568,7 @@ De bijdrage van de opkomende markten aan je huidige investering (${valueRatio}%) ligt binnen het bereik van ${thresholdMin}% en ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 200 + 191 @@ -8600,7 +8576,7 @@ Europa apps/client/src/app/pages/i18n/i18n-page.html - 204 + 195 @@ -8608,7 +8584,7 @@ De bijdrage van de Europese markt aan je huidige investering (${valueRatio}%) overschrijdt ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 206 + 197 @@ -8616,7 +8592,7 @@ De bijdrage van de Europese markt aan je huidige investering (${valueRatio}%) ligt onder ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 210 + 201 @@ -8624,7 +8600,7 @@ De bijdrage van de Europese markt aan je huidige investering (${valueRatio}%) ligt binnen het bereik van ${thresholdMin}% en ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 214 + 205 @@ -8632,7 +8608,7 @@ Japan apps/client/src/app/pages/i18n/i18n-page.html - 218 + 209 @@ -8640,7 +8616,7 @@ De bijdrage van de Japanse markt aan je huidige investering (${valueRatio}%) overschrijdt ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 220 + 211 @@ -8648,7 +8624,7 @@ De bijdrage van de Japanse markt aan je huidige investering (${valueRatio}%) ligt onder ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 224 + 215 @@ -8656,7 +8632,7 @@ De bijdrage van de Japanse markt aan je huidige investering (${valueRatio}%) ligt binnen het bereik van ${thresholdMin}% en ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 228 + 219 @@ -8664,7 +8640,7 @@ Noord-Amerika apps/client/src/app/pages/i18n/i18n-page.html - 232 + 223 @@ -8672,7 +8648,7 @@ De bijdrage van de Noord-Amerikaanse markt aan je huidige investering (${valueRatio}%) overschrijdt ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 234 + 225 @@ -8680,7 +8656,7 @@ De bijdrage van de Noord-Amerikaanse markt aan je huidige investering (${valueRatio}%) ligt onder ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 238 + 229 @@ -8688,7 +8664,7 @@ De bijdrage van de Noord-Amerikaanse markt aan je huidige investering (${valueRatio}%) ligt binnen het bereik van ${thresholdMin}% en ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 242 + 233 diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index fdc528254..bc8b948cd 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -379,7 +379,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 139 + 135 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -435,7 +435,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 145 + 141 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -455,15 +455,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 205 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 208 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 211 + 207 libs/ui/src/lib/account-balances/account-balances.component.html @@ -615,7 +615,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 155 + 151 libs/ui/src/lib/i18n.ts @@ -711,7 +711,7 @@ Data apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 157 libs/ui/src/lib/account-balances/account-balances.component.html @@ -991,7 +991,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 275 + 271 @@ -1035,7 +1035,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 + 120 @@ -1823,7 +1823,7 @@ Aktywa apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 230 + 233 @@ -1831,7 +1831,7 @@ Siła Nabywcza apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 245 + 248 @@ -1839,7 +1839,7 @@ Wykluczone z Analizy apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 271 + 274 @@ -1847,7 +1847,7 @@ Pasywa (Zobowiązania Finansowe) apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 299 + 302 apps/client/src/app/pages/features/features-page.html @@ -1859,7 +1859,7 @@ Wartość Netto apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 321 + 324 @@ -1867,7 +1867,7 @@ Osiągi w Ujęciu Rocznym apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 335 + 338 @@ -1903,7 +1903,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 189 + 185 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2099,7 +2099,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 363 + 362 @@ -2111,7 +2111,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -2123,7 +2123,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -2135,7 +2135,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -2155,7 +2155,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 415 + 414 @@ -2755,11 +2755,11 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 45 apps/client/src/app/pages/resources/resources-page.component.ts - 30 + 29 libs/common/src/lib/routes/routes.ts @@ -2903,7 +2903,7 @@ Ponieważ jesteś już zalogowany, nie możesz uzyskać dostępu do konta demo. apps/client/src/app/pages/demo/demo-page.component.ts - 35 + 32 @@ -3151,7 +3151,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 40 + 39 libs/common/src/lib/routes/routes.ts @@ -3191,7 +3191,7 @@ Oprogramowanie Open Source do Zarządzania Majątkiem apps/client/src/app/pages/i18n/i18n-page.html - 246 + 237 @@ -3731,7 +3731,7 @@ Zaktualizuj Saldo Gotówkowe apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 112 + 108 @@ -3739,7 +3739,7 @@ Cena Jednostkowa apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 214 + 210 libs/ui/src/lib/activities-table/activities-table.component.html @@ -4095,7 +4095,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 369 + 372 apps/client/src/app/pages/features/features-page.html @@ -4103,7 +4103,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 202 + 198 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -4127,7 +4127,7 @@ Depozyt libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 385 @@ -5048,11 +5048,11 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 356 + 359 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 387 + 395 libs/ui/src/lib/i18n.ts @@ -5064,7 +5064,7 @@ Oszczędności libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 397 + 405 @@ -5144,7 +5144,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 290 + 286 libs/ui/src/lib/i18n.ts @@ -5176,7 +5176,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 309 + 305 libs/ui/src/lib/i18n.ts @@ -5432,7 +5432,7 @@ Opłata apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 258 libs/ui/src/lib/activities-table/activities-table.component.html @@ -5476,7 +5476,7 @@ Gotówka apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 216 + 219 libs/ui/src/lib/i18n.ts @@ -5752,7 +5752,7 @@ Czy na pewno chcesz usunąć saldo tego konta? libs/ui/src/lib/account-balances/account-balances.component.ts - 120 + 113 @@ -5928,7 +5928,7 @@ Dotychczasowy tydzień libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5940,7 +5940,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5948,7 +5948,7 @@ Od początku miesiąca libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5960,7 +5960,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5968,7 +5968,7 @@ Od początku roku libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -6016,7 +6016,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -6028,7 +6028,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -6757,7 +6757,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 345 + 341 apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html @@ -6813,7 +6813,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 347 + 343 libs/ui/src/lib/i18n.ts @@ -7117,7 +7117,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 45 + 44 libs/common/src/lib/routes/routes.ts @@ -7133,7 +7133,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 34 + 33 libs/common/src/lib/routes/routes.ts @@ -7339,7 +7339,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 356 + 352 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -7643,7 +7643,7 @@ Find account, holding or page... libs/ui/src/lib/assistant/assistant.component.ts - 151 + 115 @@ -7888,36 +7888,12 @@ 150 - - Fee Ratio (legacy) - Stosunek opłat - - apps/client/src/app/pages/i18n/i18n-page.html - 152 - - - - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - Opłaty przekraczają ${thresholdMax}% początkowej inwestycji (${feeRatio}%) - - apps/client/src/app/pages/i18n/i18n-page.html - 154 - - - - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - Opłaty nie przekraczają ${thresholdMax}% początkowej inwestycji (${feeRatio}%) - - apps/client/src/app/pages/i18n/i18n-page.html - 158 - - Fee Ratio Fee Ratio apps/client/src/app/pages/i18n/i18n-page.html - 161 + 152 @@ -7925,7 +7901,7 @@ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 163 + 154 @@ -7933,7 +7909,7 @@ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 167 + 158 @@ -8103,7 +8079,7 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 56 + 53 @@ -8392,7 +8368,7 @@ Fees apps/client/src/app/pages/i18n/i18n-page.html - 170 + 161 @@ -8440,7 +8416,7 @@ Regional Market Cluster Risks apps/client/src/app/pages/i18n/i18n-page.html - 172 + 163 @@ -8536,7 +8512,7 @@ Asia-Pacific apps/client/src/app/pages/i18n/i18n-page.html - 174 + 165 @@ -8544,7 +8520,7 @@ The Asia-Pacific market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 176 + 167 @@ -8552,7 +8528,7 @@ The Asia-Pacific market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 180 + 171 @@ -8560,7 +8536,7 @@ The Asia-Pacific market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 184 + 175 @@ -8568,7 +8544,7 @@ Emerging Markets apps/client/src/app/pages/i18n/i18n-page.html - 189 + 180 @@ -8576,7 +8552,7 @@ The Emerging Markets contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 192 + 183 @@ -8584,7 +8560,7 @@ The Emerging Markets contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 196 + 187 @@ -8592,7 +8568,7 @@ The Emerging Markets contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 200 + 191 @@ -8600,7 +8576,7 @@ Europe apps/client/src/app/pages/i18n/i18n-page.html - 204 + 195 @@ -8608,7 +8584,7 @@ The Europe market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 206 + 197 @@ -8616,7 +8592,7 @@ The Europe market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 210 + 201 @@ -8624,7 +8600,7 @@ The Europe market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 214 + 205 @@ -8632,7 +8608,7 @@ Japan apps/client/src/app/pages/i18n/i18n-page.html - 218 + 209 @@ -8640,7 +8616,7 @@ The Japan market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 220 + 211 @@ -8648,7 +8624,7 @@ The Japan market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 224 + 215 @@ -8656,7 +8632,7 @@ The Japan market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 228 + 219 @@ -8664,7 +8640,7 @@ North America apps/client/src/app/pages/i18n/i18n-page.html - 232 + 223 @@ -8672,7 +8648,7 @@ The North America market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 234 + 225 @@ -8680,7 +8656,7 @@ The North America market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 238 + 229 @@ -8688,7 +8664,7 @@ The North America market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 242 + 233 diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 194922435..e49f13b96 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -142,7 +142,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 139 + 135 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -198,7 +198,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 145 + 141 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -234,15 +234,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 205 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 208 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 211 + 207 libs/ui/src/lib/account-balances/account-balances.component.html @@ -374,7 +374,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 155 + 151 libs/ui/src/lib/i18n.ts @@ -494,7 +494,7 @@ Data apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 157 libs/ui/src/lib/account-balances/account-balances.component.html @@ -942,7 +942,7 @@ Depósito libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 385 @@ -1102,7 +1102,7 @@ Poder de Compra apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 245 + 248 @@ -1110,7 +1110,7 @@ Excluído da Análise apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 271 + 274 @@ -1118,7 +1118,7 @@ Valor Líquido apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 321 + 324 @@ -1126,7 +1126,7 @@ Desempenho Anual apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 335 + 338 @@ -1162,7 +1162,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 189 + 185 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1302,7 +1302,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 363 + 362 @@ -1314,7 +1314,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -1326,7 +1326,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -1338,7 +1338,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -1358,7 +1358,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 415 + 414 @@ -1890,7 +1890,7 @@ Como já tem sessão iniciada, não pode aceder à conta de demonstração. apps/client/src/app/pages/demo/demo-page.component.ts - 35 + 32 @@ -1954,11 +1954,11 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 45 apps/client/src/app/pages/resources/resources-page.component.ts - 30 + 29 libs/common/src/lib/routes/routes.ts @@ -1998,7 +1998,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 40 + 39 libs/common/src/lib/routes/routes.ts @@ -2122,7 +2122,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 + 120 @@ -2130,7 +2130,7 @@ Preço por Unidade apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 214 + 210 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2150,7 +2150,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 275 + 271 @@ -2754,11 +2754,11 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 356 + 359 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 387 + 395 libs/ui/src/lib/i18n.ts @@ -2770,7 +2770,7 @@ Poupanças libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 397 + 405 @@ -2814,7 +2814,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 290 + 286 libs/ui/src/lib/i18n.ts @@ -2898,7 +2898,7 @@ Dinheiro apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 216 + 219 libs/ui/src/lib/i18n.ts @@ -3198,7 +3198,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 369 + 372 apps/client/src/app/pages/features/features-page.html @@ -3206,7 +3206,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 202 + 198 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -3246,7 +3246,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 309 + 305 libs/ui/src/lib/i18n.ts @@ -3902,7 +3902,7 @@ Atualizar saldo em Dinheiro apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 112 + 108 @@ -4082,7 +4082,7 @@ Responsabilidades apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 299 + 302 apps/client/src/app/pages/features/features-page.html @@ -4498,7 +4498,7 @@ Ativos apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 230 + 233 @@ -5444,7 +5444,7 @@ Taxa apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 258 libs/ui/src/lib/activities-table/activities-table.component.html @@ -5652,7 +5652,7 @@ Software de gerenciamento de patrimônio de código aberto apps/client/src/app/pages/i18n/i18n-page.html - 246 + 237 @@ -5752,7 +5752,7 @@ Você realmente deseja excluir o saldo desta conta? libs/ui/src/lib/account-balances/account-balances.component.ts - 120 + 113 @@ -5928,7 +5928,7 @@ Semana até agora libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5940,7 +5940,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5948,7 +5948,7 @@ Do mês até a data libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5960,7 +5960,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5968,7 +5968,7 @@ No acumulado do ano libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -6016,7 +6016,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -6028,7 +6028,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -6757,7 +6757,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 345 + 341 apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html @@ -6813,7 +6813,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 347 + 343 libs/ui/src/lib/i18n.ts @@ -7117,7 +7117,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 45 + 44 libs/common/src/lib/routes/routes.ts @@ -7133,7 +7133,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 34 + 33 libs/common/src/lib/routes/routes.ts @@ -7339,7 +7339,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 356 + 352 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -7643,7 +7643,7 @@ Find account, holding or page... libs/ui/src/lib/assistant/assistant.component.ts - 151 + 115 @@ -7888,36 +7888,12 @@ 150 - - Fee Ratio (legacy) - Fee Ratio (legacy) - - apps/client/src/app/pages/i18n/i18n-page.html - 152 - - - - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - - apps/client/src/app/pages/i18n/i18n-page.html - 154 - - - - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - - apps/client/src/app/pages/i18n/i18n-page.html - 158 - - Fee Ratio Fee Ratio apps/client/src/app/pages/i18n/i18n-page.html - 161 + 152 @@ -7925,7 +7901,7 @@ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 163 + 154 @@ -7933,7 +7909,7 @@ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 167 + 158 @@ -8103,7 +8079,7 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 56 + 53 @@ -8392,7 +8368,7 @@ Tarifas apps/client/src/app/pages/i18n/i18n-page.html - 170 + 161 @@ -8440,7 +8416,7 @@ Riscos de cluster de mercado regional apps/client/src/app/pages/i18n/i18n-page.html - 172 + 163 @@ -8536,7 +8512,7 @@ Ásia-Pacífico apps/client/src/app/pages/i18n/i18n-page.html - 174 + 165 @@ -8544,7 +8520,7 @@ The Asia-Pacific market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 176 + 167 @@ -8552,7 +8528,7 @@ The Asia-Pacific market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 180 + 171 @@ -8560,7 +8536,7 @@ The Asia-Pacific market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 184 + 175 @@ -8568,7 +8544,7 @@ Mercados Emergentes apps/client/src/app/pages/i18n/i18n-page.html - 189 + 180 @@ -8576,7 +8552,7 @@ The Emerging Markets contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 192 + 183 @@ -8584,7 +8560,7 @@ The Emerging Markets contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 196 + 187 @@ -8592,7 +8568,7 @@ The Emerging Markets contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 200 + 191 @@ -8600,7 +8576,7 @@ Europa apps/client/src/app/pages/i18n/i18n-page.html - 204 + 195 @@ -8608,7 +8584,7 @@ The Europe market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 206 + 197 @@ -8616,7 +8592,7 @@ The Europe market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 210 + 201 @@ -8624,7 +8600,7 @@ The Europe market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 214 + 205 @@ -8632,7 +8608,7 @@ Japão apps/client/src/app/pages/i18n/i18n-page.html - 218 + 209 @@ -8640,7 +8616,7 @@ The Japan market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 220 + 211 @@ -8648,7 +8624,7 @@ The Japan market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 224 + 215 @@ -8656,7 +8632,7 @@ The Japan market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 228 + 219 @@ -8664,7 +8640,7 @@ América do Norte apps/client/src/app/pages/i18n/i18n-page.html - 232 + 223 @@ -8672,7 +8648,7 @@ The North America market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 234 + 225 @@ -8680,7 +8656,7 @@ The North America market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 238 + 229 @@ -8688,7 +8664,7 @@ The North America market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 242 + 233 diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index a7b86f624..abe33aa80 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -339,7 +339,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 139 + 135 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -395,7 +395,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 145 + 141 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -415,15 +415,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 205 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 208 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 211 + 207 libs/ui/src/lib/account-balances/account-balances.component.html @@ -555,7 +555,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 155 + 151 libs/ui/src/lib/i18n.ts @@ -675,7 +675,7 @@ Tarih apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 157 libs/ui/src/lib/account-balances/account-balances.component.html @@ -923,7 +923,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 275 + 271 @@ -951,7 +951,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 + 120 @@ -1679,7 +1679,7 @@ Varlıklar apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 230 + 233 @@ -1687,7 +1687,7 @@ Alım Limiti apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 245 + 248 @@ -1695,7 +1695,7 @@ Analize Dahil Edilmemiştir. apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 271 + 274 @@ -1703,7 +1703,7 @@ Yükümlülükler apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 299 + 302 apps/client/src/app/pages/features/features-page.html @@ -1715,7 +1715,7 @@ Toplam Varlık apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 321 + 324 @@ -1723,7 +1723,7 @@ Yıllıklandırılmış Performans apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 335 + 338 @@ -1759,7 +1759,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 189 + 185 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1967,7 +1967,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 363 + 362 @@ -1979,7 +1979,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -1991,7 +1991,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -2003,7 +2003,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -2023,7 +2023,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 415 + 414 @@ -2319,11 +2319,11 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 45 apps/client/src/app/pages/resources/resources-page.component.ts - 30 + 29 libs/common/src/lib/routes/routes.ts @@ -2467,7 +2467,7 @@ Oturum açmış olduğunuz için demo hesabına erişemezsiniz. apps/client/src/app/pages/demo/demo-page.component.ts - 35 + 32 @@ -2727,7 +2727,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 40 + 39 libs/common/src/lib/routes/routes.ts @@ -3207,7 +3207,7 @@ Nakit Bakiyesini Güncelle apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 112 + 108 @@ -3215,7 +3215,7 @@ Birim Fiyat apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 214 + 210 libs/ui/src/lib/activities-table/activities-table.component.html @@ -3579,7 +3579,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 369 + 372 apps/client/src/app/pages/features/features-page.html @@ -3587,7 +3587,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 202 + 198 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -3611,7 +3611,7 @@ Para Yatırma libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 385 @@ -4744,11 +4744,11 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 356 + 359 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 387 + 395 libs/ui/src/lib/i18n.ts @@ -4760,7 +4760,7 @@ Tasarruflar libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 397 + 405 @@ -4840,7 +4840,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 290 + 286 libs/ui/src/lib/i18n.ts @@ -4872,7 +4872,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 309 + 305 libs/ui/src/lib/i18n.ts @@ -5156,7 +5156,7 @@ Nakit apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 216 + 219 libs/ui/src/lib/i18n.ts @@ -5452,7 +5452,7 @@ Ücret apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 258 libs/ui/src/lib/activities-table/activities-table.component.html @@ -5652,7 +5652,7 @@ Açık Kaynak Varlık Yönetim Yazılımı apps/client/src/app/pages/i18n/i18n-page.html - 246 + 237 @@ -5752,7 +5752,7 @@ Bu nakit bakiyesini silmeyi gerçekten istiyor musunuz? libs/ui/src/lib/account-balances/account-balances.component.ts - 120 + 113 @@ -5928,7 +5928,7 @@ Hafta içi libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5940,7 +5940,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5948,7 +5948,7 @@ Ay içi libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5960,7 +5960,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5968,7 +5968,7 @@ Yıl içi libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -6016,7 +6016,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -6028,7 +6028,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -6757,7 +6757,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 345 + 341 apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html @@ -6813,7 +6813,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 347 + 343 libs/ui/src/lib/i18n.ts @@ -7117,7 +7117,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 45 + 44 libs/common/src/lib/routes/routes.ts @@ -7133,7 +7133,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 34 + 33 libs/common/src/lib/routes/routes.ts @@ -7339,7 +7339,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 356 + 352 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -7643,7 +7643,7 @@ Find account, holding or page... libs/ui/src/lib/assistant/assistant.component.ts - 151 + 115 @@ -7888,36 +7888,12 @@ 150 - - Fee Ratio (legacy) - Ücret Oranı - - apps/client/src/app/pages/i18n/i18n-page.html - 152 - - - - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - Ücretler, ilk yatırımınızın %${thresholdMax} kadarını aşıyor (${feeRatio}%) - - apps/client/src/app/pages/i18n/i18n-page.html - 154 - - - - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - Ücretler, ilk yatırımınızın %${thresholdMax}’ını (${feeRatio}%) aşmaz - - apps/client/src/app/pages/i18n/i18n-page.html - 158 - - Fee Ratio Fee Ratio apps/client/src/app/pages/i18n/i18n-page.html - 161 + 152 @@ -7925,7 +7901,7 @@ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 163 + 154 @@ -7933,7 +7909,7 @@ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 167 + 158 @@ -8103,7 +8079,7 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 56 + 53 @@ -8392,7 +8368,7 @@ Fees apps/client/src/app/pages/i18n/i18n-page.html - 170 + 161 @@ -8440,7 +8416,7 @@ Regional Market Cluster Risks apps/client/src/app/pages/i18n/i18n-page.html - 172 + 163 @@ -8536,7 +8512,7 @@ Asya-Pasifik apps/client/src/app/pages/i18n/i18n-page.html - 174 + 165 @@ -8544,7 +8520,7 @@ The Asia-Pacific market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 176 + 167 @@ -8552,7 +8528,7 @@ The Asia-Pacific market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 180 + 171 @@ -8560,7 +8536,7 @@ The Asia-Pacific market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 184 + 175 @@ -8568,7 +8544,7 @@ Gelişmekte Olan Piyasalar apps/client/src/app/pages/i18n/i18n-page.html - 189 + 180 @@ -8576,7 +8552,7 @@ The Emerging Markets contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 192 + 183 @@ -8584,7 +8560,7 @@ The Emerging Markets contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 196 + 187 @@ -8592,7 +8568,7 @@ The Emerging Markets contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 200 + 191 @@ -8600,7 +8576,7 @@ Avrupa apps/client/src/app/pages/i18n/i18n-page.html - 204 + 195 @@ -8608,7 +8584,7 @@ The Europe market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 206 + 197 @@ -8616,7 +8592,7 @@ The Europe market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 210 + 201 @@ -8624,7 +8600,7 @@ The Europe market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 214 + 205 @@ -8632,7 +8608,7 @@ Japonya apps/client/src/app/pages/i18n/i18n-page.html - 218 + 209 @@ -8640,7 +8616,7 @@ The Japan market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 220 + 211 @@ -8648,7 +8624,7 @@ The Japan market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 224 + 215 @@ -8656,7 +8632,7 @@ The Japan market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 228 + 219 @@ -8664,7 +8640,7 @@ Kuzey Amerika apps/client/src/app/pages/i18n/i18n-page.html - 232 + 223 @@ -8672,7 +8648,7 @@ The North America market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 234 + 225 @@ -8680,7 +8656,7 @@ The North America market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 238 + 229 @@ -8688,7 +8664,7 @@ The North America market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 242 + 233 diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index 61cebd47a..95ad50c7c 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -471,7 +471,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 139 + 135 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -527,7 +527,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 145 + 141 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -547,15 +547,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 205 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 208 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 211 + 207 libs/ui/src/lib/account-balances/account-balances.component.html @@ -735,7 +735,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 155 + 151 libs/ui/src/lib/i18n.ts @@ -1159,7 +1159,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 275 + 271 @@ -1211,7 +1211,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 + 120 @@ -1855,7 +1855,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 189 + 185 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2231,7 +2231,7 @@ Активи apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 230 + 233 @@ -2239,7 +2239,7 @@ Купівельна спроможність apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 245 + 248 @@ -2247,7 +2247,7 @@ Виключено з аналізу apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 271 + 274 @@ -2255,7 +2255,7 @@ Зобов’язання apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 299 + 302 apps/client/src/app/pages/features/features-page.html @@ -2267,7 +2267,7 @@ Чиста вартість apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 321 + 324 @@ -2275,7 +2275,7 @@ Річна доходність apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 335 + 338 @@ -2319,7 +2319,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 356 + 352 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -2555,7 +2555,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 363 + 362 @@ -2567,7 +2567,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -2579,7 +2579,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -2591,7 +2591,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -2611,7 +2611,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 415 + 414 @@ -3367,11 +3367,11 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 45 apps/client/src/app/pages/resources/resources-page.component.ts - 30 + 29 libs/common/src/lib/routes/routes.ts @@ -3523,7 +3523,7 @@ Оскільки ви вже ввійшли, ви не можете отримати доступ до демонстраційного обліковий запис. apps/client/src/app/pages/demo/demo-page.component.ts - 35 + 32 @@ -3796,7 +3796,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 40 + 39 libs/common/src/lib/routes/routes.ts @@ -3844,7 +3844,7 @@ Програмне забезпечення управління багатством з відкритим кодом apps/client/src/app/pages/i18n/i18n-page.html - 246 + 237 @@ -4384,7 +4384,7 @@ Оновити баланс готівки apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 112 + 108 @@ -4392,7 +4392,7 @@ Дата apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 157 libs/ui/src/lib/account-balances/account-balances.component.html @@ -4412,7 +4412,7 @@ Ціна за одиницю apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 214 + 210 libs/ui/src/lib/activities-table/activities-table.component.html @@ -4800,7 +4800,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 369 + 372 apps/client/src/app/pages/features/features-page.html @@ -4808,7 +4808,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 202 + 198 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -5316,7 +5316,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 45 + 44 libs/common/src/lib/routes/routes.ts @@ -5332,7 +5332,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 34 + 33 libs/common/src/lib/routes/routes.ts @@ -6075,7 +6075,7 @@ Ви дійсно хочете видалити цей рахунок? libs/ui/src/lib/account-balances/account-balances.component.ts - 120 + 113 @@ -6155,7 +6155,7 @@ Тиждень до дати libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -6167,7 +6167,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -6175,7 +6175,7 @@ Місяць до дати libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -6187,7 +6187,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -6195,7 +6195,7 @@ Рік до дати libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -6215,7 +6215,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -6227,7 +6227,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -6375,7 +6375,7 @@ Депозит libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 385 @@ -6387,11 +6387,11 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 356 + 359 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 387 + 395 libs/ui/src/lib/i18n.ts @@ -6403,7 +6403,7 @@ Заощадження libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 397 + 405 @@ -6499,7 +6499,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 290 + 286 libs/ui/src/lib/i18n.ts @@ -6531,7 +6531,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 309 + 305 libs/ui/src/lib/i18n.ts @@ -6587,7 +6587,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 345 + 341 apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html @@ -6651,7 +6651,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 347 + 343 libs/ui/src/lib/i18n.ts @@ -6915,7 +6915,7 @@ Комісія apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 258 libs/ui/src/lib/activities-table/activities-table.component.html @@ -6959,7 +6959,7 @@ Готівка apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 216 + 219 libs/ui/src/lib/i18n.ts @@ -7643,7 +7643,7 @@ Find account, holding or page... libs/ui/src/lib/assistant/assistant.component.ts - 151 + 115 @@ -7888,36 +7888,12 @@ 150 - - Fee Ratio (legacy) - Fee Ratio (legacy) - - apps/client/src/app/pages/i18n/i18n-page.html - 152 - - - - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - - apps/client/src/app/pages/i18n/i18n-page.html - 154 - - - - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - - apps/client/src/app/pages/i18n/i18n-page.html - 158 - - Fee Ratio Fee Ratio apps/client/src/app/pages/i18n/i18n-page.html - 161 + 152 @@ -7925,7 +7901,7 @@ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 163 + 154 @@ -7933,7 +7909,7 @@ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 167 + 158 @@ -8103,7 +8079,7 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 56 + 53 @@ -8392,7 +8368,7 @@ Fees apps/client/src/app/pages/i18n/i18n-page.html - 170 + 161 @@ -8440,7 +8416,7 @@ Regional Market Cluster Risks apps/client/src/app/pages/i18n/i18n-page.html - 172 + 163 @@ -8536,7 +8512,7 @@ Asia-Pacific apps/client/src/app/pages/i18n/i18n-page.html - 174 + 165 @@ -8544,7 +8520,7 @@ The Asia-Pacific market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 176 + 167 @@ -8552,7 +8528,7 @@ The Asia-Pacific market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 180 + 171 @@ -8560,7 +8536,7 @@ The Asia-Pacific market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 184 + 175 @@ -8568,7 +8544,7 @@ Emerging Markets apps/client/src/app/pages/i18n/i18n-page.html - 189 + 180 @@ -8576,7 +8552,7 @@ The Emerging Markets contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 192 + 183 @@ -8584,7 +8560,7 @@ The Emerging Markets contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 196 + 187 @@ -8592,7 +8568,7 @@ The Emerging Markets contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 200 + 191 @@ -8600,7 +8576,7 @@ Europe apps/client/src/app/pages/i18n/i18n-page.html - 204 + 195 @@ -8608,7 +8584,7 @@ The Europe market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 206 + 197 @@ -8616,7 +8592,7 @@ The Europe market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 210 + 201 @@ -8624,7 +8600,7 @@ The Europe market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 214 + 205 @@ -8632,7 +8608,7 @@ Japan apps/client/src/app/pages/i18n/i18n-page.html - 218 + 209 @@ -8640,7 +8616,7 @@ The Japan market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 220 + 211 @@ -8648,7 +8624,7 @@ The Japan market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 224 + 215 @@ -8656,7 +8632,7 @@ The Japan market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 228 + 219 @@ -8664,7 +8640,7 @@ North America apps/client/src/app/pages/i18n/i18n-page.html - 232 + 223 @@ -8672,7 +8648,7 @@ The North America market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 234 + 225 @@ -8680,7 +8656,7 @@ The North America market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 238 + 229 @@ -8688,7 +8664,7 @@ The North America market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 242 + 233 diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 03644820a..b6a54edfe 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -362,7 +362,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 139 + 135 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -416,7 +416,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 145 + 141 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -435,15 +435,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 205 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 208 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 211 + 207 libs/ui/src/lib/account-balances/account-balances.component.html @@ -589,7 +589,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 155 + 151 libs/ui/src/lib/i18n.ts @@ -674,7 +674,7 @@ Date apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 157 libs/ui/src/lib/account-balances/account-balances.component.html @@ -952,7 +952,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 275 + 271 @@ -992,7 +992,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 + 120 @@ -1704,28 +1704,28 @@ Assets apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 230 + 233 Buying Power apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 245 + 248 Excluded from Analysis apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 271 + 274 Liabilities apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 299 + 302 apps/client/src/app/pages/features/features-page.html @@ -1736,14 +1736,14 @@ Net Worth apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 321 + 324 Annualized Performance apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 335 + 338 @@ -1775,7 +1775,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 189 + 185 libs/ui/src/lib/activities-table/activities-table.component.html @@ -1958,7 +1958,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 363 + 362 @@ -1969,7 +1969,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -1980,7 +1980,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -1991,7 +1991,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -2009,7 +2009,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 415 + 414 @@ -2554,11 +2554,11 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 45 apps/client/src/app/pages/resources/resources-page.component.ts - 30 + 29 libs/common/src/lib/routes/routes.ts @@ -2698,7 +2698,7 @@ As you are already logged in, you cannot access the demo account. apps/client/src/app/pages/demo/demo-page.component.ts - 35 + 32 @@ -2927,7 +2927,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 40 + 39 libs/common/src/lib/routes/routes.ts @@ -2964,7 +2964,7 @@ Open Source Wealth Management Software apps/client/src/app/pages/i18n/i18n-page.html - 246 + 237 @@ -3451,14 +3451,14 @@ Update Cash Balance apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 112 + 108 Unit Price apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 214 + 210 libs/ui/src/lib/activities-table/activities-table.component.html @@ -3778,7 +3778,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 369 + 372 apps/client/src/app/pages/features/features-page.html @@ -3786,7 +3786,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 202 + 198 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -3808,7 +3808,7 @@ Deposit libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 385 @@ -4513,7 +4513,7 @@ Do you really want to delete this account balance? libs/ui/src/lib/account-balances/account-balances.component.ts - 120 + 113 @@ -4669,11 +4669,11 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 356 + 359 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 387 + 395 libs/ui/src/lib/i18n.ts @@ -4684,7 +4684,7 @@ Savings libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 397 + 405 @@ -4759,7 +4759,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 290 + 286 libs/ui/src/lib/i18n.ts @@ -4790,7 +4790,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 309 + 305 libs/ui/src/lib/i18n.ts @@ -5013,7 +5013,7 @@ Fee apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 258 libs/ui/src/lib/activities-table/activities-table.component.html @@ -5053,7 +5053,7 @@ Cash apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 216 + 219 libs/ui/src/lib/i18n.ts @@ -5417,21 +5417,21 @@ Year to date libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 Week to date libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 Month to date libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5442,7 +5442,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5453,7 +5453,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5497,7 +5497,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -5508,7 +5508,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -6125,7 +6125,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 345 + 341 apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html @@ -6208,7 +6208,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 347 + 343 libs/ui/src/lib/i18n.ts @@ -6486,7 +6486,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 45 + 44 libs/common/src/lib/routes/routes.ts @@ -6513,7 +6513,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 34 + 33 libs/common/src/lib/routes/routes.ts @@ -6688,7 +6688,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 356 + 352 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -6947,7 +6947,7 @@ Find account, holding or page... libs/ui/src/lib/assistant/assistant.component.ts - 151 + 115 @@ -7155,46 +7155,25 @@ 150 - - Fee Ratio (legacy) - - apps/client/src/app/pages/i18n/i18n-page.html - 152 - - - - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - - apps/client/src/app/pages/i18n/i18n-page.html - 154 - - - - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - - apps/client/src/app/pages/i18n/i18n-page.html - 158 - - Fee Ratio apps/client/src/app/pages/i18n/i18n-page.html - 161 + 152 The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 163 + 154 The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 167 + 158 @@ -7347,7 +7326,7 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 56 + 53 @@ -7609,7 +7588,7 @@ Fees apps/client/src/app/pages/i18n/i18n-page.html - 170 + 161 @@ -7651,7 +7630,7 @@ Regional Market Cluster Risks apps/client/src/app/pages/i18n/i18n-page.html - 172 + 163 @@ -7728,140 +7707,140 @@ Asia-Pacific apps/client/src/app/pages/i18n/i18n-page.html - 174 + 165 The Asia-Pacific market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 176 + 167 The Asia-Pacific market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 180 + 171 The Asia-Pacific market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 184 + 175 Emerging Markets apps/client/src/app/pages/i18n/i18n-page.html - 189 + 180 The Emerging Markets contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 192 + 183 The Emerging Markets contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 196 + 187 The Emerging Markets contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 200 + 191 Europe apps/client/src/app/pages/i18n/i18n-page.html - 204 + 195 The Europe market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 206 + 197 The Europe market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 210 + 201 The Europe market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 214 + 205 Japan apps/client/src/app/pages/i18n/i18n-page.html - 218 + 209 The Japan market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 220 + 211 The Japan market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 224 + 215 The Japan market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 228 + 219 North America apps/client/src/app/pages/i18n/i18n-page.html - 232 + 223 The North America market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 234 + 225 The North America market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 238 + 229 The North America market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 242 + 233 diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 67007cdef..ac81eebc7 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -388,7 +388,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 139 + 135 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -444,7 +444,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 145 + 141 libs/ui/src/lib/accounts-table/accounts-table.component.html @@ -464,15 +464,15 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 205 + 201 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 208 + 204 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 211 + 207 libs/ui/src/lib/account-balances/account-balances.component.html @@ -624,7 +624,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 155 + 151 libs/ui/src/lib/i18n.ts @@ -720,7 +720,7 @@ 日期 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 161 + 157 libs/ui/src/lib/account-balances/account-balances.component.html @@ -1000,7 +1000,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 275 + 271 @@ -1044,7 +1044,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 124 + 120 @@ -1832,7 +1832,7 @@ 资产 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 230 + 233 @@ -1840,7 +1840,7 @@ 购买力 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 245 + 248 @@ -1848,7 +1848,7 @@ 从分析中排除 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 271 + 274 @@ -1856,7 +1856,7 @@ 负债 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 299 + 302 apps/client/src/app/pages/features/features-page.html @@ -1868,7 +1868,7 @@ 净值 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 321 + 324 @@ -1876,7 +1876,7 @@ 年化业绩 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 335 + 338 @@ -1912,7 +1912,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 189 + 185 libs/ui/src/lib/activities-table/activities-table.component.html @@ -2108,7 +2108,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 363 + 362 @@ -2120,7 +2120,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -2132,7 +2132,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -2144,7 +2144,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -2164,7 +2164,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 415 + 414 @@ -2764,11 +2764,11 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 48 + 45 apps/client/src/app/pages/resources/resources-page.component.ts - 30 + 29 libs/common/src/lib/routes/routes.ts @@ -2912,7 +2912,7 @@ 由于您已经登录,因此无法访问模拟帐户。 apps/client/src/app/pages/demo/demo-page.component.ts - 35 + 32 @@ -3160,7 +3160,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 40 + 39 libs/common/src/lib/routes/routes.ts @@ -3200,7 +3200,7 @@ 开源财富管理软件 apps/client/src/app/pages/i18n/i18n-page.html - 246 + 237 @@ -3748,7 +3748,7 @@ 更新现金余额 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 112 + 108 @@ -3756,7 +3756,7 @@ 单价 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 214 + 210 libs/ui/src/lib/activities-table/activities-table.component.html @@ -4112,7 +4112,7 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 369 + 372 apps/client/src/app/pages/features/features-page.html @@ -4120,7 +4120,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 202 + 198 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts @@ -4144,7 +4144,7 @@ 存款 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 377 + 385 @@ -4925,7 +4925,7 @@ 您确实要删除该帐户余额吗? libs/ui/src/lib/account-balances/account-balances.component.ts - 120 + 113 @@ -5101,11 +5101,11 @@ apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 356 + 359 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 387 + 395 libs/ui/src/lib/i18n.ts @@ -5117,7 +5117,7 @@ 储蓄 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts - 397 + 405 @@ -5197,7 +5197,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 290 + 286 libs/ui/src/lib/i18n.ts @@ -5229,7 +5229,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 309 + 305 libs/ui/src/lib/i18n.ts @@ -5477,7 +5477,7 @@ 费用 apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 262 + 258 libs/ui/src/lib/activities-table/activities-table.component.html @@ -5521,7 +5521,7 @@ 现金 apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html - 216 + 219 libs/ui/src/lib/i18n.ts @@ -5929,7 +5929,7 @@ 今年迄今为止 libs/ui/src/lib/assistant/assistant.component.ts - 375 + 374 @@ -5937,7 +5937,7 @@ 本周至今 libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -5945,7 +5945,7 @@ 本月至今 libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5957,7 +5957,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 371 + 370 @@ -5969,7 +5969,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 367 + 366 @@ -6017,7 +6017,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 385 + 384 @@ -6029,7 +6029,7 @@ libs/ui/src/lib/assistant/assistant.component.ts - 409 + 408 @@ -6758,7 +6758,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 345 + 341 apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html @@ -6814,7 +6814,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 347 + 343 libs/ui/src/lib/i18n.ts @@ -7118,7 +7118,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 45 + 44 libs/common/src/lib/routes/routes.ts @@ -7134,7 +7134,7 @@ apps/client/src/app/pages/resources/resources-page.component.ts - 34 + 33 libs/common/src/lib/routes/routes.ts @@ -7340,7 +7340,7 @@ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html - 356 + 352 libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html @@ -7644,7 +7644,7 @@ 查找账户、持仓或页面... libs/ui/src/lib/assistant/assistant.component.ts - 151 + 115 @@ -7889,36 +7889,12 @@ 150 - - Fee Ratio (legacy) - 费率(旧版) - - apps/client/src/app/pages/i18n/i18n-page.html - 152 - - - - The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - 费用超过了您初始投资的 ${thresholdMax}% (${feeRatio}%) - - apps/client/src/app/pages/i18n/i18n-page.html - 154 - - - - The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%) - 费用未超过您初始投资的 ${thresholdMax}% (${feeRatio}%) - - apps/client/src/app/pages/i18n/i18n-page.html - 158 - - Fee Ratio 费率 apps/client/src/app/pages/i18n/i18n-page.html - 161 + 152 @@ -7926,7 +7902,7 @@ 费用已超过您总投资金额的 ${thresholdMax}%(${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 163 + 154 @@ -7934,7 +7910,7 @@ 费用未超过您总投资金额的 ${thresholdMax}%(${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html - 167 + 158 @@ -8104,7 +8080,7 @@ apps/client/src/app/pages/admin/admin-page.component.ts - 56 + 53 @@ -8393,7 +8369,7 @@ 费用 apps/client/src/app/pages/i18n/i18n-page.html - 170 + 161 @@ -8441,7 +8417,7 @@ 区域市场集群风险 apps/client/src/app/pages/i18n/i18n-page.html - 172 + 163 @@ -8537,7 +8513,7 @@ 亚太地区 apps/client/src/app/pages/i18n/i18n-page.html - 174 + 165 @@ -8545,7 +8521,7 @@ 亚太地区对您的当前投资 (${valueRatio}%) 的贡献超过了 ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 176 + 167 @@ -8553,7 +8529,7 @@ 亚太地区对您的当前投资 (${valueRatio}%) 的贡献低于 ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 180 + 171 @@ -8561,7 +8537,7 @@ 亚太地区对您的当前投资 (${valueRatio}%) 的贡献在 ${thresholdMin}% 和 ${thresholdMax}% 之间 apps/client/src/app/pages/i18n/i18n-page.html - 184 + 175 @@ -8569,7 +8545,7 @@ 新兴市场 apps/client/src/app/pages/i18n/i18n-page.html - 189 + 180 @@ -8577,7 +8553,7 @@ 新兴市场对您的当前投资 (${valueRatio}%) 的贡献超过了 ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 192 + 183 @@ -8585,7 +8561,7 @@ 新兴市场对您的当前投资 (${valueRatio}%) 的贡献低于 ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 196 + 187 @@ -8593,7 +8569,7 @@ 新兴市场对您的当前投资 (${valueRatio}%) 的贡献在 ${thresholdMin}% 和 ${thresholdMax}% 之间 apps/client/src/app/pages/i18n/i18n-page.html - 200 + 191 @@ -8601,7 +8577,7 @@ 欧洲市场 apps/client/src/app/pages/i18n/i18n-page.html - 204 + 195 @@ -8609,7 +8585,7 @@ 欧洲市场对您的当前投资 (${valueRatio}%) 的贡献超过了 ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 206 + 197 @@ -8617,7 +8593,7 @@ 欧洲市场对您的当前投资 (${valueRatio}%) 的贡献低于 ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 210 + 201 @@ -8625,7 +8601,7 @@ 欧洲市场对您的当前投资 (${valueRatio}%) 的贡献在 ${thresholdMin}% 和 ${thresholdMax}% 之间 apps/client/src/app/pages/i18n/i18n-page.html - 214 + 205 @@ -8633,7 +8609,7 @@ 日本市场 apps/client/src/app/pages/i18n/i18n-page.html - 218 + 209 @@ -8641,7 +8617,7 @@ 日本市场对您的当前投资 (${valueRatio}%) 的贡献超过了 ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 220 + 211 @@ -8649,7 +8625,7 @@ 日本市场对您的当前投资 (${valueRatio}%) 的贡献低于 ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 224 + 215 @@ -8657,7 +8633,7 @@ 日本市场对您的当前投资 (${valueRatio}%) 的贡献在 ${thresholdMin}% 和 ${thresholdMax}% 之间 apps/client/src/app/pages/i18n/i18n-page.html - 228 + 219 @@ -8665,7 +8641,7 @@ 北美市场 apps/client/src/app/pages/i18n/i18n-page.html - 232 + 223 @@ -8673,7 +8649,7 @@ 北美市场对您的当前投资 (${valueRatio}%) 的贡献超过了 ${thresholdMax}% apps/client/src/app/pages/i18n/i18n-page.html - 234 + 225 @@ -8681,7 +8657,7 @@ 北美市场对您的当前投资 (${valueRatio}%) 的贡献低于 ${thresholdMin}% apps/client/src/app/pages/i18n/i18n-page.html - 238 + 229 @@ -8689,7 +8665,7 @@ 北美市场对您的当前投资 (${valueRatio}%) 的贡献在 ${thresholdMin}% 和 ${thresholdMax}% 之间 apps/client/src/app/pages/i18n/i18n-page.html - 242 + 233 From f2c81ada90d040da961702d702a3daf93ec1b9b9 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 28 Feb 2026 10:43:52 +0100 Subject: [PATCH 64/74] Task/refactor $queryRawUnsafe() in data provider service (#6408) * Refactor $queryRawUnsafe() * Update changelog --- CHANGELOG.md | 1 + .../data-provider/data-provider.service.ts | 33 +++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b25ff7e6..7b79e434f 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 - Removed the deprecated static portfolio analysis rule: _Fees_ (Fee Ratio) +- Refactored queries in the data provider service to use Prisma’s safe query methods ### Fixed 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 8ee8761c0..a6b12cce2 100644 --- a/apps/api/src/services/data-provider/data-provider.service.ts +++ b/apps/api/src/services/data-provider/data-provider.service.ts @@ -30,7 +30,7 @@ import { import type { Granularity, UserWithSettings } from '@ghostfolio/common/types'; import { Inject, Injectable, Logger, OnModuleInit } from '@nestjs/common'; -import { DataSource, MarketData, SymbolProfile } from '@prisma/client'; +import { DataSource, MarketData, Prisma, SymbolProfile } from '@prisma/client'; import { Big } from 'big.js'; import { eachDayOfInterval, format, isValid } from 'date-fns'; import { groupBy, isEmpty, isNumber, uniqWith } from 'lodash'; @@ -347,36 +347,35 @@ export class DataProviderService implements OnModuleInit { const granularityQuery = aGranularity === 'month' - ? `AND (date_part('day', date) = 1 OR date >= TIMESTAMP 'yesterday')` - : ''; + ? Prisma.sql`AND (date_part('day', date) = 1 OR date >= TIMESTAMP 'yesterday')` + : Prisma.empty; const rangeQuery = from && to - ? `AND date >= '${format(from, DATE_FORMAT)}' AND date <= '${format( + ? Prisma.sql`AND date >= ${format(from, DATE_FORMAT)}::timestamp AND date <= ${format( to, DATE_FORMAT - )}'` - : ''; + )}::timestamp` + : Prisma.empty; const dataSources = aItems.map(({ dataSource }) => { return dataSource; }); + const symbols = aItems.map(({ symbol }) => { return symbol; }); try { - const queryRaw = ` - SELECT * - FROM "MarketData" - WHERE "dataSource" IN ('${dataSources.join(`','`)}') - AND "symbol" IN ('${symbols.join( - `','` - )}') ${granularityQuery} ${rangeQuery} - ORDER BY date;`; - - const marketDataByGranularity: MarketData[] = - await this.prismaService.$queryRawUnsafe(queryRaw); + const marketDataByGranularity: MarketData[] = await this.prismaService + .$queryRaw` + SELECT * + FROM "MarketData" + WHERE "dataSource"::text IN (${Prisma.join(dataSources)}) + AND "symbol" IN (${Prisma.join(symbols)}) + ${granularityQuery} + ${rangeQuery} + ORDER BY date;`; response = marketDataByGranularity.reduce((r, marketData) => { const { date, marketPrice, symbol } = marketData; From 9493f79f8e288581e0e9f2b539b69041731c0028 Mon Sep 17 00:00:00 2001 From: Kenrick Tandrian <60643640+KenTandrian@users.noreply.github.com> Date: Sat, 28 Feb 2026 13:46:37 +0400 Subject: [PATCH 65/74] Task/improve type safety in portfolio filter form component (#6404) * fix(lib): resolve typescript errors in portfolio filter form * fix(lib): type safety in template * feat(lib): implement takeUntilDestroyed * feat(lib): replace constructor params with injections * feat(lib): change accounts to input signal * feat(lib): change assetClasses to input signal * feat(lib): change holdings to input signal * feat(lib): change tags to input signal * fix(lib): implement signal for disabled * fix(lib): implement model signal for disabled * fix(lib): reduce any types --- .../portfolio-filter-form.component.html | 12 ++-- ...portfolio-filter-form.component.stories.ts | 4 +- .../portfolio-filter-form.component.ts | 69 ++++++++++--------- 3 files changed, 43 insertions(+), 42 deletions(-) diff --git a/libs/ui/src/lib/portfolio-filter-form/portfolio-filter-form.component.html b/libs/ui/src/lib/portfolio-filter-form/portfolio-filter-form.component.html index e017d33d6..f5dbac698 100644 --- a/libs/ui/src/lib/portfolio-filter-form/portfolio-filter-form.component.html +++ b/libs/ui/src/lib/portfolio-filter-form/portfolio-filter-form.component.html @@ -4,14 +4,14 @@ Account - @for (account of accounts; track account.id) { + @for (account of accounts(); track account.id) {
    @if (account.platform?.url) { } {{ account.name }} @@ -32,7 +32,7 @@ filterForm.get('holding')?.value?.name }} - @for (holding of holdings; track holding.name) { + @for (holding of holdings(); track holding.name) {
    Tag - @for (tag of tags; track tag.id) { + @for (tag of tags(); track tag.id) { {{ tag.label }} } @@ -64,7 +64,7 @@ Asset Class - @for (assetClass of assetClasses; track assetClass.id) { + @for (assetClass of assetClasses(); track assetClass.id) { {{ assetClass.label }} diff --git a/libs/ui/src/lib/portfolio-filter-form/portfolio-filter-form.component.stories.ts b/libs/ui/src/lib/portfolio-filter-form/portfolio-filter-form.component.stories.ts index 710a4e9c5..665bec3e4 100644 --- a/libs/ui/src/lib/portfolio-filter-form/portfolio-filter-form.component.stories.ts +++ b/libs/ui/src/lib/portfolio-filter-form/portfolio-filter-form.component.stories.ts @@ -40,7 +40,7 @@ export const Default: Story = { { id: 'COMMODITY', label: 'Commodity', type: 'ASSET_CLASS' }, { id: 'EQUITY', label: 'Equity', type: 'ASSET_CLASS' }, { id: 'FIXED_INCOME', label: 'Fixed Income', type: 'ASSET_CLASS' } - ] as any, + ], holdings: [ { currency: 'USD', @@ -66,7 +66,7 @@ export const Default: Story = { label: 'Retirement Fund', type: 'TAG' } - ] as any, + ], disabled: false } }; diff --git a/libs/ui/src/lib/portfolio-filter-form/portfolio-filter-form.component.ts b/libs/ui/src/lib/portfolio-filter-form/portfolio-filter-form.component.ts index afbe5af4e..c1f82315c 100644 --- a/libs/ui/src/lib/portfolio-filter-form/portfolio-filter-form.component.ts +++ b/libs/ui/src/lib/portfolio-filter-form/portfolio-filter-form.component.ts @@ -8,12 +8,15 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, - Input, + DestroyRef, OnChanges, - OnDestroy, OnInit, - forwardRef + forwardRef, + inject, + input, + model } from '@angular/core'; +import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { ControlValueAccessor, FormBuilder, @@ -25,7 +28,6 @@ import { } from '@angular/forms'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatSelectModule } from '@angular/material/select'; -import { Subject, takeUntil } from 'rxjs'; import { GfEntityLogoComponent } from '../entity-logo/entity-logo.component'; import { PortfolioFilterFormValue } from './interfaces'; @@ -53,33 +55,37 @@ import { PortfolioFilterFormValue } from './interfaces'; templateUrl: './portfolio-filter-form.component.html' }) export class GfPortfolioFilterFormComponent - implements ControlValueAccessor, OnInit, OnChanges, OnDestroy + implements ControlValueAccessor, OnChanges, OnInit { - @Input() accounts: AccountWithPlatform[] = []; - @Input() assetClasses: Filter[] = []; - @Input() holdings: PortfolioPosition[] = []; - @Input() tags: Filter[] = []; - @Input() disabled = false; - - public filterForm: FormGroup; - - private unsubscribeSubject = new Subject(); - - public constructor( - private changeDetectorRef: ChangeDetectorRef, - private formBuilder: FormBuilder - ) { + public readonly accounts = input([]); + public readonly assetClasses = input([]); + public readonly disabled = model(false); + public readonly holdings = input([]); + public readonly tags = input([]); + + public filterForm: FormGroup<{ + account: FormControl; + assetClass: FormControl; + holding: FormControl; + tag: FormControl; + }>; + + private readonly changeDetectorRef = inject(ChangeDetectorRef); + private readonly destroyRef = inject(DestroyRef); + private readonly formBuilder = inject(FormBuilder); + + public constructor() { this.filterForm = this.formBuilder.group({ - account: new FormControl(null), - assetClass: new FormControl(null), - holding: new FormControl(null), - tag: new FormControl(null) + account: new FormControl(null), + assetClass: new FormControl(null), + holding: new FormControl(null), + tag: new FormControl(null) }); } public ngOnInit() { this.filterForm.valueChanges - .pipe(takeUntil(this.unsubscribeSubject)) + .pipe(takeUntilDestroyed(this.destroyRef)) .subscribe((value) => { this.onChange(value as PortfolioFilterFormValue); this.onTouched(); @@ -108,7 +114,7 @@ export class GfPortfolioFilterFormComponent } public ngOnChanges() { - if (this.disabled) { + if (this.disabled()) { this.filterForm.disable({ emitEvent: false }); } else { this.filterForm.enable({ emitEvent: false }); @@ -116,9 +122,9 @@ export class GfPortfolioFilterFormComponent const tagControl = this.filterForm.get('tag'); - if (this.tags.length === 0) { + if (this.tags().length === 0) { tagControl?.disable({ emitEvent: false }); - } else if (!this.disabled) { + } else if (!this.disabled()) { tagControl?.enable({ emitEvent: false }); } @@ -134,9 +140,9 @@ export class GfPortfolioFilterFormComponent } public setDisabledState(isDisabled: boolean) { - this.disabled = isDisabled; + this.disabled.set(isDisabled); - if (this.disabled) { + if (this.disabled()) { this.filterForm.disable({ emitEvent: false }); } else { this.filterForm.enable({ emitEvent: false }); @@ -161,11 +167,6 @@ export class GfPortfolioFilterFormComponent } } - public ngOnDestroy() { - this.unsubscribeSubject.next(); - this.unsubscribeSubject.complete(); - } - // eslint-disable-next-line @typescript-eslint/no-unused-vars private onChange = (_value: PortfolioFilterFormValue): void => { // ControlValueAccessor onChange callback From 98fb0b86af0f1bac6bd54499be38feada9bd3bcd Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 28 Feb 2026 10:47:09 +0100 Subject: [PATCH 66/74] Task/improve usability of asset profile details dialog for currencies (#6406) * Improve usability * Update changelog --- CHANGELOG.md | 1 + apps/api/src/app/admin/admin.service.ts | 6 ++++- .../asset-profile-dialog.component.ts | 24 +++++++++++++++---- .../asset-profile-dialog.html | 11 +++++++-- 4 files changed, 35 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b79e434f..08e1b0f1c 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 usability of the asset profile details dialog in the admin control panel for currencies - Removed the deprecated static portfolio analysis rule: _Fees_ (Fee Ratio) - Refactored queries in the data provider service to use Prisma’s safe query methods diff --git a/apps/api/src/app/admin/admin.service.ts b/apps/api/src/app/admin/admin.service.ts index d77fde346..1f8745cd1 100644 --- a/apps/api/src/app/admin/admin.service.ts +++ b/apps/api/src/app/admin/admin.service.ts @@ -470,7 +470,9 @@ export class AdminService { let currency: EnhancedSymbolProfile['currency'] = '-'; let dateOfFirstActivity: EnhancedSymbolProfile['dateOfFirstActivity']; - if (isCurrency(getCurrencyFromSymbol(symbol))) { + const isCurrencyAssetProfile = isCurrency(getCurrencyFromSymbol(symbol)); + + if (isCurrencyAssetProfile) { currency = getCurrencyFromSymbol(symbol); ({ activitiesCount, dateOfFirstActivity } = await this.orderService.getStatisticsByCurrency(currency)); @@ -508,6 +510,8 @@ export class AdminService { dataSource, dateOfFirstActivity, symbol, + assetClass: isCurrencyAssetProfile ? AssetClass.LIQUIDITY : undefined, + assetSubClass: isCurrencyAssetProfile ? AssetSubClass.CASH : undefined, isActive: true } }; diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts index cbd8deba3..b1519e35b 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts @@ -5,7 +5,11 @@ import { PROPERTY_IS_DATA_GATHERING_ENABLED } from '@ghostfolio/common/config'; import { UpdateAssetProfileDto } from '@ghostfolio/common/dtos'; -import { DATE_FORMAT } from '@ghostfolio/common/helper'; +import { + DATE_FORMAT, + getCurrencyFromSymbol, + isCurrency +} from '@ghostfolio/common/helper'; import { AdminMarketDataDetails, AssetClassSelectorOption, @@ -138,7 +142,6 @@ export class GfAssetProfileDialogComponent implements OnDestroy, OnInit { }); public assetSubClassOptions: AssetClassSelectorOption[] = []; - public assetProfile: AdminMarketDataDetails['assetProfile']; public assetProfileForm = this.formBuilder.group({ @@ -180,12 +183,14 @@ export class GfAssetProfileDialogComponent implements OnDestroy, OnInit { ); public benchmarks: Partial[]; + public canEditAssetProfile = true; public countries: { [code: string]: { name: string; value: number }; }; public currencies: string[] = []; + public dateRangeOptions = [ { label: $localize`Current week` + ' (' + $localize`WTD` + ')', @@ -260,7 +265,7 @@ export class GfAssetProfileDialogComponent implements OnDestroy, OnInit { } public get canSaveAssetProfileIdentifier() { - return !this.assetProfileForm.dirty; + return !this.assetProfileForm.dirty && this.canEditAssetProfile; } public ngOnInit() { @@ -324,6 +329,11 @@ export class GfAssetProfileDialogComponent implements OnDestroy, OnInit { this.assetClassLabel = translate(this.assetProfile?.assetClass); this.assetSubClassLabel = translate(this.assetProfile?.assetSubClass); + + this.canEditAssetProfile = !isCurrency( + getCurrencyFromSymbol(this.data.symbol) + ); + this.countries = {}; this.isBenchmark = this.benchmarks.some(({ id }) => { @@ -390,6 +400,10 @@ export class GfAssetProfileDialogComponent implements OnDestroy, OnInit { url: this.assetProfile?.url ?? '' }); + if (!this.canEditAssetProfile) { + this.assetProfileForm.disable(); + } + this.assetProfileForm.markAsPristine(); this.changeDetectorRef.markForCheck(); @@ -399,7 +413,9 @@ export class GfAssetProfileDialogComponent implements OnDestroy, OnInit { public onCancelEditAssetProfileIdentifierMode() { this.isEditAssetProfileIdentifierMode = false; - this.assetProfileForm.enable(); + if (this.canEditAssetProfile) { + this.assetProfileForm.enable(); + } this.assetProfileIdentifierForm.reset(); } diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html index a60e10edc..6b3141bfe 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -300,6 +300,7 @@
    Data Gathering From 0fee18908f37792e38080b3b0686f81802f635aa Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sat, 28 Feb 2026 10:49:41 +0100 Subject: [PATCH 67/74] Release 2.244.0 (#6409) --- CHANGELOG.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 08e1b0f1c..90026ee7d 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.244.0 - 2026-02-28 ### Changed diff --git a/package-lock.json b/package-lock.json index fadeca52d..dbe97b386 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ghostfolio", - "version": "2.243.0", + "version": "2.244.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ghostfolio", - "version": "2.243.0", + "version": "2.244.0", "hasInstallScript": true, "license": "AGPL-3.0", "dependencies": { diff --git a/package.json b/package.json index ad615c3a0..d1d0df2bb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.243.0", + "version": "2.244.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From da13d62703113eb00897b12ef1fe54a8f8202e67 Mon Sep 17 00:00:00 2001 From: Erwin-N <111194281+Erwin-N@users.noreply.github.com> Date: Sun, 1 Mar 2026 09:44:46 +0100 Subject: [PATCH 68/74] Task/improve language localization for NL (#6414) * Improve language localization for NL * Update changelog --- CHANGELOG.md | 6 ++ apps/client/src/locales/messages.nl.xlf | 136 ++++++++++++------------ 2 files changed, 74 insertions(+), 68 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 90026ee7d..ac47df943 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 Dutch (`nl`) + ## 2.244.0 - 2026-02-28 ### Changed diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 58928387b..158ff4fb1 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -39,7 +39,7 @@ please - please + alsjeblieft apps/client/src/app/pages/pricing/pricing-page.html 333 @@ -83,7 +83,7 @@ with - with + met apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 87 @@ -371,7 +371,7 @@ and is driven by the efforts of its contributors - and is driven by the efforts of its contributors + en wordt gedreven door de inspanningen van zijn bijdragers apps/client/src/app/pages/about/overview/about-overview-page.html 49 @@ -655,7 +655,7 @@ No auto-renewal on membership. - No auto-renewal on membership. + Het lidmaatschap wordt niet automatisch verlengd. apps/client/src/app/components/user-account-membership/user-account-membership.html 74 @@ -1099,7 +1099,7 @@ Performance with currency effect - Performance with currency effect + Prestaties met valuta-effect apps/client/src/app/pages/portfolio/analysis/analysis-page.html 135 @@ -1915,7 +1915,7 @@ Current week - Current week + Huidige week apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 191 @@ -2079,7 +2079,7 @@ or start a discussion at - or start a discussion at + of start een discussie op apps/client/src/app/pages/about/overview/about-overview-page.html 94 @@ -2151,7 +2151,7 @@ Sustainable retirement income - Sustainable retirement income + Duurzaam pensioeninkomen apps/client/src/app/pages/portfolio/fire/fire-page.html 41 @@ -2323,7 +2323,7 @@ contact us - contact us + contacteer ons apps/client/src/app/pages/pricing/pricing-page.html 336 @@ -2399,7 +2399,7 @@ Exclude from Analysis - Exclude from Analysis + Uitsluiten van analyse apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html 90 @@ -2423,7 +2423,7 @@ Latest activities - Latest activities + Laatste activiteiten apps/client/src/app/pages/public/public-page.html 210 @@ -2539,7 +2539,7 @@ annual interest rate - annual interest rate + jaarlijkse rente apps/client/src/app/pages/portfolio/fire/fire-page.html 185 @@ -2659,7 +2659,7 @@ Could not validate form - Could not validate form + Het formulier kon niet worden gevalideerd. apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 554 @@ -2895,7 +2895,7 @@ Authentication - Authentication + Authenticatie apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html 54 @@ -3047,7 +3047,7 @@ If you retire today, you would be able to withdraw - If you retire today, you would be able to withdraw + Als u vandaag met pensioen gaat, kunt u apps/client/src/app/pages/portfolio/fire/fire-page.html 68 @@ -3115,7 +3115,7 @@ Looking for a student discount? - Looking for a student discount? + Op zoek naar studentenkorting? apps/client/src/app/pages/pricing/pricing-page.html 342 @@ -3343,7 +3343,7 @@ No Activities - No Activities + Geen activiteiten apps/client/src/app/components/admin-market-data/admin-market-data.component.ts 146 @@ -3359,7 +3359,7 @@ Everything in Basic, plus - Everything in Basic, plus + Alles van Basic, plus apps/client/src/app/pages/pricing/pricing-page.html 199 @@ -3619,7 +3619,7 @@ Could not save asset profile - Could not save asset profile + Kon het assetprofiel niet opslaan apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 588 @@ -3823,7 +3823,7 @@ By - By + Door apps/client/src/app/pages/portfolio/fire/fire-page.html 139 @@ -3839,7 +3839,7 @@ Current year - Current year + Huidig jaar apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 199 @@ -3875,7 +3875,7 @@ Asset profile has been saved - Asset profile has been saved + Het activaprofiel is opgeslagen. apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 578 @@ -4067,7 +4067,7 @@ View Details - View Details + Bekijk details apps/client/src/app/components/admin-users/admin-users.html 225 @@ -4203,7 +4203,7 @@ per week - per week + per week apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 130 @@ -4227,7 +4227,7 @@ and we share aggregated key metrics of the platform’s performance - and we share aggregated key metrics of the platform’s performance + en we delen geaggregeerde belangrijke prestatiegegevens van het platform apps/client/src/app/pages/about/overview/about-overview-page.html 32 @@ -4271,7 +4271,7 @@ Website of Thomas Kaul - Website of Thomas Kaul + Website van Thomas Kaul apps/client/src/app/pages/about/overview/about-overview-page.html 44 @@ -4451,7 +4451,7 @@ Sign in with OpenID Connect - Sign in with OpenID Connect + Meld je aan met OpenID Connect apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html 55 @@ -4543,7 +4543,7 @@ The source code is fully available as open source software (OSS) under the AGPL-3.0 license - The source code is fully available as open source software (OSS) under the AGPL-3.0 license + De broncode is volledig beschikbaar als open source software (OSS) onder de AGPL-3.0-licentie apps/client/src/app/pages/about/overview/about-overview-page.html 16 @@ -4615,7 +4615,7 @@ this is projected to increase to - this is projected to increase to + zal dit naar verwachting stijgen tot apps/client/src/app/pages/portfolio/fire/fire-page.html 147 @@ -4667,7 +4667,7 @@ Job ID - Job ID + Opdracht ID apps/client/src/app/components/admin-jobs/admin-jobs.html 34 @@ -4751,7 +4751,7 @@ for - for + voor apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 128 @@ -4775,7 +4775,7 @@ Could not parse scraper configuration - Could not parse scraper configuration + De scraperconfiguratie kon niet worden geparseerd apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 509 @@ -4819,7 +4819,7 @@ Edit access - Edit access + Toegang bewerken apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html 11 @@ -4891,7 +4891,7 @@ Get access to 80’000+ tickers from over 50 exchanges - Get access to 80’000+ tickers from over 50 exchanges + Krijg toegang tot meer dan 80.000+ tickers van meer dan 50 beurzen apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 84 @@ -5075,7 +5075,7 @@ less than - less than + minder dan apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html 129 @@ -5365,7 +5365,7 @@ Ghostfolio Status - Ghostfolio Status + Ghostfolio Status apps/client/src/app/pages/about/overview/about-overview-page.html 62 @@ -5373,7 +5373,7 @@ with your university e-mail address - with your university e-mail address + met uw universitaire e-mailadres apps/client/src/app/pages/pricing/pricing-page.html 348 @@ -5393,7 +5393,7 @@ and a safe withdrawal rate (SWR) of - and a safe withdrawal rate (SWR) of + en een veilige opnameratio (SWR) van apps/client/src/app/pages/portfolio/fire/fire-page.html 108 @@ -5557,7 +5557,7 @@ Request it - Request it + Aanvragen apps/client/src/app/pages/pricing/pricing-page.html 344 @@ -5613,7 +5613,7 @@ , - , + , apps/client/src/app/pages/portfolio/fire/fire-page.html 145 @@ -5629,7 +5629,7 @@ per month - per month + per maand apps/client/src/app/pages/portfolio/fire/fire-page.html 94 @@ -5821,7 +5821,7 @@ Argentina - Argentina + Argentinië libs/ui/src/lib/i18n.ts 78 @@ -5877,7 +5877,7 @@ here - here + hier apps/client/src/app/pages/pricing/pricing-page.html 347 @@ -5885,7 +5885,7 @@ Close Holding - Close Holding + Sluit Holding apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html 441 @@ -6266,7 +6266,7 @@ Include in - Include in + Opnemen in apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html 374 @@ -6550,7 +6550,7 @@ View Holding - View Holding + Bekijk Holding libs/ui/src/lib/activities-table/activities-table.component.html 450 @@ -6694,7 +6694,7 @@ Oops! Could not update access. - Oops! Could not update access. + Oops! Kan de toegang niet updaten. apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts 178 @@ -6702,7 +6702,7 @@ , based on your total assets of - , based on your total assets of + opnemen, dit is gebaseerd op uw totale vermogen van apps/client/src/app/pages/portfolio/fire/fire-page.html 96 @@ -6822,7 +6822,7 @@ Role - Role + Rol apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html 33 @@ -6862,7 +6862,7 @@ If you plan to open an account at - If you plan to open an account at + Als u van plan bent een rekening te openen bij apps/client/src/app/pages/pricing/pricing-page.html 312 @@ -6894,7 +6894,7 @@ send an e-mail to - send an e-mail to + stuur een e-mail naar apps/client/src/app/pages/about/overview/about-overview-page.html 87 @@ -6966,7 +6966,7 @@ , assuming a - , assuming a + , uitgaande van apps/client/src/app/pages/portfolio/fire/fire-page.html 174 @@ -7054,7 +7054,7 @@ Ghostfolio is a lightweight wealth management application for individuals to keep track of stocks, ETFs or cryptocurrencies and make solid, data-driven investment decisions. - Ghostfolio is a lightweight wealth management application for individuals to keep track of stocks, ETFs or cryptocurrencies and make solid, data-driven investment decisions. + Ghostfolio is een gebruiksvriendelijke applicatie voor vermogensbeheer waarmee particulieren hun aandelen, ETF's of cryptovaluta kunnen volgen en weloverwogen, datagestuurde beleggingsbeslissingen kunnen nemen. apps/client/src/app/pages/about/overview/about-overview-page.html 10 @@ -7384,7 +7384,7 @@ Change with currency effect - Change with currency effect + Verandering met valuta-effect apps/client/src/app/pages/portfolio/analysis/analysis-page.html 116 @@ -7524,7 +7524,7 @@ The project has been initiated by - The project has been initiated by + Het project is geïnitieerd door apps/client/src/app/pages/about/overview/about-overview-page.html 40 @@ -7548,7 +7548,7 @@ Total amount - Total amount + Totaal bedrag apps/client/src/app/pages/portfolio/analysis/analysis-page.html 95 @@ -7640,7 +7640,7 @@ Find account, holding or page... - Find account, holding or page... + Vindt een account, holding of pagina... libs/ui/src/lib/assistant/assistant.component.ts 115 @@ -7890,7 +7890,7 @@ Fee Ratio - Fee Ratio + Vergoedingsverhouding apps/client/src/app/pages/i18n/i18n-page.html 152 @@ -7898,7 +7898,7 @@ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) - The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) + De kosten overschrijden ${thresholdMax}% van uw totale investeringsvolume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 154 @@ -7906,7 +7906,7 @@ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) - The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%) + De kosten bedragen maximaal ${thresholdMax}% van uw totale investeringsvolume (${feeRatio}%) apps/client/src/app/pages/i18n/i18n-page.html 158 @@ -8064,7 +8064,7 @@ Current month - Current month + Huidige maand apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts 195 @@ -8249,7 +8249,7 @@ If you encounter a bug, would like to suggest an improvement or a new feature, please join the Ghostfolio Slack community, post to @ghostfolio_ - If you encounter a bug, would like to suggest an improvement or a new feature, please join the Ghostfolio Slack community, post to @ghostfolio_ + Als je een bug tegenkomt, een verbetering wilt voorstellen of een nieuwe functie wilt toevoegen, word dan lid van de Ghostfolio Slack-community. Stuur een bericht naar @ghostfolio_ apps/client/src/app/pages/about/overview/about-overview-page.html 69 @@ -8373,7 +8373,7 @@ Liquidity - Liquidity + Liquiditeit apps/client/src/app/pages/i18n/i18n-page.html 70 @@ -8381,7 +8381,7 @@ Buying Power - Buying Power + Koopkracht apps/client/src/app/pages/i18n/i18n-page.html 71 @@ -8389,7 +8389,7 @@ Your buying power is below ${thresholdMin} ${baseCurrency} - Your buying power is below ${thresholdMin} ${baseCurrency} + Uw koopkracht ligt onder ${thresholdMin} ${baseCurrency} apps/client/src/app/pages/i18n/i18n-page.html 73 @@ -8397,7 +8397,7 @@ Your buying power is 0 ${baseCurrency} - Your buying power is 0 ${baseCurrency} + Uw koopkracht is 0 ${baseCurrency} apps/client/src/app/pages/i18n/i18n-page.html 77 @@ -8405,7 +8405,7 @@ Your buying power exceeds ${thresholdMin} ${baseCurrency} - Your buying power exceeds ${thresholdMin} ${baseCurrency} + Uw koopkracht overschrijdt ${thresholdMin} ${baseCurrency} apps/client/src/app/pages/i18n/i18n-page.html 80 @@ -8709,7 +8709,7 @@ Registration Date - Registration Date + Registratiedatum apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html 45 From 8b714d18ab37e340a454a3b5d1c648bd319dbf8b Mon Sep 17 00:00:00 2001 From: Davide Riccobelli <49486400+riccobelli@users.noreply.github.com> Date: Sun, 1 Mar 2026 09:58:50 +0100 Subject: [PATCH 69/74] Task/improve language localization for IT (#6416) * Improve language localization for IT * Update changelog --- CHANGELOG.md | 1 + apps/client/src/locales/messages.it.xlf | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ac47df943..667b25e5d 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 language localization for Dutch (`nl`) +- Improved the language localization for Italian (`it`) ## 2.244.0 - 2026-02-28 diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 05bb6afb2..20bfd1b33 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -3244,7 +3244,7 @@ Summary - Summario + Riepilogo apps/client/src/app/components/home-summary/home-summary.html 2 From 08c04e69cf74e499fd766c1356a6485a1d9b61d6 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 1 Mar 2026 10:01:59 +0100 Subject: [PATCH 70/74] Task/exclude scraper configuration and symbol mapping from import and export functionality (#6415) * Exclude scraper configuration and symbol mapping from import and export * Update changelog --- CHANGELOG.md | 2 ++ apps/api/src/app/export/export.service.ts | 5 ----- .../src/app/services/import-activities.service.ts | 2 -- libs/common/src/lib/dtos/create-asset-profile.dto.ts | 11 ----------- .../interfaces/responses/export-response.interface.ts | 7 ++++++- test/import/ok/penthouse-apartment.json | 2 -- test/import/ok/sample.json | 4 ---- 7 files changed, 8 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 667b25e5d..65d27e77a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Excluded the scraper configuration from the import and export functionality +- Excluded the symbol mapping from the import and export functionality - Improved the language localization for Dutch (`nl`) - Improved the language localization for Italian (`it`) diff --git a/apps/api/src/app/export/export.service.ts b/apps/api/src/app/export/export.service.ts index d07b199be..55f8d7dc9 100644 --- a/apps/api/src/app/export/export.service.ts +++ b/apps/api/src/app/export/export.service.ts @@ -182,10 +182,8 @@ export class ExportService { isActive, isin, name, - scraperConfiguration, sectors, symbol, - symbolMapping, url }) => { return { @@ -204,11 +202,8 @@ export class ExportService { isin, marketData: marketDataByAssetProfile[id], name, - scraperConfiguration: - scraperConfiguration as unknown as Prisma.JsonArray, sectors: sectors as unknown as Prisma.JsonArray, symbol, - symbolMapping, url }; } diff --git a/apps/client/src/app/services/import-activities.service.ts b/apps/client/src/app/services/import-activities.service.ts index 94d8470f7..55b5c44d5 100644 --- a/apps/client/src/app/services/import-activities.service.ts +++ b/apps/client/src/app/services/import-activities.service.ts @@ -97,9 +97,7 @@ export class ImportActivitiesService { isin: null, marketData: [], name: symbol, - scraperConfiguration: null, sectors: [], - symbolMapping: {}, url: null }); } diff --git a/libs/common/src/lib/dtos/create-asset-profile.dto.ts b/libs/common/src/lib/dtos/create-asset-profile.dto.ts index 80d45ba42..85ad73cc0 100644 --- a/libs/common/src/lib/dtos/create-asset-profile.dto.ts +++ b/libs/common/src/lib/dtos/create-asset-profile.dto.ts @@ -5,7 +5,6 @@ import { IsArray, IsBoolean, IsEnum, - IsObject, IsOptional, IsString, IsUrl @@ -66,10 +65,6 @@ export class CreateAssetProfileDto { @IsString() name?: string; - @IsObject() - @IsOptional() - scraperConfiguration?: Prisma.InputJsonObject; - @IsArray() @IsOptional() sectors?: Prisma.InputJsonArray; @@ -77,12 +72,6 @@ export class CreateAssetProfileDto { @IsString() symbol: string; - @IsObject() - @IsOptional() - symbolMapping?: { - [dataProvider: string]: string; - }; - @IsOptional() @IsUrl({ protocols: ['https'], diff --git a/libs/common/src/lib/interfaces/responses/export-response.interface.ts b/libs/common/src/lib/interfaces/responses/export-response.interface.ts index 8b1697ca4..fa592faf2 100644 --- a/libs/common/src/lib/interfaces/responses/export-response.interface.ts +++ b/libs/common/src/lib/interfaces/responses/export-response.interface.ts @@ -27,7 +27,12 @@ export interface ExportResponse { > & { dataSource: DataSource; date: string; symbol: string })[]; assetProfiles: (Omit< SymbolProfile, - 'createdAt' | 'id' | 'updatedAt' | 'userId' + | 'createdAt' + | 'id' + | 'scraperConfiguration' + | 'symbolMapping' + | 'updatedAt' + | 'userId' > & { marketData: MarketData[]; })[]; diff --git a/test/import/ok/penthouse-apartment.json b/test/import/ok/penthouse-apartment.json index 0c35521e6..3b5e5420b 100644 --- a/test/import/ok/penthouse-apartment.json +++ b/test/import/ok/penthouse-apartment.json @@ -21,10 +21,8 @@ "isin": null, "marketData": [], "name": "Penthouse Apartment", - "scraperConfiguration": null, "sectors": [], "symbol": "7e91b7d4-1430-4212-8380-289a06c9bbc1", - "symbolMapping": {}, "url": null } ], diff --git a/test/import/ok/sample.json b/test/import/ok/sample.json index bc2798718..be385812a 100644 --- a/test/import/ok/sample.json +++ b/test/import/ok/sample.json @@ -41,10 +41,8 @@ "isin": null, "marketData": [], "name": "Account Opening Fee", - "scraperConfiguration": null, "sectors": [], "symbol": "14a69cb9-1e31-43fa-b320-83703d8ed74b", - "symbolMapping": {}, "url": null }, { @@ -63,10 +61,8 @@ "isin": null, "marketData": [], "name": "Penthouse Apartment", - "scraperConfiguration": null, "sectors": [], "symbol": "7e91b7d4-1430-4212-8380-289a06c9bbc1", - "symbolMapping": {}, "url": null } ], From b5eb7d988462578426b0712b0e763f806b30d0f0 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 1 Mar 2026 10:02:36 +0100 Subject: [PATCH 71/74] Bugfix/resolve data source transformation in export and performance endpoint (#6411) * Resolve data source transformation in errors of performance endpoint and export functionality * Update changelog --- CHANGELOG.md | 5 +++++ .../transform-data-source-in-response.interceptor.ts | 2 ++ 2 files changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 65d27e77a..684d41096 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the language localization for Dutch (`nl`) - Improved the language localization for Italian (`it`) +### Fixed + +- Resolved the data source transformation in the errors of the performance endpoint +- Resolved the data source transformation in the export functionality + ## 2.244.0 - 2026-02-28 ### Changed diff --git a/apps/api/src/interceptors/transform-data-source-in-response/transform-data-source-in-response.interceptor.ts b/apps/api/src/interceptors/transform-data-source-in-response/transform-data-source-in-response.interceptor.ts index eaa6dd08c..3cccd6efa 100644 --- a/apps/api/src/interceptors/transform-data-source-in-response/transform-data-source-in-response.interceptor.ts +++ b/apps/api/src/interceptors/transform-data-source-in-response/transform-data-source-in-response.interceptor.ts @@ -62,8 +62,10 @@ export class TransformDataSourceInResponseInterceptor< valueMap, object: data, paths: [ + 'activities[*].dataSource', 'activities[*].SymbolProfile.dataSource', 'benchmarks[*].dataSource', + 'errors[*].dataSource', 'fearAndGreedIndex.CRYPTOCURRENCIES.dataSource', 'fearAndGreedIndex.STOCKS.dataSource', 'holdings[*].dataSource', From 5bcdaa396fd6964348c7f9992265ad1fd261de1e Mon Sep 17 00:00:00 2001 From: Ariel Pons <78991076+arielpons@users.noreply.github.com> Date: Sun, 1 Mar 2026 06:05:45 -0300 Subject: [PATCH 72/74] Task/improve language localization for ES (#6417) * Improve language localization for ES * Update changelog --- CHANGELOG.md | 1 + apps/client/src/locales/messages.es.xlf | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 684d41096..5c1cbfa79 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 - Excluded the symbol mapping from the import and export functionality - Improved the language localization for Dutch (`nl`) - Improved the language localization for Italian (`it`) +- Improved the language localization for Spanish (`es`) ### Fixed diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 74e0810c1..ba5a38d67 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -3344,7 +3344,7 @@ No Activities - No Activities + Sin actividades apps/client/src/app/components/admin-market-data/admin-market-data.component.ts 146 From 83347ba5dd307326e7664ed005751b95186c7370 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 1 Mar 2026 10:07:50 +0100 Subject: [PATCH 73/74] Release 2.245.0 (#6418) --- CHANGELOG.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5c1cbfa79..e34823b31 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.245.0 - 2026-03-01 ### Changed diff --git a/package-lock.json b/package-lock.json index dbe97b386..f7371da13 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ghostfolio", - "version": "2.244.0", + "version": "2.245.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ghostfolio", - "version": "2.244.0", + "version": "2.245.0", "hasInstallScript": true, "license": "AGPL-3.0", "dependencies": { diff --git a/package.json b/package.json index d1d0df2bb..794a09ea7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.244.0", + "version": "2.245.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From ddd36a1c7d7af0aa1027f6dcc10f1c07eb327843 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 1 Mar 2026 12:35:29 +0100 Subject: [PATCH 74/74] Task/eliminate OnDestroy lifecycle hook from about overview page (#6419) * Eliminate OnDestroy lifecycle hook --- .../overview/about-overview-page.component.ts | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/apps/client/src/app/pages/about/overview/about-overview-page.component.ts b/apps/client/src/app/pages/about/overview/about-overview-page.component.ts index bea19a1b9..9c399762b 100644 --- a/apps/client/src/app/pages/about/overview/about-overview-page.component.ts +++ b/apps/client/src/app/pages/about/overview/about-overview-page.component.ts @@ -9,9 +9,10 @@ import { ChangeDetectorRef, Component, CUSTOM_ELEMENTS_SCHEMA, - OnDestroy, + DestroyRef, OnInit } from '@angular/core'; +import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { MatButtonModule } from '@angular/material/button'; import { RouterModule } from '@angular/router'; import { IonIcon } from '@ionic/angular/standalone'; @@ -23,8 +24,6 @@ import { logoX, mail } from 'ionicons/icons'; -import { Subject } from 'rxjs'; -import { takeUntil } from 'rxjs/operators'; @Component({ imports: [CommonModule, IonIcon, MatButtonModule, RouterModule], @@ -33,7 +32,7 @@ import { takeUntil } from 'rxjs/operators'; styleUrls: ['./about-overview-page.scss'], templateUrl: './about-overview-page.html' }) -export class GfAboutOverviewPageComponent implements OnDestroy, OnInit { +export class GfAboutOverviewPageComponent implements OnInit { public hasPermissionForStatistics: boolean; public hasPermissionForSubscription: boolean; public isLoggedIn: boolean; @@ -43,11 +42,10 @@ export class GfAboutOverviewPageComponent implements OnDestroy, OnInit { public routerLinkOpenStartup = publicRoutes.openStartup.routerLink; public user: User; - private unsubscribeSubject = new Subject(); - public constructor( private changeDetectorRef: ChangeDetectorRef, private dataService: DataService, + private destroyRef: DestroyRef, private userService: UserService ) { const { globalPermissions } = this.dataService.fetchInfo(); @@ -67,7 +65,7 @@ export class GfAboutOverviewPageComponent implements OnDestroy, OnInit { public ngOnInit() { this.userService.stateChanged - .pipe(takeUntil(this.unsubscribeSubject)) + .pipe(takeUntilDestroyed(this.destroyRef)) .subscribe((state) => { if (state?.user) { this.user = state.user; @@ -76,9 +74,4 @@ export class GfAboutOverviewPageComponent implements OnDestroy, OnInit { } }); } - - public ngOnDestroy() { - this.unsubscribeSubject.next(); - this.unsubscribeSubject.complete(); - } }