From 69d85d4ed43711163f6a0b3d22e72ee17c9d8760 Mon Sep 17 00:00:00 2001 From: Stefano Greco Date: Mon, 7 Jul 2025 20:14:49 +0600 Subject: [PATCH 01/16] Feature/improve language localization for ES (#5118) * Improve language localization for ES --- apps/client/src/locales/messages.es.xlf | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index c3b6a856e..6362c226f 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -6431,7 +6431,7 @@ Wealth - Wealth + Riqueza apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts 96 @@ -6439,7 +6439,7 @@ Wealth Management - Wealth Management + Gestión de patrimonios apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts 97 @@ -6447,7 +6447,7 @@ Australia - Australia + Australia libs/ui/src/lib/i18n.ts 74 @@ -6455,7 +6455,7 @@ Austria - Austria + Austria libs/ui/src/lib/i18n.ts 75 @@ -6463,7 +6463,7 @@ Belgium - Belgium + Bélgica libs/ui/src/lib/i18n.ts 76 @@ -6471,7 +6471,7 @@ Bulgaria - Bulgaria + Bulgaria libs/ui/src/lib/i18n.ts 78 @@ -6479,7 +6479,7 @@ Canada - Canada + Canadá libs/ui/src/lib/i18n.ts 79 @@ -6487,7 +6487,7 @@ Czech Republic - Czech Republic + República Checa libs/ui/src/lib/i18n.ts 80 @@ -6495,7 +6495,7 @@ Finland - Finland + Finlandia libs/ui/src/lib/i18n.ts 81 @@ -6503,7 +6503,7 @@ France - France + Francia libs/ui/src/lib/i18n.ts 82 @@ -6511,7 +6511,7 @@ Germany - Germany + Alemania libs/ui/src/lib/i18n.ts 83 @@ -6519,7 +6519,7 @@ India - India + India libs/ui/src/lib/i18n.ts 84 From a94781537dc85b44549af744bf0532810cb2df43 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 7 Jul 2025 20:04:36 +0200 Subject: [PATCH 02/16] Bugfix/fix allocations by asset class for unknown asset classes (#5120) * Fix allocations by asset class * Update changelog --- CHANGELOG.md | 4 ++ .../allocations/allocations-page.component.ts | 68 ++++++++++--------- .../allocations/allocations-page.html | 6 +- .../portfolio-proportion-chart.component.ts | 19 ++++-- 4 files changed, 59 insertions(+), 38 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a2817c07e..dc4079612 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the language localization for German (`de`) - Upgraded `ionicons` from version `7.4.0` to `8.0.10` +### Fixed + +- Fixed the allocations by asset class for unknown asset classes on the allocations page + ## 2.178.0 - 2025-07-05 ### Changed diff --git a/apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts b/apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts index 6c3e2c962..37eeae61f 100644 --- a/apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts +++ b/apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts @@ -27,7 +27,13 @@ import { MatCardModule } from '@angular/material/card'; import { MatDialog } from '@angular/material/dialog'; import { MatProgressBarModule } from '@angular/material/progress-bar'; import { ActivatedRoute, Router } from '@angular/router'; -import { Account, AssetClass, DataSource, Platform } from '@prisma/client'; +import { + Account, + AssetClass, + AssetSubClass, + DataSource, + Platform +} from '@prisma/client'; import { isNumber } from 'lodash'; import { DeviceDetectorService } from 'ngx-device-detector'; import { Subject } from 'rxjs'; @@ -63,6 +69,18 @@ export class GfAllocationsPageComponent implements OnDestroy, OnInit { }; public deviceType: string; public hasImpersonationId: boolean; + public holdings: { + [symbol: string]: Pick< + PortfolioPosition, + | 'assetClass' + | 'assetClassLabel' + | 'assetSubClass' + | 'assetSubClassLabel' + | 'currency' + | 'exchange' + | 'name' + > & { etfProvider: string; value: number }; + }; public isLoading = false; public markets: { [key in Market]: { id: Market; valueInPercentage: number }; @@ -81,18 +99,6 @@ export class GfAllocationsPageComponent implements OnDestroy, OnInit { }; }; public portfolioDetails: PortfolioDetails; - public positions: { - [symbol: string]: Pick< - PortfolioPosition, - | 'assetClass' - | 'assetClassLabel' - | 'assetSubClass' - | 'assetSubClassLabel' - | 'currency' - | 'exchange' - | 'name' - > & { etfProvider: string; value: number }; - }; public sectors: { [name: string]: { name: string; value: number }; }; @@ -237,6 +243,7 @@ export class GfAllocationsPageComponent implements OnDestroy, OnInit { value: 0 } }; + this.holdings = {}; this.marketsAdvanced = { [UNKNOWN_KEY]: { id: UNKNOWN_KEY, @@ -282,7 +289,6 @@ export class GfAllocationsPageComponent implements OnDestroy, OnInit { platforms: {}, summary: undefined }; - this.positions = {}; this.sectors = { [UNKNOWN_KEY]: { name: UNKNOWN_KEY, @@ -319,16 +325,6 @@ export class GfAllocationsPageComponent implements OnDestroy, OnInit { }; } - this.markets = this.portfolioDetails.markets; - - Object.values(this.portfolioDetails.marketsAdvanced).forEach( - ({ id, valueInBaseCurrency, valueInPercentage }) => { - this.marketsAdvanced[id].value = isNumber(valueInBaseCurrency) - ? valueInBaseCurrency - : valueInPercentage; - } - ); - for (const [symbol, position] of Object.entries( this.portfolioDetails.holdings )) { @@ -340,12 +336,12 @@ export class GfAllocationsPageComponent implements OnDestroy, OnInit { value = position.valueInBaseCurrency; } - this.positions[symbol] = { + this.holdings[symbol] = { value, - assetClass: position.assetClass, - assetClassLabel: position.assetClassLabel, - assetSubClass: position.assetSubClass, - assetSubClassLabel: position.assetSubClassLabel, + assetClass: position.assetClass || (UNKNOWN_KEY as AssetClass), + assetClassLabel: position.assetClassLabel || UNKNOWN_KEY, + assetSubClass: position.assetSubClass || (UNKNOWN_KEY as AssetSubClass), + assetSubClassLabel: position.assetSubClassLabel || UNKNOWN_KEY, currency: position.currency, etfProvider: this.extractEtfProvider({ assetSubClass: position.assetSubClass, @@ -462,8 +458,8 @@ export class GfAllocationsPageComponent implements OnDestroy, OnInit { } } - if (this.positions[symbol].assetSubClass === 'ETF') { - this.totalValueInEtf += this.positions[symbol].value; + if (this.holdings[symbol].assetSubClass === 'ETF') { + this.totalValueInEtf += this.holdings[symbol].value; } this.symbols[prettifySymbol(symbol)] = { @@ -476,6 +472,16 @@ export class GfAllocationsPageComponent implements OnDestroy, OnInit { }; } + this.markets = this.portfolioDetails.markets; + + Object.values(this.portfolioDetails.marketsAdvanced).forEach( + ({ id, valueInBaseCurrency, valueInPercentage }) => { + this.marketsAdvanced[id].value = isNumber(valueInBaseCurrency) + ? valueInBaseCurrency + : valueInPercentage; + } + ); + for (const [ id, { name, valueInBaseCurrency, valueInPercentage } diff --git a/apps/client/src/app/pages/portfolio/allocations/allocations-page.html b/apps/client/src/app/pages/portfolio/allocations/allocations-page.html index 1436f6ab4..7153e2e53 100644 --- a/apps/client/src/app/pages/portfolio/allocations/allocations-page.html +++ b/apps/client/src/app/pages/portfolio/allocations/allocations-page.html @@ -70,7 +70,7 @@ { - backgroundColorSubCategory.push( - Color(item.color).lighten(lightnessRatio).hex() - ); + if (item.name === UNKNOWN_KEY) { + backgroundColorSubCategory.push(item.color); + } else { + backgroundColorSubCategory.push( + Color(item.color).lighten(lightnessRatio).hex() + ); + } dataSubCategory.push(item.subCategory[subCategory].value.toNumber()); labelSubCategory.push(subCategory); @@ -344,8 +349,14 @@ export class GfPortfolioProportionChartComponent align: 'end', anchor: 'end', formatter: (value, context) => { + const symbol = context.chart.data.labels?.[ + context.dataIndex + ] as string; + return value > 0 - ? context.chart.data.labels?.[context.dataIndex] + ? isUUID(symbol) + ? (translate(this.data[symbol]?.name) ?? symbol) + : symbol : ''; }, offset: 8 From bec7b37df91cdabf5d228328fcb10e82208d53e6 Mon Sep 17 00:00:00 2001 From: Attila Cseh <77381875+csehatt741@users.noreply.github.com> Date: Mon, 7 Jul 2025 20:12:01 +0200 Subject: [PATCH 03/16] Feature/migrate accounts page components standalone (#5117) * Migrate accounts page components standalone * Update changelog --- CHANGELOG.md | 1 + apps/client/src/app/app-routing.module.ts | 4 +- .../accounts/accounts-page-routing.module.ts | 22 ----------- .../pages/accounts/accounts-page.component.ts | 26 ++++++++----- .../pages/accounts/accounts-page.module.ts | 30 --------------- .../pages/accounts/accounts-page.routes.ts | 15 ++++++++ ...eate-or-update-account-dialog.component.ts | 37 ++++++++++++++++--- .../create-or-update-account-dialog.module.ts | 32 ---------------- .../transfer-balance-dialog.component.ts | 30 ++++++++++++--- .../transfer-balance-dialog.module.ts | 27 -------------- 10 files changed, 89 insertions(+), 135 deletions(-) delete mode 100644 apps/client/src/app/pages/accounts/accounts-page-routing.module.ts delete mode 100644 apps/client/src/app/pages/accounts/accounts-page.module.ts create mode 100644 apps/client/src/app/pages/accounts/accounts-page.routes.ts delete mode 100644 apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.module.ts delete mode 100644 apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.module.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index dc4079612..3d126b4e2 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 in the users table of the admin control panel +- Refactored the accounts pages to standalone - Refactored the portfolio pages to standalone - Renamed `Settings` to `settings` in the `User` database schema - Improved the language localization for Catalan (`ca`) diff --git a/apps/client/src/app/app-routing.module.ts b/apps/client/src/app/app-routing.module.ts index d93920a6f..9b8b32c36 100644 --- a/apps/client/src/app/app-routing.module.ts +++ b/apps/client/src/app/app-routing.module.ts @@ -23,9 +23,7 @@ const routes: Routes = [ { path: internalRoutes.accounts.path, loadChildren: () => - import('./pages/accounts/accounts-page.module').then( - (m) => m.AccountsPageModule - ) + import('./pages/accounts/accounts-page.routes').then((m) => m.routes) }, { path: internalRoutes.adminControl.path, diff --git a/apps/client/src/app/pages/accounts/accounts-page-routing.module.ts b/apps/client/src/app/pages/accounts/accounts-page-routing.module.ts deleted file mode 100644 index 8d3da2c35..000000000 --- a/apps/client/src/app/pages/accounts/accounts-page-routing.module.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; -import { internalRoutes } from '@ghostfolio/common/routes/routes'; - -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; - -import { AccountsPageComponent } from './accounts-page.component'; - -const routes: Routes = [ - { - canActivate: [AuthGuard], - component: AccountsPageComponent, - path: '', - title: internalRoutes.accounts.title - } -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class AccountsPageRoutingModule {} diff --git a/apps/client/src/app/pages/accounts/accounts-page.component.ts b/apps/client/src/app/pages/accounts/accounts-page.component.ts index 8d1db08b5..7d139bd5d 100644 --- a/apps/client/src/app/pages/accounts/accounts-page.component.ts +++ b/apps/client/src/app/pages/accounts/accounts-page.component.ts @@ -2,7 +2,9 @@ import { CreateAccountDto } from '@ghostfolio/api/app/account/create-account.dto import { TransferBalanceDto } from '@ghostfolio/api/app/account/transfer-balance.dto'; import { UpdateAccountDto } from '@ghostfolio/api/app/account/update-account.dto'; import { AccountDetailDialog } from '@ghostfolio/client/components/account-detail-dialog/account-detail-dialog.component'; +import { GfAccountDetailDialogModule } from '@ghostfolio/client/components/account-detail-dialog/account-detail-dialog.module'; import { AccountDetailDialogParams } from '@ghostfolio/client/components/account-detail-dialog/interfaces/interfaces'; +import { GfAccountsTableModule } from '@ghostfolio/client/components/accounts-table/accounts-table.module'; import { NotificationService } from '@ghostfolio/client/core/notification/notification.service'; import { DataService } from '@ghostfolio/client/services/data.service'; import { ImpersonationStorageService } from '@ghostfolio/client/services/impersonation-storage.service'; @@ -11,8 +13,9 @@ import { User } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; import { MatDialog } from '@angular/material/dialog'; -import { ActivatedRoute, Router } from '@angular/router'; +import { ActivatedRoute, Router, RouterModule } from '@angular/router'; import { Account as AccountModel } from '@prisma/client'; import { addIcons } from 'ionicons'; import { addOutline } from 'ionicons/icons'; @@ -20,17 +23,22 @@ import { DeviceDetectorService } from 'ngx-device-detector'; import { EMPTY, Subject, Subscription } from 'rxjs'; import { catchError, takeUntil } from 'rxjs/operators'; -import { CreateOrUpdateAccountDialog } from './create-or-update-account-dialog/create-or-update-account-dialog.component'; -import { TransferBalanceDialog } from './transfer-balance/transfer-balance-dialog.component'; +import { GfCreateOrUpdateAccountDialogComponent } from './create-or-update-account-dialog/create-or-update-account-dialog.component'; +import { GfTransferBalanceDialogComponent } from './transfer-balance/transfer-balance-dialog.component'; @Component({ host: { class: 'has-fab page' }, + imports: [ + GfAccountDetailDialogModule, + GfAccountsTableModule, + MatButtonModule, + RouterModule + ], selector: 'gf-accounts-page', styleUrls: ['./accounts-page.scss'], - templateUrl: './accounts-page.html', - standalone: false + templateUrl: './accounts-page.html' }) -export class AccountsPageComponent implements OnDestroy, OnInit { +export class GfAccountsPageComponent implements OnDestroy, OnInit { public accounts: AccountModel[]; public deviceType: string; public hasImpersonationId: boolean; @@ -177,7 +185,7 @@ export class AccountsPageComponent implements OnDestroy, OnInit { name, platformId }: AccountModel) { - const dialogRef = this.dialog.open(CreateOrUpdateAccountDialog, { + const dialogRef = this.dialog.open(GfCreateOrUpdateAccountDialogComponent, { data: { account: { balance, @@ -251,7 +259,7 @@ export class AccountsPageComponent implements OnDestroy, OnInit { } private openCreateAccountDialog() { - const dialogRef = this.dialog.open(CreateOrUpdateAccountDialog, { + const dialogRef = this.dialog.open(GfCreateOrUpdateAccountDialogComponent, { data: { account: { balance: 0, @@ -293,7 +301,7 @@ export class AccountsPageComponent implements OnDestroy, OnInit { } private openTransferBalanceDialog() { - const dialogRef = this.dialog.open(TransferBalanceDialog, { + const dialogRef = this.dialog.open(GfTransferBalanceDialogComponent, { data: { accounts: this.accounts }, diff --git a/apps/client/src/app/pages/accounts/accounts-page.module.ts b/apps/client/src/app/pages/accounts/accounts-page.module.ts deleted file mode 100644 index 5315ddbf8..000000000 --- a/apps/client/src/app/pages/accounts/accounts-page.module.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { GfAccountDetailDialogModule } from '@ghostfolio/client/components/account-detail-dialog/account-detail-dialog.module'; -import { GfAccountsTableModule } from '@ghostfolio/client/components/accounts-table/accounts-table.module'; - -import { CommonModule } from '@angular/common'; -import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { MatButtonModule } from '@angular/material/button'; -import { RouterModule } from '@angular/router'; -import { IonIcon } from '@ionic/angular/standalone'; - -import { AccountsPageRoutingModule } from './accounts-page-routing.module'; -import { AccountsPageComponent } from './accounts-page.component'; -import { GfCreateOrUpdateAccountDialogModule } from './create-or-update-account-dialog/create-or-update-account-dialog.module'; -import { GfTransferBalanceDialogModule } from './transfer-balance/transfer-balance-dialog.module'; - -@NgModule({ - declarations: [AccountsPageComponent], - imports: [ - AccountsPageRoutingModule, - CommonModule, - GfAccountDetailDialogModule, - GfAccountsTableModule, - GfCreateOrUpdateAccountDialogModule, - GfTransferBalanceDialogModule, - IonIcon, - MatButtonModule, - RouterModule - ], - schemas: [CUSTOM_ELEMENTS_SCHEMA] -}) -export class AccountsPageModule {} diff --git a/apps/client/src/app/pages/accounts/accounts-page.routes.ts b/apps/client/src/app/pages/accounts/accounts-page.routes.ts new file mode 100644 index 000000000..e4edc39c1 --- /dev/null +++ b/apps/client/src/app/pages/accounts/accounts-page.routes.ts @@ -0,0 +1,15 @@ +import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; +import { internalRoutes } from '@ghostfolio/common/routes/routes'; + +import { Routes } from '@angular/router'; + +import { GfAccountsPageComponent } from './accounts-page.component'; + +export const routes: Routes = [ + { + canActivate: [AuthGuard], + component: GfAccountsPageComponent, + path: '', + title: internalRoutes.accounts.title + } +]; diff --git a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.component.ts b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.component.ts index 15f4c35ee..beb815e0c 100644 --- a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.component.ts +++ b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.component.ts @@ -2,7 +2,10 @@ import { CreateAccountDto } from '@ghostfolio/api/app/account/create-account.dto import { UpdateAccountDto } from '@ghostfolio/api/app/account/update-account.dto'; import { DataService } from '@ghostfolio/client/services/data.service'; import { validateObjectForForm } from '@ghostfolio/client/util/form.util'; +import { GfCurrencySelectorComponent } from '@ghostfolio/ui/currency-selector'; +import { GfEntityLogoComponent } from '@ghostfolio/ui/entity-logo'; +import { CommonModule, NgClass } from '@angular/common'; import { ChangeDetectionStrategy, Component, @@ -13,10 +16,20 @@ import { AbstractControl, FormBuilder, FormGroup, + ReactiveFormsModule, ValidatorFn, Validators } from '@angular/forms'; -import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { MatAutocompleteModule } from '@angular/material/autocomplete'; +import { MatButtonModule } from '@angular/material/button'; +import { MatCheckboxModule } from '@angular/material/checkbox'; +import { + MAT_DIALOG_DATA, + MatDialogModule, + MatDialogRef +} from '@angular/material/dialog'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; import { Platform } from '@prisma/client'; import { Observable, Subject } from 'rxjs'; import { map, startWith } from 'rxjs/operators'; @@ -24,14 +37,26 @@ import { map, startWith } from 'rxjs/operators'; import { CreateOrUpdateAccountDialogParams } from './interfaces/interfaces'; @Component({ + changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'h-100' }, + imports: [ + CommonModule, + GfCurrencySelectorComponent, + GfEntityLogoComponent, + MatAutocompleteModule, + MatButtonModule, + MatCheckboxModule, + MatDialogModule, + MatFormFieldModule, + MatInputModule, + NgClass, + ReactiveFormsModule + ], selector: 'gf-create-or-update-account-dialog', - changeDetection: ChangeDetectionStrategy.OnPush, styleUrls: ['./create-or-update-account-dialog.scss'], - templateUrl: 'create-or-update-account-dialog.html', - standalone: false + templateUrl: 'create-or-update-account-dialog.html' }) -export class CreateOrUpdateAccountDialog implements OnDestroy { +export class GfCreateOrUpdateAccountDialogComponent implements OnDestroy { public accountForm: FormGroup; public currencies: string[] = []; public filteredPlatforms: Observable; @@ -42,7 +67,7 @@ export class CreateOrUpdateAccountDialog implements OnDestroy { public constructor( @Inject(MAT_DIALOG_DATA) public data: CreateOrUpdateAccountDialogParams, private dataService: DataService, - public dialogRef: MatDialogRef, + public dialogRef: MatDialogRef, private formBuilder: FormBuilder ) {} diff --git a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.module.ts b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.module.ts deleted file mode 100644 index 8543d37f4..000000000 --- a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.module.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { GfCurrencySelectorComponent } from '@ghostfolio/ui/currency-selector'; -import { GfEntityLogoComponent } from '@ghostfolio/ui/entity-logo'; - -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; -import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { MatAutocompleteModule } from '@angular/material/autocomplete'; -import { MatButtonModule } from '@angular/material/button'; -import { MatCheckboxModule } from '@angular/material/checkbox'; -import { MatDialogModule } from '@angular/material/dialog'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatInputModule } from '@angular/material/input'; - -import { CreateOrUpdateAccountDialog } from './create-or-update-account-dialog.component'; - -@NgModule({ - declarations: [CreateOrUpdateAccountDialog], - imports: [ - CommonModule, - FormsModule, - GfCurrencySelectorComponent, - GfEntityLogoComponent, - MatAutocompleteModule, - MatButtonModule, - MatCheckboxModule, - MatDialogModule, - MatFormFieldModule, - MatInputModule, - ReactiveFormsModule - ] -}) -export class GfCreateOrUpdateAccountDialogModule {} diff --git a/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.component.ts b/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.component.ts index e74ad1193..368c7f2f0 100644 --- a/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.component.ts +++ b/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.component.ts @@ -1,4 +1,5 @@ import { TransferBalanceDto } from '@ghostfolio/api/app/account/transfer-balance.dto'; +import { GfEntityLogoComponent } from '@ghostfolio/ui/entity-logo'; import { ChangeDetectionStrategy, @@ -10,24 +11,41 @@ import { AbstractControl, FormBuilder, FormGroup, + ReactiveFormsModule, ValidationErrors, Validators } from '@angular/forms'; -import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; +import { MatButtonModule } from '@angular/material/button'; +import { + MAT_DIALOG_DATA, + MatDialogModule, + MatDialogRef +} from '@angular/material/dialog'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; +import { MatSelectModule } from '@angular/material/select'; import { Account } from '@prisma/client'; import { Subject } from 'rxjs'; import { TransferBalanceDialogParams } from './interfaces/interfaces'; @Component({ + changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'h-100' }, + imports: [ + GfEntityLogoComponent, + MatButtonModule, + MatDialogModule, + MatFormFieldModule, + MatInputModule, + MatSelectModule, + ReactiveFormsModule + ], selector: 'gf-transfer-balance-dialog', - changeDetection: ChangeDetectionStrategy.OnPush, styleUrls: ['./transfer-balance-dialog.scss'], - templateUrl: 'transfer-balance-dialog.html', - standalone: false + templateUrl: 'transfer-balance-dialog.html' }) -export class TransferBalanceDialog implements OnDestroy { +export class GfTransferBalanceDialogComponent implements OnDestroy { public accounts: Account[] = []; public currency: string; public transferBalanceForm: FormGroup; @@ -36,7 +54,7 @@ export class TransferBalanceDialog implements OnDestroy { public constructor( @Inject(MAT_DIALOG_DATA) public data: TransferBalanceDialogParams, - public dialogRef: MatDialogRef, + public dialogRef: MatDialogRef, private formBuilder: FormBuilder ) {} diff --git a/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.module.ts b/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.module.ts deleted file mode 100644 index 19bd98a7f..000000000 --- a/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.module.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { GfEntityLogoComponent } from '@ghostfolio/ui/entity-logo'; - -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; -import { ReactiveFormsModule } from '@angular/forms'; -import { MatButtonModule } from '@angular/material/button'; -import { MatDialogModule } from '@angular/material/dialog'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatInputModule } from '@angular/material/input'; -import { MatSelectModule } from '@angular/material/select'; - -import { TransferBalanceDialog } from './transfer-balance-dialog.component'; - -@NgModule({ - declarations: [TransferBalanceDialog], - imports: [ - CommonModule, - GfEntityLogoComponent, - MatButtonModule, - MatDialogModule, - MatFormFieldModule, - MatInputModule, - MatSelectModule, - ReactiveFormsModule - ] -}) -export class GfTransferBalanceDialogModule {} From f22e9b990d1d41d7a0ce3f5edeccf92bf7b0ee2b Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 7 Jul 2025 20:12:40 +0200 Subject: [PATCH 04/16] Feature/add Manage Asset Profile button to holding detail dialog (#5121) * Add Manage Asset Profile button * Update changelog --- CHANGELOG.md | 4 +++ apps/client/src/app/app.component.ts | 4 +++ .../holding-detail-dialog.component.ts | 9 +++-- .../holding-detail-dialog.html | 33 +++++++++++++++---- .../interfaces/interfaces.ts | 1 + 5 files changed, 43 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d126b4e2..cca96727b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Added + +- Added a _Manage Asset Profile_ button for administrators to the holding detail dialog + ### Changed - Improved the language localization in the users table of the admin control panel diff --git a/apps/client/src/app/app.component.ts b/apps/client/src/app/app.component.ts index 4751c3dc7..a370d8539 100644 --- a/apps/client/src/app/app.component.ts +++ b/apps/client/src/app/app.component.ts @@ -320,6 +320,10 @@ export class AppComponent implements OnDestroy, OnInit { colorScheme: this.user?.settings?.colorScheme, deviceType: this.deviceType, hasImpersonationId: this.hasImpersonationId, + hasPermissionToAccessAdminControl: hasPermission( + this.user?.permissions, + permissions.accessAdminControl + ), hasPermissionToCreateOrder: !this.hasImpersonationId && hasPermission(this.user?.permissions, permissions.createOrder) && diff --git a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts index bf489013a..105ddfe13 100644 --- a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts +++ b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts @@ -46,12 +46,13 @@ import { MatFormFieldModule } from '@angular/material/form-field'; import { SortDirection } from '@angular/material/sort'; import { MatTableDataSource } from '@angular/material/table'; import { MatTabsModule } from '@angular/material/tabs'; -import { Router } from '@angular/router'; +import { Router, RouterModule } from '@angular/router'; import { IonIcon } from '@ionic/angular/standalone'; import { Account, MarketData, Tag } from '@prisma/client'; import { format, isSameMonth, isToday, parseISO } from 'date-fns'; import { addIcons } from 'ionicons'; import { + createOutline, flagOutline, readerOutline, serverOutline, @@ -85,7 +86,8 @@ import { HoldingDetailDialogParams } from './interfaces/interfaces'; MatDialogModule, MatFormFieldModule, MatTabsModule, - NgxSkeletonLoaderModule + NgxSkeletonLoaderModule, + RouterModule ], schemas: [CUSTOM_ELEMENTS_SCHEMA], selector: 'gf-holding-detail-dialog', @@ -127,6 +129,8 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { public quantity: number; public quantityPrecision = 2; public reportDataGlitchMail: string; + public routerLinkAdminControlMarketData = + internalRoutes.adminControl.subRoutes.marketData.routerLink; public sectors: { [name: string]: { name: string; value: number }; }; @@ -152,6 +156,7 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit { private userService: UserService ) { addIcons({ + createOutline, flagOutline, readerOutline, serverOutline, diff --git a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html index d288a8953..4625de712 100644 --- a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html +++ b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html @@ -412,16 +412,37 @@ /> @if ( - dataSource?.data.length > 0 && - data.hasPermissionToReportDataGlitch === true + data.hasPermissionToAccessAdminControl || + (dataSource?.data.length > 0 && + data.hasPermissionToReportDataGlitch === true) ) {

- Report Data Glitch + @if (data.hasPermissionToAccessAdminControl) { + Manage Asset Profile... + } + @if ( + dataSource?.data.length > 0 && + data.hasPermissionToReportDataGlitch === true + ) { + Report Data Glitch... + }
} diff --git a/apps/client/src/app/components/holding-detail-dialog/interfaces/interfaces.ts b/apps/client/src/app/components/holding-detail-dialog/interfaces/interfaces.ts index cb98ab3a7..e7d9edefb 100644 --- a/apps/client/src/app/components/holding-detail-dialog/interfaces/interfaces.ts +++ b/apps/client/src/app/components/holding-detail-dialog/interfaces/interfaces.ts @@ -8,6 +8,7 @@ export interface HoldingDetailDialogParams { dataSource: DataSource; deviceType: string; hasImpersonationId: boolean; + hasPermissionToAccessAdminControl: boolean; hasPermissionToCreateOrder: boolean; hasPermissionToReportDataGlitch: boolean; hasPermissionToUpdateOrder: boolean; From f444237e509a7bf8da43899f10cc9a9c003699a0 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 7 Jul 2025 20:13:35 +0200 Subject: [PATCH 05/16] Feature/migrate user account page components to standalone (#5110) * Migrate user account page components to standalone * Update changelog --- CHANGELOG.md | 1 + apps/client/src/app/app-routing.module.ts | 4 +- .../user-account-access.component.ts | 34 ++++++++++++--- .../user-account-access.module.ts | 35 ---------------- .../user-account-membership.component.ts | 19 +++++++-- .../user-account-membership.module.ts | 26 ------------ .../user-account-settings.component.ts | 40 +++++++++++++++--- .../user-account-settings.module.ts | 36 ---------------- .../user-account-page-routing.module.ts | 42 ------------------- .../user-account-page.component.ts | 19 +++++++-- .../user-account/user-account-page.module.ts | 26 ------------ .../user-account/user-account-page.routes.ts | 35 ++++++++++++++++ 12 files changed, 132 insertions(+), 185 deletions(-) delete mode 100644 apps/client/src/app/components/user-account-access/user-account-access.module.ts delete mode 100644 apps/client/src/app/components/user-account-membership/user-account-membership.module.ts delete mode 100644 apps/client/src/app/components/user-account-settings/user-account-settings.module.ts delete mode 100644 apps/client/src/app/pages/user-account/user-account-page-routing.module.ts delete mode 100644 apps/client/src/app/pages/user-account/user-account-page.module.ts create mode 100644 apps/client/src/app/pages/user-account/user-account-page.routes.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index cca96727b..3f4b13899 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Improved the language localization in the users table of the admin control panel - Refactored the accounts pages to standalone - Refactored the portfolio pages to standalone +- Refactored the user account pages to standalone - Renamed `Settings` to `settings` in the `User` database schema - Improved the language localization for Catalan (`ca`) - Improved the language localization for Dutch (`nl`) diff --git a/apps/client/src/app/app-routing.module.ts b/apps/client/src/app/app-routing.module.ts index 9b8b32c36..4abd93b83 100644 --- a/apps/client/src/app/app-routing.module.ts +++ b/apps/client/src/app/app-routing.module.ts @@ -16,8 +16,8 @@ const routes: Routes = [ { path: internalRoutes.account.path, loadChildren: () => - import('./pages/user-account/user-account-page.module').then( - (m) => m.UserAccountPageModule + import('./pages/user-account/user-account-page.routes').then( + (m) => m.routes ) }, { diff --git a/apps/client/src/app/components/user-account-access/user-account-access.component.ts b/apps/client/src/app/components/user-account-access/user-account-access.component.ts index 11a3f57a4..960ad1310 100644 --- a/apps/client/src/app/components/user-account-access/user-account-access.component.ts +++ b/apps/client/src/app/components/user-account-access/user-account-access.component.ts @@ -1,4 +1,5 @@ import { CreateAccessDto } from '@ghostfolio/api/app/access/create-access.dto'; +import { GfPortfolioAccessTableModule } from '@ghostfolio/client/components/access-table/access-table.module'; import { ConfirmationDialogType } from '@ghostfolio/client/core/notification/confirmation-dialog/confirmation-dialog.type'; import { NotificationService } from '@ghostfolio/client/core/notification/notification.service'; import { DataService } from '@ghostfolio/client/services/data.service'; @@ -6,17 +7,24 @@ import { TokenStorageService } from '@ghostfolio/client/services/token-storage.s import { UserService } from '@ghostfolio/client/services/user/user.service'; import { Access, User } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; +import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator'; +import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, ChangeDetectorRef, Component, + CUSTOM_ELEMENTS_SCHEMA, OnDestroy, OnInit } from '@angular/core'; -import { FormBuilder, Validators } from '@angular/forms'; -import { MatDialog } from '@angular/material/dialog'; -import { ActivatedRoute, Router } from '@angular/router'; +import { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms'; +import { MatButtonModule } from '@angular/material/button'; +import { MatDialog, MatDialogModule } from '@angular/material/dialog'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; +import { ActivatedRoute, Router, RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; import { addIcons } from 'ionicons'; import { addOutline, eyeOffOutline, eyeOutline } from 'ionicons/icons'; import { DeviceDetectorService } from 'ngx-device-detector'; @@ -24,16 +32,30 @@ import { EMPTY, Subject } from 'rxjs'; import { catchError, takeUntil } from 'rxjs/operators'; import { CreateOrUpdateAccessDialog } from './create-or-update-access-dialog/create-or-update-access-dialog.component'; +import { GfCreateOrUpdateAccessDialogModule } from './create-or-update-access-dialog/create-or-update-access-dialog.module'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'has-fab' }, + imports: [ + CommonModule, + GfCreateOrUpdateAccessDialogModule, + GfPortfolioAccessTableModule, + GfPremiumIndicatorComponent, + IonIcon, + MatButtonModule, + MatDialogModule, + MatFormFieldModule, + MatInputModule, + ReactiveFormsModule, + RouterModule + ], + schemas: [CUSTOM_ELEMENTS_SCHEMA], selector: 'gf-user-account-access', styleUrls: ['./user-account-access.scss'], - templateUrl: './user-account-access.html', - standalone: false + templateUrl: './user-account-access.html' }) -export class UserAccountAccessComponent implements OnDestroy, OnInit { +export class GfUserAccountAccessComponent implements OnDestroy, OnInit { public accessesGet: Access[]; public accessesGive: Access[]; public deviceType: string; diff --git a/apps/client/src/app/components/user-account-access/user-account-access.module.ts b/apps/client/src/app/components/user-account-access/user-account-access.module.ts deleted file mode 100644 index d38a4665e..000000000 --- a/apps/client/src/app/components/user-account-access/user-account-access.module.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { GfPortfolioAccessTableModule } from '@ghostfolio/client/components/access-table/access-table.module'; -import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator'; - -import { CommonModule } from '@angular/common'; -import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { ReactiveFormsModule } from '@angular/forms'; -import { MatButtonModule } from '@angular/material/button'; -import { MatDialogModule } from '@angular/material/dialog'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatInputModule } from '@angular/material/input'; -import { RouterModule } from '@angular/router'; -import { IonIcon } from '@ionic/angular/standalone'; - -import { GfCreateOrUpdateAccessDialogModule } from './create-or-update-access-dialog/create-or-update-access-dialog.module'; -import { UserAccountAccessComponent } from './user-account-access.component'; - -@NgModule({ - declarations: [UserAccountAccessComponent], - exports: [UserAccountAccessComponent], - imports: [ - CommonModule, - GfCreateOrUpdateAccessDialogModule, - GfPortfolioAccessTableModule, - GfPremiumIndicatorComponent, - IonIcon, - MatButtonModule, - MatDialogModule, - MatFormFieldModule, - MatInputModule, - ReactiveFormsModule, - RouterModule - ], - schemas: [CUSTOM_ELEMENTS_SCHEMA] -}) -export class GfUserAccountAccessModule {} diff --git a/apps/client/src/app/components/user-account-membership/user-account-membership.component.ts b/apps/client/src/app/components/user-account-membership/user-account-membership.component.ts index 68c8b649f..f2f63b32b 100644 --- a/apps/client/src/app/components/user-account-membership/user-account-membership.component.ts +++ b/apps/client/src/app/components/user-account-membership/user-account-membership.component.ts @@ -6,14 +6,20 @@ import { getDateFormatString } from '@ghostfolio/common/helper'; import { User } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; import { publicRoutes } from '@ghostfolio/common/routes/routes'; +import { GfMembershipCardComponent } from '@ghostfolio/ui/membership-card'; +import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator'; +import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy } from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; +import { MatCardModule } from '@angular/material/card'; import { MatSnackBar } from '@angular/material/snack-bar'; +import { RouterModule } from '@angular/router'; import ms, { StringValue } from 'ms'; import { StripeService } from 'ngx-stripe'; import { EMPTY, Subject } from 'rxjs'; @@ -21,12 +27,19 @@ import { catchError, switchMap, takeUntil } from 'rxjs/operators'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, + imports: [ + CommonModule, + GfMembershipCardComponent, + GfPremiumIndicatorComponent, + MatButtonModule, + MatCardModule, + RouterModule + ], selector: 'gf-user-account-membership', styleUrls: ['./user-account-membership.scss'], - templateUrl: './user-account-membership.html', - standalone: false + templateUrl: './user-account-membership.html' }) -export class UserAccountMembershipComponent implements OnDestroy { +export class GfUserAccountMembershipComponent implements OnDestroy { public baseCurrency: string; public coupon: number; public couponId: string; diff --git a/apps/client/src/app/components/user-account-membership/user-account-membership.module.ts b/apps/client/src/app/components/user-account-membership/user-account-membership.module.ts deleted file mode 100644 index 90646c09e..000000000 --- a/apps/client/src/app/components/user-account-membership/user-account-membership.module.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { GfMembershipCardComponent } from '@ghostfolio/ui/membership-card'; -import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator'; -import { GfValueComponent } from '@ghostfolio/ui/value'; - -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; -import { MatButtonModule } from '@angular/material/button'; -import { MatCardModule } from '@angular/material/card'; -import { RouterModule } from '@angular/router'; - -import { UserAccountMembershipComponent } from './user-account-membership.component'; - -@NgModule({ - declarations: [UserAccountMembershipComponent], - exports: [UserAccountMembershipComponent], - imports: [ - CommonModule, - GfMembershipCardComponent, - GfPremiumIndicatorComponent, - GfValueComponent, - MatButtonModule, - MatCardModule, - RouterModule - ] -}) -export class GfUserAccountMembershipModule {} diff --git a/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts b/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts index d4683421d..4beebe510 100644 --- a/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts +++ b/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts @@ -13,16 +13,33 @@ import { downloadAsFile } from '@ghostfolio/common/helper'; import { User } from '@ghostfolio/common/interfaces'; import { hasPermission, permissions } from '@ghostfolio/common/permissions'; +import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, ChangeDetectorRef, Component, + CUSTOM_ELEMENTS_SCHEMA, OnDestroy, OnInit } from '@angular/core'; -import { FormBuilder, Validators } from '@angular/forms'; -import { MatSlideToggleChange } from '@angular/material/slide-toggle'; +import { + FormBuilder, + FormsModule, + ReactiveFormsModule, + Validators +} from '@angular/forms'; +import { MatButtonModule } from '@angular/material/button'; +import { MatCardModule } from '@angular/material/card'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; +import { MatSelectModule } from '@angular/material/select'; +import { + MatSlideToggleChange, + MatSlideToggleModule +} from '@angular/material/slide-toggle'; import { MatSnackBar } from '@angular/material/snack-bar'; +import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; import { format, parseISO } from 'date-fns'; import { addIcons } from 'ionicons'; import { eyeOffOutline, eyeOutline } from 'ionicons/icons'; @@ -32,12 +49,25 @@ import { catchError, takeUntil } from 'rxjs/operators'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, + imports: [ + CommonModule, + FormsModule, + IonIcon, + MatButtonModule, + MatCardModule, + MatFormFieldModule, + MatInputModule, + MatSelectModule, + MatSlideToggleModule, + ReactiveFormsModule, + RouterModule + ], + schemas: [CUSTOM_ELEMENTS_SCHEMA], selector: 'gf-user-account-settings', styleUrls: ['./user-account-settings.scss'], - templateUrl: './user-account-settings.html', - standalone: false + templateUrl: './user-account-settings.html' }) -export class UserAccountSettingsComponent implements OnDestroy, OnInit { +export class GfUserAccountSettingsComponent implements OnDestroy, OnInit { public appearancePlaceholder = $localize`Auto`; public baseCurrency: string; public currencies: string[] = []; diff --git a/apps/client/src/app/components/user-account-settings/user-account-settings.module.ts b/apps/client/src/app/components/user-account-settings/user-account-settings.module.ts deleted file mode 100644 index 3b82dff51..000000000 --- a/apps/client/src/app/components/user-account-settings/user-account-settings.module.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { GfValueComponent } from '@ghostfolio/ui/value'; - -import { CommonModule } from '@angular/common'; -import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { MatButtonModule } from '@angular/material/button'; -import { MatCardModule } from '@angular/material/card'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatInputModule } from '@angular/material/input'; -import { MatSelectModule } from '@angular/material/select'; -import { MatSlideToggleModule } from '@angular/material/slide-toggle'; -import { RouterModule } from '@angular/router'; -import { IonIcon } from '@ionic/angular/standalone'; - -import { UserAccountSettingsComponent } from './user-account-settings.component'; - -@NgModule({ - declarations: [UserAccountSettingsComponent], - exports: [UserAccountSettingsComponent], - imports: [ - CommonModule, - FormsModule, - GfValueComponent, - IonIcon, - MatButtonModule, - MatCardModule, - MatFormFieldModule, - MatInputModule, - MatSelectModule, - MatSlideToggleModule, - ReactiveFormsModule, - RouterModule - ], - schemas: [CUSTOM_ELEMENTS_SCHEMA] -}) -export class GfUserAccountSettingsModule {} diff --git a/apps/client/src/app/pages/user-account/user-account-page-routing.module.ts b/apps/client/src/app/pages/user-account/user-account-page-routing.module.ts deleted file mode 100644 index 598381cc2..000000000 --- a/apps/client/src/app/pages/user-account/user-account-page-routing.module.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { UserAccountAccessComponent } from '@ghostfolio/client/components/user-account-access/user-account-access.component'; -import { UserAccountMembershipComponent } from '@ghostfolio/client/components/user-account-membership/user-account-membership.component'; -import { UserAccountSettingsComponent } from '@ghostfolio/client/components/user-account-settings/user-account-settings.component'; -import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; -import { internalRoutes } from '@ghostfolio/common/routes/routes'; - -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; - -import { UserAccountPageComponent } from './user-account-page.component'; - -const routes: Routes = [ - { - canActivate: [AuthGuard], - children: [ - { - path: '', - component: UserAccountSettingsComponent, - title: internalRoutes.account.title - }, - { - path: internalRoutes.account.subRoutes.membership.path, - component: UserAccountMembershipComponent, - title: internalRoutes.account.subRoutes.membership.title - }, - { - path: internalRoutes.account.subRoutes.access.path, - component: UserAccountAccessComponent, - title: internalRoutes.account.subRoutes.access.title - } - ], - component: UserAccountPageComponent, - path: '', - title: $localize`My Ghostfolio` - } -]; - -@NgModule({ - imports: [RouterModule.forChild(routes)], - exports: [RouterModule] -}) -export class UserAccountPageRoutingModule {} diff --git a/apps/client/src/app/pages/user-account/user-account-page.component.ts b/apps/client/src/app/pages/user-account/user-account-page.component.ts index 5fc9efeae..4b76dbb9e 100644 --- a/apps/client/src/app/pages/user-account/user-account-page.component.ts +++ b/apps/client/src/app/pages/user-account/user-account-page.component.ts @@ -2,7 +2,17 @@ import { UserService } from '@ghostfolio/client/services/user/user.service'; import { TabConfiguration, User } from '@ghostfolio/common/interfaces'; import { internalRoutes } from '@ghostfolio/common/routes/routes'; -import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { + ChangeDetectorRef, + Component, + CUSTOM_ELEMENTS_SCHEMA, + OnDestroy, + OnInit +} from '@angular/core'; +import { MatTabsModule } from '@angular/material/tabs'; +import { RouterModule } from '@angular/router'; +import { IonIcon } from '@ionic/angular/standalone'; import { addIcons } from 'ionicons'; import { diamondOutline, keyOutline, settingsOutline } from 'ionicons/icons'; import { DeviceDetectorService } from 'ngx-device-detector'; @@ -10,12 +20,13 @@ import { Subject, takeUntil } from 'rxjs'; @Component({ host: { class: 'page has-tabs' }, + imports: [CommonModule, IonIcon, MatTabsModule, RouterModule], + schemas: [CUSTOM_ELEMENTS_SCHEMA], selector: 'gf-user-account-page', styleUrls: ['./user-account-page.scss'], - templateUrl: './user-account-page.html', - standalone: false + templateUrl: './user-account-page.html' }) -export class UserAccountPageComponent implements OnDestroy, OnInit { +export class GfUserAccountPageComponent implements OnDestroy, OnInit { public deviceType: string; public tabs: TabConfiguration[] = []; public user: User; diff --git a/apps/client/src/app/pages/user-account/user-account-page.module.ts b/apps/client/src/app/pages/user-account/user-account-page.module.ts deleted file mode 100644 index 553591bbe..000000000 --- a/apps/client/src/app/pages/user-account/user-account-page.module.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { GfUserAccountAccessModule } from '@ghostfolio/client/components/user-account-access/user-account-access.module'; -import { GfUserAccountMembershipModule } from '@ghostfolio/client/components/user-account-membership/user-account-membership.module'; -import { GfUserAccountSettingsModule } from '@ghostfolio/client/components/user-account-settings/user-account-settings.module'; - -import { CommonModule } from '@angular/common'; -import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { MatTabsModule } from '@angular/material/tabs'; -import { IonIcon } from '@ionic/angular/standalone'; - -import { UserAccountPageRoutingModule } from './user-account-page-routing.module'; -import { UserAccountPageComponent } from './user-account-page.component'; - -@NgModule({ - declarations: [UserAccountPageComponent], - imports: [ - CommonModule, - GfUserAccountAccessModule, - GfUserAccountMembershipModule, - GfUserAccountSettingsModule, - IonIcon, - MatTabsModule, - UserAccountPageRoutingModule - ], - schemas: [CUSTOM_ELEMENTS_SCHEMA] -}) -export class UserAccountPageModule {} diff --git a/apps/client/src/app/pages/user-account/user-account-page.routes.ts b/apps/client/src/app/pages/user-account/user-account-page.routes.ts new file mode 100644 index 000000000..5d0f5b202 --- /dev/null +++ b/apps/client/src/app/pages/user-account/user-account-page.routes.ts @@ -0,0 +1,35 @@ +import { GfUserAccountAccessComponent } from '@ghostfolio/client/components/user-account-access/user-account-access.component'; +import { GfUserAccountMembershipComponent } from '@ghostfolio/client/components/user-account-membership/user-account-membership.component'; +import { GfUserAccountSettingsComponent } from '@ghostfolio/client/components/user-account-settings/user-account-settings.component'; +import { AuthGuard } from '@ghostfolio/client/core/auth.guard'; +import { internalRoutes } from '@ghostfolio/common/routes/routes'; + +import { Routes } from '@angular/router'; + +import { GfUserAccountPageComponent } from './user-account-page.component'; + +export const routes: Routes = [ + { + canActivate: [AuthGuard], + children: [ + { + path: '', + component: GfUserAccountSettingsComponent, + title: internalRoutes.account.title + }, + { + path: internalRoutes.account.subRoutes.membership.path, + component: GfUserAccountMembershipComponent, + title: internalRoutes.account.subRoutes.membership.title + }, + { + path: internalRoutes.account.subRoutes.access.path, + component: GfUserAccountAccessComponent, + title: internalRoutes.account.subRoutes.access.title + } + ], + component: GfUserAccountPageComponent, + path: '', + title: $localize`My Ghostfolio` + } +]; From 56c88aa66d6e497be99a277192a95855c0581b9a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 7 Jul 2025 20:19:39 +0200 Subject: [PATCH 06/16] Feature/update locales (#5123) * Update locales * Update translation --------- Co-authored-by: github-actions[bot] Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> --- apps/client/src/locales/messages.ca.xlf | 58 ++++++++++++++----------- apps/client/src/locales/messages.de.xlf | 58 ++++++++++++++----------- apps/client/src/locales/messages.es.xlf | 58 ++++++++++++++----------- apps/client/src/locales/messages.fr.xlf | 58 ++++++++++++++----------- apps/client/src/locales/messages.it.xlf | 58 ++++++++++++++----------- apps/client/src/locales/messages.nl.xlf | 58 ++++++++++++++----------- apps/client/src/locales/messages.pl.xlf | 58 ++++++++++++++----------- apps/client/src/locales/messages.pt.xlf | 58 ++++++++++++++----------- apps/client/src/locales/messages.tr.xlf | 58 ++++++++++++++----------- apps/client/src/locales/messages.uk.xlf | 58 ++++++++++++++----------- apps/client/src/locales/messages.xlf | 57 +++++++++++++----------- apps/client/src/locales/messages.zh.xlf | 58 ++++++++++++++----------- 12 files changed, 395 insertions(+), 300 deletions(-) diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 5a6d2181e..2d44105fc 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -2203,11 +2203,11 @@
apps/client/src/app/components/user-account-access/user-account-access.component.ts - 133 + 155 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 163 + 193
@@ -2327,7 +2327,7 @@ Informar d’un Problema amb les Dades apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 423 + 443 @@ -3027,7 +3027,7 @@ Introduïu el vostre codi de cupó. apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 202 + 215 @@ -3035,7 +3035,7 @@ No s’ha pogut bescanviar el codi de cupó apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 166 + 179 @@ -3043,7 +3043,7 @@ El codi del cupó s’ha bescanviat apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 192 @@ -3051,7 +3051,7 @@ Torna a carregar apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 180 + 193 @@ -3087,7 +3087,7 @@ Automàtic apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 41 + 71 @@ -3095,7 +3095,7 @@ De debò vols tancar el teu compte de Ghostfolio? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 178 + 208 @@ -3103,7 +3103,7 @@ De debò vols eliminar aquest mètode d’inici de sessió? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 252 + 282 @@ -3111,7 +3111,7 @@ Ups! Hi ha hagut un error en configurar l’autenticació biomètrica. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 306 + 336 @@ -3339,7 +3339,7 @@ D’acord apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 141 + 154 apps/client/src/app/core/http-response.interceptor.ts @@ -3431,7 +3431,7 @@ Vaja, la transferència del saldo en efectiu ha fallat. apps/client/src/app/pages/accounts/accounts-page.component.ts - 322 + 330 @@ -5512,8 +5512,8 @@ My Ghostfolio El meu Ghostfolio - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 34 + apps/client/src/app/pages/user-account/user-account-page.routes.ts + 33 @@ -6009,7 +6009,7 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 400 + 411 @@ -6317,11 +6317,11 @@ No data available libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 402 + 413 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 415 + 426 @@ -7059,7 +7059,7 @@ Could not generate an API key apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 128 + 141 @@ -7067,7 +7067,7 @@ Set this API key in your self-hosted environment: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 143 + 156 @@ -7075,7 +7075,7 @@ Ghostfolio Premium Data Provider API Key apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 146 + 159 @@ -7083,7 +7083,7 @@ Do you really want to generate a new API key? apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 151 + 164 @@ -7147,7 +7147,7 @@ Me apps/client/src/app/components/user-account-access/user-account-access.component.ts - 191 + 213 @@ -7387,7 +7387,7 @@ apps/client/src/app/components/user-account-access/user-account-access.component.ts - 149 + 171 @@ -8008,7 +8008,7 @@ Do you really want to generate a new security token? apps/client/src/app/components/user-account-access/user-account-access.component.ts - 154 + 176 @@ -8047,6 +8047,14 @@ 56 + + Manage Asset Profile + Manage Asset Profile + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 434 + + diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index b24e89c97..150429eee 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -1046,11 +1046,11 @@ apps/client/src/app/components/user-account-access/user-account-access.component.ts - 133 + 155 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 163 + 193 @@ -1370,7 +1370,7 @@ Datenfehler melden apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 423 + 443 @@ -1474,7 +1474,7 @@ Okay apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 141 + 154 apps/client/src/app/core/http-response.interceptor.ts @@ -1641,8 +1641,8 @@ My Ghostfolio Mein Ghostfolio - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 34 + apps/client/src/app/pages/user-account/user-account-page.routes.ts + 33 @@ -1650,7 +1650,7 @@ Bitte gebe deinen Gutscheincode ein. apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 202 + 215 @@ -1658,7 +1658,7 @@ Gutscheincode konnte nicht eingelöst werden apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 166 + 179 @@ -1666,7 +1666,7 @@ Gutscheincode wurde eingelöst apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 192 @@ -1674,7 +1674,7 @@ Neu laden apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 180 + 193 @@ -1682,7 +1682,7 @@ Möchtest du diese Anmeldemethode wirklich löschen? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 252 + 282 @@ -2906,7 +2906,7 @@ Automatisch apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 41 + 71 @@ -3110,7 +3110,7 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 400 + 411 @@ -3118,11 +3118,11 @@ Keine Daten verfügbar libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 402 + 413 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 415 + 426 @@ -5716,7 +5716,7 @@ Ups, der Cash-Bestand Transfer ist fehlgeschlagen. apps/client/src/app/pages/accounts/accounts-page.component.ts - 322 + 330 @@ -6241,7 +6241,7 @@ Möchtest du dieses Ghostfolio Konto wirklich schliessen? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 178 + 208 @@ -6289,7 +6289,7 @@ Ups! Beim Einrichten der biometrischen Authentifizierung ist ein Fehler aufgetreten. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 306 + 336 @@ -7083,7 +7083,7 @@ API-Schlüssel konnte nicht erstellt werden apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 128 + 141 @@ -7091,7 +7091,7 @@ Setze diesen API-Schlüssel in deiner selbst gehosteten Umgebung: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 143 + 156 @@ -7099,7 +7099,7 @@ API-Schlüssel für den Ghostfolio Premium Datenanbieter apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 146 + 159 @@ -7107,7 +7107,7 @@ Möchtest du wirklich einen neuen API-Schlüssel erstellen? apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 151 + 164 @@ -7171,7 +7171,7 @@ Ich apps/client/src/app/components/user-account-access/user-account-access.component.ts - 191 + 213 @@ -7411,7 +7411,7 @@ apps/client/src/app/components/user-account-access/user-account-access.component.ts - 149 + 171 @@ -8008,7 +8008,7 @@ Möchtest du wirklich ein neues Sicherheits-Token generieren? apps/client/src/app/components/user-account-access/user-account-access.component.ts - 154 + 176 @@ -8047,6 +8047,14 @@ 56 + + Manage Asset Profile + Anlageprofil verwalten + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 434 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 6362c226f..e0ef4dd37 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -1031,11 +1031,11 @@ apps/client/src/app/components/user-account-access/user-account-access.component.ts - 133 + 155 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 163 + 193 @@ -1355,7 +1355,7 @@ Reporta un anomalía de los datos apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 423 + 443 @@ -1459,7 +1459,7 @@ De acuerdo apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 141 + 154 apps/client/src/app/core/http-response.interceptor.ts @@ -1626,8 +1626,8 @@ My Ghostfolio Mi Ghostfolio - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 34 + apps/client/src/app/pages/user-account/user-account-page.routes.ts + 33 @@ -1635,7 +1635,7 @@ Por favor, ingresa tu código de cupón: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 202 + 215 @@ -1643,7 +1643,7 @@ No se puede canjear este código de cupón apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 166 + 179 @@ -1651,7 +1651,7 @@ El codigo de cupón ha sido canjeado apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 192 @@ -1659,7 +1659,7 @@ Refrescar apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 180 + 193 @@ -1667,7 +1667,7 @@ ¿Estás seguro de eliminar este método de acceso? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 252 + 282 @@ -2891,7 +2891,7 @@ Automático apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 41 + 71 @@ -3095,7 +3095,7 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 400 + 411 @@ -3103,11 +3103,11 @@ Sin datos disponibles libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 402 + 413 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 415 + 426 @@ -5693,7 +5693,7 @@ Oops, el saldo de efectivo no se ha transferido. apps/client/src/app/pages/accounts/accounts-page.component.ts - 322 + 330 @@ -6218,7 +6218,7 @@ ¿Estás seguro de querer borrar tu cuenta de Ghostfolio? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 178 + 208 @@ -6266,7 +6266,7 @@ ¡Ups! Hubo un error al configurar la autenticación biométrica. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 306 + 336 @@ -7060,7 +7060,7 @@ Could not generate an API key apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 128 + 141 @@ -7068,7 +7068,7 @@ Set this API key in your self-hosted environment: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 143 + 156 @@ -7076,7 +7076,7 @@ Ghostfolio Premium Data Provider API Key apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 146 + 159 @@ -7084,7 +7084,7 @@ Do you really want to generate a new API key? apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 151 + 164 @@ -7148,7 +7148,7 @@ Me apps/client/src/app/components/user-account-access/user-account-access.component.ts - 191 + 213 @@ -7388,7 +7388,7 @@ apps/client/src/app/components/user-account-access/user-account-access.component.ts - 149 + 171 @@ -8009,7 +8009,7 @@ Do you really want to generate a new security token? apps/client/src/app/components/user-account-access/user-account-access.component.ts - 154 + 176 @@ -8048,6 +8048,14 @@ 56 + + Manage Asset Profile + Manage Asset Profile + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 434 + + diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index fad013356..2ef2876ff 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -1342,11 +1342,11 @@ apps/client/src/app/components/user-account-access/user-account-access.component.ts - 133 + 155 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 163 + 193 @@ -1706,7 +1706,7 @@ Signaler une Erreur de Données apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 423 + 443 @@ -1810,7 +1810,7 @@ D’accord apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 141 + 154 apps/client/src/app/core/http-response.interceptor.ts @@ -1881,8 +1881,8 @@ My Ghostfolio Mon Ghostfolio - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 34 + apps/client/src/app/pages/user-account/user-account-page.routes.ts + 33 @@ -1890,7 +1890,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 41 + 71 @@ -1898,7 +1898,7 @@ Veuillez entrer votre code promotionnel. apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 202 + 215 @@ -1906,7 +1906,7 @@ Le code promotionnel n’a pas pu être appliqué apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 166 + 179 @@ -1914,7 +1914,7 @@ Le code promotionnel a été appliqué apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 192 @@ -1922,7 +1922,7 @@ Rafraîchir apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 180 + 193 @@ -1930,7 +1930,7 @@ Voulez-vous vraiment supprimer cette méthode de connexion ? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 252 + 282 @@ -3154,7 +3154,7 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 400 + 411 @@ -3330,11 +3330,11 @@ Pas de données disponibles libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 402 + 413 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 415 + 426 @@ -5692,7 +5692,7 @@ Oops, échec du transfert de la cash balance. apps/client/src/app/pages/accounts/accounts-page.component.ts - 322 + 330 @@ -6217,7 +6217,7 @@ Confirmer la suppresion de votre compte Ghostfolio ? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 178 + 208 @@ -6265,7 +6265,7 @@ Oops! Une erreur s’est produite lors de la configuration de l’authentification biométrique. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 306 + 336 @@ -7059,7 +7059,7 @@ Impossible de générer une clé API apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 128 + 141 @@ -7067,7 +7067,7 @@ Définissez cette clé API dans votre environnement auto-hébergé : apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 143 + 156 @@ -7075,7 +7075,7 @@ Clé API du fournisseur de données Ghostfolio Premium apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 146 + 159 @@ -7083,7 +7083,7 @@ Voulez-vous vraiment générer une nouvelle clé API ? apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 151 + 164 @@ -7147,7 +7147,7 @@ Moi apps/client/src/app/components/user-account-access/user-account-access.component.ts - 191 + 213 @@ -7387,7 +7387,7 @@ apps/client/src/app/components/user-account-access/user-account-access.component.ts - 149 + 171 @@ -8008,7 +8008,7 @@ Do you really want to generate a new security token? apps/client/src/app/components/user-account-access/user-account-access.component.ts - 154 + 176 @@ -8047,6 +8047,14 @@ 56 + + Manage Asset Profile + Manage Asset Profile + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 434 + + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index e5329e2a7..f5906fb07 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -1031,11 +1031,11 @@ apps/client/src/app/components/user-account-access/user-account-access.component.ts - 133 + 155 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 163 + 193 @@ -1355,7 +1355,7 @@ Segnala un’anomalia dei dati apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 423 + 443 @@ -1459,7 +1459,7 @@ Bene apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 141 + 154 apps/client/src/app/core/http-response.interceptor.ts @@ -1626,8 +1626,8 @@ My Ghostfolio Il mio Ghostfolio - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 34 + apps/client/src/app/pages/user-account/user-account-page.routes.ts + 33 @@ -1635,7 +1635,7 @@ Inserisci il tuo codice del buono: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 202 + 215 @@ -1643,7 +1643,7 @@ Impossibile riscattare il codice del buono apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 166 + 179 @@ -1651,7 +1651,7 @@ Il codice del buono è stato riscattato apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 192 @@ -1659,7 +1659,7 @@ Ricarica apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 180 + 193 @@ -1667,7 +1667,7 @@ Vuoi davvero rimuovere questo metodo di accesso? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 252 + 282 @@ -2891,7 +2891,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 41 + 71 @@ -3095,7 +3095,7 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 400 + 411 @@ -3103,11 +3103,11 @@ Nessun dato disponibile libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 402 + 413 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 415 + 426 @@ -5693,7 +5693,7 @@ Ops, il trasferimento del saldo di cassa è fallito. apps/client/src/app/pages/accounts/accounts-page.component.ts - 322 + 330 @@ -6218,7 +6218,7 @@ Confermi di voler chiudere il tuo account Ghostfolio? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 178 + 208 @@ -6266,7 +6266,7 @@ Ops! C’è stato un errore impostando l’autenticazione biometrica. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 306 + 336 @@ -7060,7 +7060,7 @@ Non è stato possibile generare un API key apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 128 + 141 @@ -7068,7 +7068,7 @@ Imposta questa API key nel tuo ambiente self-hosted: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 143 + 156 @@ -7076,7 +7076,7 @@ API Key for Ghostfolio Premium Data Provider apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 146 + 159 @@ -7084,7 +7084,7 @@ Vuoi davvero generare una nuova API key? apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 151 + 164 @@ -7148,7 +7148,7 @@ Me apps/client/src/app/components/user-account-access/user-account-access.component.ts - 191 + 213 @@ -7388,7 +7388,7 @@ apps/client/src/app/components/user-account-access/user-account-access.component.ts - 149 + 171 @@ -8009,7 +8009,7 @@ Do you really want to generate a new security token? apps/client/src/app/components/user-account-access/user-account-access.component.ts - 154 + 176 @@ -8048,6 +8048,14 @@ 56 + + Manage Asset Profile + Manage Asset Profile + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 434 + + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index c8d146588..981de4dd9 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -1030,11 +1030,11 @@ apps/client/src/app/components/user-account-access/user-account-access.component.ts - 133 + 155 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 163 + 193 @@ -1354,7 +1354,7 @@ Gegevensstoring melden apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 423 + 443 @@ -1458,7 +1458,7 @@ Oké apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 141 + 154 apps/client/src/app/core/http-response.interceptor.ts @@ -1625,8 +1625,8 @@ My Ghostfolio Mijn Ghostfolio - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 34 + apps/client/src/app/pages/user-account/user-account-page.routes.ts + 33 @@ -1634,7 +1634,7 @@ Voer je couponcode in: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 202 + 215 @@ -1642,7 +1642,7 @@ Kon je kortingscode niet inwisselen apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 166 + 179 @@ -1650,7 +1650,7 @@ Je couponcode is ingewisseld apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 192 @@ -1658,7 +1658,7 @@ Herladen apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 180 + 193 @@ -1666,7 +1666,7 @@ Wil je deze aanmeldingsmethode echt verwijderen? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 252 + 282 @@ -2890,7 +2890,7 @@ Automatisch apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 41 + 71 @@ -3094,7 +3094,7 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 400 + 411 @@ -3102,11 +3102,11 @@ Geen gegevens beschikbaar libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 402 + 413 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 415 + 426 @@ -5692,7 +5692,7 @@ Oeps, geldoverdracht is mislukt. apps/client/src/app/pages/accounts/accounts-page.component.ts - 322 + 330 @@ -6217,7 +6217,7 @@ Wilt u uw Ghostfolio account echt sluiten? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 178 + 208 @@ -6265,7 +6265,7 @@ Oeps! Er is een fout opgetreden met het instellen van de biometrische authenticatie. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 306 + 336 @@ -7059,7 +7059,7 @@ Er kon geen API-sleutel worden gegenereerd apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 128 + 141 @@ -7067,7 +7067,7 @@ Stel deze API-sleutel in uw zelf-gehoste omgeving in: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 143 + 156 @@ -7075,7 +7075,7 @@ Ghostfolio Premium Gegevensleverancier API-sleutel apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 146 + 159 @@ -7083,7 +7083,7 @@ Wilt u echt een nieuwe API-sleutel genereren? apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 151 + 164 @@ -7147,7 +7147,7 @@ Ik apps/client/src/app/components/user-account-access/user-account-access.component.ts - 191 + 213 @@ -7387,7 +7387,7 @@ apps/client/src/app/components/user-account-access/user-account-access.component.ts - 149 + 171 @@ -8008,7 +8008,7 @@ Wilt u echt een nieuwe securitytoken genereren? apps/client/src/app/components/user-account-access/user-account-access.component.ts - 154 + 176 @@ -8047,6 +8047,14 @@ 56 + + Manage Asset Profile + Manage Asset Profile + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 434 + + diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index f88625f65..a033efef6 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -2015,11 +2015,11 @@ apps/client/src/app/components/user-account-access/user-account-access.component.ts - 133 + 155 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 163 + 193 @@ -2515,7 +2515,7 @@ Zgłoś Błąd Danych apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 423 + 443 @@ -2759,7 +2759,7 @@ Wpisz kod kuponu: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 202 + 215 @@ -2767,7 +2767,7 @@ Nie udało się zrealizować kodu kuponu apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 166 + 179 @@ -2775,7 +2775,7 @@ Kupon został zrealizowany apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 192 @@ -2783,7 +2783,7 @@ Odśwież apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 180 + 193 @@ -2819,7 +2819,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 41 + 71 @@ -2827,7 +2827,7 @@ Czy na pewno chcesz usunąć tą metode logowania? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 252 + 282 @@ -3035,7 +3035,7 @@ Okej apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 141 + 154 apps/client/src/app/core/http-response.interceptor.ts @@ -3119,7 +3119,7 @@ Ups, transfer salda nie powiódł się. apps/client/src/app/pages/accounts/accounts-page.component.ts - 322 + 330 @@ -5067,8 +5067,8 @@ My Ghostfolio Moje Ghostfolio - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 34 + apps/client/src/app/pages/user-account/user-account-page.routes.ts + 33 @@ -5428,7 +5428,7 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 400 + 411 @@ -5728,11 +5728,11 @@ Brak danych libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 402 + 413 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 415 + 426 @@ -6217,7 +6217,7 @@ Czy na pewno chcesz zamknąć swoje konto Ghostfolio? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 178 + 208 @@ -6265,7 +6265,7 @@ Ups! Wystąpił błąd podczas konfigurowania uwierzytelniania biometrycznego. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 306 + 336 @@ -7059,7 +7059,7 @@ Nie udało się wygenerować klucza API apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 128 + 141 @@ -7067,7 +7067,7 @@ Ustaw ten klucz API w samodzielnie hostowanym środowisku: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 143 + 156 @@ -7075,7 +7075,7 @@ Klucz API dostawcy danych Premium Ghostfolio apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 146 + 159 @@ -7083,7 +7083,7 @@ Czy na pewno chcesz wygenerować nowy klucz API? apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 151 + 164 @@ -7147,7 +7147,7 @@ Ja apps/client/src/app/components/user-account-access/user-account-access.component.ts - 191 + 213 @@ -7387,7 +7387,7 @@ apps/client/src/app/components/user-account-access/user-account-access.component.ts - 149 + 171 @@ -8008,7 +8008,7 @@ Do you really want to generate a new security token? apps/client/src/app/components/user-account-access/user-account-access.component.ts - 154 + 176 @@ -8047,6 +8047,14 @@ 56 + + Manage Asset Profile + Manage Asset Profile + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 434 + + diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 2e97ca5a6..1c9ac7f97 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -1214,11 +1214,11 @@ apps/client/src/app/components/user-account-access/user-account-access.component.ts - 133 + 155 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 163 + 193 @@ -1666,7 +1666,7 @@ Dados do Relatório com Problema apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 423 + 443 @@ -1794,7 +1794,7 @@ OK apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 141 + 154 apps/client/src/app/core/http-response.interceptor.ts @@ -1865,8 +1865,8 @@ My Ghostfolio O meu Ghostfolio - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 34 + apps/client/src/app/pages/user-account/user-account-page.routes.ts + 33 @@ -1874,7 +1874,7 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 41 + 71 @@ -1882,7 +1882,7 @@ Por favor, insira o seu código de cupão: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 202 + 215 @@ -1890,7 +1890,7 @@ Não foi possível resgatar o código de cupão apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 166 + 179 @@ -1898,7 +1898,7 @@ Código de cupão foi resgatado apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 192 @@ -1906,7 +1906,7 @@ Atualizar apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 180 + 193 @@ -1914,7 +1914,7 @@ Deseja realmente remover este método de início de sessão? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 252 + 282 @@ -3002,7 +3002,7 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 400 + 411 @@ -3178,11 +3178,11 @@ Sem dados disponíveis libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 402 + 413 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 415 + 426 @@ -5692,7 +5692,7 @@ Ops, a transferência do saldo em dinheiro falhou. apps/client/src/app/pages/accounts/accounts-page.component.ts - 322 + 330 @@ -6217,7 +6217,7 @@ Você realmente deseja encerrar sua conta Ghostfolio? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 178 + 208 @@ -6265,7 +6265,7 @@ Ops! Ocorreu um erro ao configurar a autenticação biométrica. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 306 + 336 @@ -7059,7 +7059,7 @@ Could not generate an API key apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 128 + 141 @@ -7067,7 +7067,7 @@ Set this API key in your self-hosted environment: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 143 + 156 @@ -7075,7 +7075,7 @@ Ghostfolio Premium Data Provider API Key apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 146 + 159 @@ -7083,7 +7083,7 @@ Do you really want to generate a new API key? apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 151 + 164 @@ -7147,7 +7147,7 @@ Me apps/client/src/app/components/user-account-access/user-account-access.component.ts - 191 + 213 @@ -7387,7 +7387,7 @@ apps/client/src/app/components/user-account-access/user-account-access.component.ts - 149 + 171 @@ -8008,7 +8008,7 @@ Do you really want to generate a new security token? apps/client/src/app/components/user-account-access/user-account-access.component.ts - 154 + 176 @@ -8047,6 +8047,14 @@ 56 + + Manage Asset Profile + Manage Asset Profile + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 434 + + diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index bf84d20d5..d0a24a9ac 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -1863,11 +1863,11 @@ apps/client/src/app/components/user-account-access/user-account-access.component.ts - 133 + 155 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 163 + 193 @@ -2355,7 +2355,7 @@ Rapor Veri Sorunu apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 423 + 443 @@ -2611,7 +2611,7 @@ Tamam apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 141 + 154 apps/client/src/app/core/http-response.interceptor.ts @@ -4551,8 +4551,8 @@ My Ghostfolio Benim Ghostfolio’m - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 34 + apps/client/src/app/pages/user-account/user-account-page.routes.ts + 33 @@ -4560,7 +4560,7 @@ Otomatik apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 41 + 71 @@ -4568,7 +4568,7 @@ Lütfen kupon kodunuzu girin: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 202 + 215 @@ -4576,7 +4576,7 @@ Kupon kodu kullanılamadı apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 166 + 179 @@ -4584,7 +4584,7 @@ Kupon kodu kullanıldı apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 192 @@ -4592,7 +4592,7 @@ Yeniden Yükle apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 180 + 193 @@ -4600,7 +4600,7 @@ Bu giriş yöntemini kaldırmayı gerçekten istiyor musunuz? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 252 + 282 @@ -5144,7 +5144,7 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 400 + 411 @@ -5392,11 +5392,11 @@ Veri mevcut değil libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 402 + 413 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 415 + 426 @@ -5692,7 +5692,7 @@ Hay Allah, Nakit bakiyesi tranferi başarısız oldu. apps/client/src/app/pages/accounts/accounts-page.component.ts - 322 + 330 @@ -6217,7 +6217,7 @@ Ghostfolio hesabınızı kapatmak istediğinize emin misiniz? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 178 + 208 @@ -6265,7 +6265,7 @@ Oops! Biyometrik kimlik doğrulama ayarlanırken bir hata oluştu. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 306 + 336 @@ -7059,7 +7059,7 @@ API anahtarı oluşturulamadı apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 128 + 141 @@ -7067,7 +7067,7 @@ Bu API anahtarını kendi barındırılan ortamınıza ayarlayın: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 143 + 156 @@ -7075,7 +7075,7 @@ Ghostfolio Premium Veri Sağlayıcı API Anahtarı apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 146 + 159 @@ -7083,7 +7083,7 @@ Yeni bir API anahtarı oluşturmak istediğinize emin misiniz? apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 151 + 164 @@ -7147,7 +7147,7 @@ Ben apps/client/src/app/components/user-account-access/user-account-access.component.ts - 191 + 213 @@ -7387,7 +7387,7 @@ apps/client/src/app/components/user-account-access/user-account-access.component.ts - 149 + 171 @@ -8008,7 +8008,7 @@ Do you really want to generate a new security token? apps/client/src/app/components/user-account-access/user-account-access.component.ts - 154 + 176 @@ -8047,6 +8047,14 @@ 56 + + Manage Asset Profile + Manage Asset Profile + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 434 + + diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index e2e90189f..f865634f0 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -2299,11 +2299,11 @@ apps/client/src/app/components/user-account-access/user-account-access.component.ts - 133 + 155 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 163 + 193 @@ -2431,7 +2431,7 @@ Повідомити про збій даних apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 423 + 443 @@ -3163,7 +3163,7 @@ Я apps/client/src/app/components/user-account-access/user-account-access.component.ts - 191 + 213 @@ -3187,7 +3187,7 @@ Не вдалося згенерувати ключ API apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 128 + 141 @@ -3195,7 +3195,7 @@ ОК apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 141 + 154 apps/client/src/app/core/http-response.interceptor.ts @@ -3211,7 +3211,7 @@ Встановіть цей ключ API у вашому self-hosted середовищі: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 143 + 156 @@ -3219,7 +3219,7 @@ Ключ API Ghostfolio Premium Data Provider apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 146 + 159 @@ -3227,7 +3227,7 @@ Ви дійсно хочете згенерувати новий ключ API? apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 151 + 164 @@ -3235,7 +3235,7 @@ Не вдалося обміняти код купона apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 166 + 179 @@ -3243,7 +3243,7 @@ Код купона був обміняний apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 192 @@ -3251,7 +3251,7 @@ Перезавантажити apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 180 + 193 @@ -3259,7 +3259,7 @@ Будь ласка, введіть ваш код купона. apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 202 + 215 @@ -3303,7 +3303,7 @@ Автоматичний apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 41 + 71 @@ -3311,7 +3311,7 @@ Ви дійсно хочете закрити ваш обліковий запис Ghostfolio? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 178 + 208 @@ -3319,7 +3319,7 @@ Ви дійсно хочете вилучити цей спосіб входу? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 252 + 282 @@ -3327,7 +3327,7 @@ Упс! Виникла помилка під час налаштування біометричної автентифікації. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 306 + 336 @@ -3631,7 +3631,7 @@ Упс, перенесення балансу готівки не вдалося. apps/client/src/app/pages/accounts/accounts-page.component.ts - 322 + 330 @@ -6126,8 +6126,8 @@ My Ghostfolio Мій Ghostfolio - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 34 + apps/client/src/app/pages/user-account/user-account-page.routes.ts + 33 @@ -6663,7 +6663,7 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 400 + 411 @@ -7151,11 +7151,11 @@ Дані недоступні libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 402 + 413 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 415 + 426 @@ -7387,7 +7387,7 @@ apps/client/src/app/components/user-account-access/user-account-access.component.ts - 149 + 171 @@ -8008,7 +8008,7 @@ Do you really want to generate a new security token? apps/client/src/app/components/user-account-access/user-account-access.component.ts - 154 + 176 @@ -8047,6 +8047,14 @@ 56 + + Manage Asset Profile + Manage Asset Profile + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 434 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 0dab1affa..50f5929d7 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -1904,11 +1904,11 @@ apps/client/src/app/components/user-account-access/user-account-access.component.ts - 133 + 155 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 163 + 193 @@ -2356,7 +2356,7 @@ Report Data Glitch apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 423 + 443 @@ -2580,28 +2580,28 @@ Please enter your coupon code. apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 202 + 215 Could not redeem coupon code apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 166 + 179 Coupon code has been redeemed apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 192 Reload apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 180 + 193 @@ -2633,14 +2633,14 @@ Auto apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 41 + 71 Do you really want to remove this sign in method? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 252 + 282 @@ -2825,7 +2825,7 @@ Okay apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 141 + 154 apps/client/src/app/core/http-response.interceptor.ts @@ -2900,7 +2900,7 @@ Oops, cash balance transfer has failed. apps/client/src/app/pages/accounts/accounts-page.component.ts - 322 + 330 @@ -4660,8 +4660,8 @@ My Ghostfolio - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 34 + apps/client/src/app/pages/user-account/user-account-page.routes.ts + 33 @@ -5001,7 +5001,7 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 400 + 411 @@ -5264,11 +5264,11 @@ No data available libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 402 + 413 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 415 + 426 @@ -5655,7 +5655,7 @@ Do you really want to close your Ghostfolio account? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 178 + 208 @@ -5690,7 +5690,7 @@ Oops! There was an error setting up biometric authentication. apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 306 + 336 @@ -6408,28 +6408,28 @@ Could not generate an API key apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 128 + 141 Do you really want to generate a new API key? apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 151 + 164 Ghostfolio Premium Data Provider API Key apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 146 + 159 Set this API key in your self-hosted environment: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 143 + 156 @@ -6471,7 +6471,7 @@ Me apps/client/src/app/components/user-account-access/user-account-access.component.ts - 191 + 213 @@ -6682,7 +6682,7 @@ apps/client/src/app/components/user-account-access/user-account-access.component.ts - 149 + 171 @@ -7209,7 +7209,7 @@ Do you really want to generate a new security token? apps/client/src/app/components/user-account-access/user-account-access.component.ts - 154 + 176 @@ -7235,6 +7235,13 @@ 56 + + Manage Asset Profile + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 434 + + diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 820a69521..df3c3a5b0 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -2024,11 +2024,11 @@ apps/client/src/app/components/user-account-access/user-account-access.component.ts - 133 + 155 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 163 + 193 @@ -2524,7 +2524,7 @@ 报告数据故障 apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html - 423 + 443 @@ -2768,7 +2768,7 @@ 请输入您的优惠券代码。 apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 202 + 215 @@ -2776,7 +2776,7 @@ 无法兑换优惠券代码 apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 166 + 179 @@ -2784,7 +2784,7 @@ 优惠券代码已兑换 apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 179 + 192 @@ -2792,7 +2792,7 @@ 重新加载 apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 180 + 193 @@ -2828,7 +2828,7 @@ 自动 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 41 + 71 @@ -2836,7 +2836,7 @@ 您确实要删除此登录方法吗? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 252 + 282 @@ -3044,7 +3044,7 @@ 好的 apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 141 + 154 apps/client/src/app/core/http-response.interceptor.ts @@ -3128,7 +3128,7 @@ 糟糕,现金余额转账失败。 apps/client/src/app/pages/accounts/accounts-page.component.ts - 322 + 330 @@ -5100,8 +5100,8 @@ My Ghostfolio 我的 Ghostfolio - apps/client/src/app/pages/user-account/user-account-page-routing.module.ts - 34 + apps/client/src/app/pages/user-account/user-account-page.routes.ts + 33 @@ -5485,7 +5485,7 @@ libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 400 + 411 @@ -5785,11 +5785,11 @@ 无可用数据 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 402 + 413 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts - 415 + 426 @@ -6218,7 +6218,7 @@ 您确定要关闭您的 Ghostfolio 账户吗? apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 178 + 208 @@ -6266,7 +6266,7 @@ 哎呀!设置生物识别认证时发生错误。 apps/client/src/app/components/user-account-settings/user-account-settings.component.ts - 306 + 336 @@ -7060,7 +7060,7 @@ 无法生成 API 密钥 apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 128 + 141 @@ -7068,7 +7068,7 @@ 在您的自托管环境中设置此 API 密钥: apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 143 + 156 @@ -7076,7 +7076,7 @@ Ghostfolio Premium 数据提供者 API 密钥 apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 146 + 159 @@ -7084,7 +7084,7 @@ 您确定要生成新的 API 密钥吗? apps/client/src/app/components/user-account-membership/user-account-membership.component.ts - 151 + 164 @@ -7148,7 +7148,7 @@ apps/client/src/app/components/user-account-access/user-account-access.component.ts - 191 + 213 @@ -7388,7 +7388,7 @@ apps/client/src/app/components/user-account-access/user-account-access.component.ts - 149 + 171 @@ -8009,7 +8009,7 @@ Do you really want to generate a new security token? apps/client/src/app/components/user-account-access/user-account-access.component.ts - 154 + 176 @@ -8048,6 +8048,14 @@ 56 + + Manage Asset Profile + Manage Asset Profile + + apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html + 434 + + From 0b8745b5b333b5b88d25da8d8684cdb03079671b Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Mon, 7 Jul 2025 20:22:03 +0200 Subject: [PATCH 07/16] Release 2.179.0 (#5124) --- 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 3f4b13899..e590b9f3b 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.179.0 - 2025-07-07 ### Added diff --git a/package-lock.json b/package-lock.json index b806edd9c..b8dfa6a1c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ghostfolio", - "version": "2.178.0", + "version": "2.179.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ghostfolio", - "version": "2.178.0", + "version": "2.179.0", "hasInstallScript": true, "license": "AGPL-3.0", "dependencies": { diff --git a/package.json b/package.json index 60863424d..74b7f981f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.178.0", + "version": "2.179.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", From 7441162fb2707a720f85787634081db9ab71c813 Mon Sep 17 00:00:00 2001 From: Lance Herman Date: Tue, 8 Jul 2025 17:04:19 +0600 Subject: [PATCH 08/16] Feature/improve language localization for CA 20250706 (#5113) * Improve language localization for CA * Update changelog --- CHANGELOG.md | 6 ++++++ apps/client/src/locales/messages.ca.xlf | 22 +++++++++++----------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e590b9f3b..98db3b039 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 Catalan (`ca`) + ## 2.179.0 - 2025-07-07 ### Added diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index 2d44105fc..f849aae31 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -5646,7 +5646,7 @@ Week to date - Week to date + Setmana fins avui libs/ui/src/lib/assistant/assistant.component.ts 354 @@ -5654,7 +5654,7 @@ WTD - WTD + WTD libs/ui/src/lib/assistant/assistant.component.ts 354 @@ -5662,7 +5662,7 @@ Month to date - Month to date + Mes fins a la data libs/ui/src/lib/assistant/assistant.component.ts 358 @@ -5670,7 +5670,7 @@ MTD - MTD + MTD libs/ui/src/lib/assistant/assistant.component.ts 358 @@ -5678,7 +5678,7 @@ Year to date - Year to date + Any fins a la data libs/ui/src/lib/assistant/assistant.component.ts 362 @@ -5686,7 +5686,7 @@ year - year + any libs/ui/src/lib/assistant/assistant.component.ts 372 @@ -5694,7 +5694,7 @@ years - years + anys libs/ui/src/lib/assistant/assistant.component.ts 397 @@ -5702,7 +5702,7 @@ Asset Profiles - Asset Profiles + Perfils d’actius apps/client/src/app/components/admin-settings/admin-settings.component.html 106 @@ -5710,7 +5710,7 @@ Date Range - Date Range + Interval de dates libs/ui/src/lib/assistant/assistant.html 130 @@ -5718,7 +5718,7 @@ Reset Filters - Reset Filters + Restableix els filtres libs/ui/src/lib/assistant/assistant.html 224 @@ -5726,7 +5726,7 @@ Apply Filters - Apply Filters + Aplicar filtres libs/ui/src/lib/assistant/assistant.html 234 From 6940700a1bf4ecfd374f305f32311a29731fac73 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 8 Jul 2025 19:44:30 +0200 Subject: [PATCH 09/16] Feature/extend asset sub classes by collectible (#5126) * Extend asset sub classes by collectible * Update changelog --- CHANGELOG.md | 5 +++++ .../admin-market-data.component.ts | 14 ++++---------- libs/ui/src/lib/i18n.ts | 4 +++- .../migration.sql | 2 ++ .../migration.sql | 2 ++ prisma/schema.prisma | 2 ++ 6 files changed, 18 insertions(+), 11 deletions(-) create mode 100644 prisma/migrations/20250708090630_added_alternative_investment_to_asset_class/migration.sql create mode 100644 prisma/migrations/20250708090631_added_collectible_to_asset_sub_class/migration.sql diff --git a/CHANGELOG.md b/CHANGELOG.md index 98db3b039..ff8e3a8bc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Added + +- Added alternative investment as an asset class +- Added collectible as an asset sub class + ### Changed - Improved the language localization for Catalan (`ca`) 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 e50d2545f..30ab1aa04 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 @@ -68,16 +68,10 @@ export class AdminMarketDataComponent @ViewChild(MatSort) sort: MatSort; public activeFilters: Filter[] = []; - public allFilters: Filter[] = [ - AssetSubClass.BOND, - AssetSubClass.COMMODITY, - AssetSubClass.CRYPTOCURRENCY, - AssetSubClass.ETF, - AssetSubClass.MUTUALFUND, - AssetSubClass.PRECIOUS_METAL, - AssetSubClass.PRIVATE_EQUITY, - AssetSubClass.STOCK - ] + public allFilters: Filter[] = Object.keys(AssetSubClass) + .filter((assetSubClass) => { + return assetSubClass !== 'CASH'; + }) .map((assetSubClass) => { return { id: assetSubClass.toString(), diff --git a/libs/ui/src/lib/i18n.ts b/libs/ui/src/lib/i18n.ts index 62b7d162a..749509f82 100644 --- a/libs/ui/src/lib/i18n.ts +++ b/libs/ui/src/lib/i18n.ts @@ -41,7 +41,7 @@ const locales = { SELL: $localize`Sell`, // AssetClass (enum) - CASH: $localize`Cash`, + ALTERNATIVE_INVESTMENT: $localize`Alternative Investment`, COMMODITY: $localize`Commodity`, EQUITY: $localize`Equity`, FIXED_INCOME: $localize`Fixed Income`, @@ -50,6 +50,8 @@ const locales = { // AssetSubClass (enum) BOND: $localize`Bond`, + CASH: $localize`Cash`, + COLLECTIBLE: $localize`Collectible`, CRYPTOCURRENCY: $localize`Cryptocurrency`, ETF: $localize`ETF`, MUTUALFUND: $localize`Mutual Fund`, diff --git a/prisma/migrations/20250708090630_added_alternative_investment_to_asset_class/migration.sql b/prisma/migrations/20250708090630_added_alternative_investment_to_asset_class/migration.sql new file mode 100644 index 000000000..dceb644ff --- /dev/null +++ b/prisma/migrations/20250708090630_added_alternative_investment_to_asset_class/migration.sql @@ -0,0 +1,2 @@ +-- AlterEnum +ALTER TYPE "AssetClass" ADD VALUE 'ALTERNATIVE_INVESTMENT'; diff --git a/prisma/migrations/20250708090631_added_collectible_to_asset_sub_class/migration.sql b/prisma/migrations/20250708090631_added_collectible_to_asset_sub_class/migration.sql new file mode 100644 index 000000000..ddfa2d9ee --- /dev/null +++ b/prisma/migrations/20250708090631_added_collectible_to_asset_sub_class/migration.sql @@ -0,0 +1,2 @@ +-- AlterEnum +ALTER TYPE "AssetSubClass" ADD VALUE 'COLLECTIBLE'; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index bddb0f78c..6080a1aa6 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -278,6 +278,7 @@ enum AccessPermission { } enum AssetClass { + ALTERNATIVE_INVESTMENT COMMODITY EQUITY FIXED_INCOME @@ -288,6 +289,7 @@ enum AssetClass { enum AssetSubClass { BOND CASH + COLLECTIBLE COMMODITY CRYPTOCURRENCY ETF From c34e3a943468f6b942a8202aa0a1f1d94a9c0fb8 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 8 Jul 2025 19:45:22 +0200 Subject: [PATCH 10/16] Feature/reuse internal routes in assistant list item component (#5122) * Reuse internal routes --- .../assistant-list-item/assistant-list-item.component.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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 457df01ff..fe8530d7b 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 @@ -1,4 +1,5 @@ import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module'; +import { internalRoutes } from '@ghostfolio/common/routes/routes'; import { SearchMode } from '@ghostfolio/ui/assistant/enums/search-mode'; import { IAssetSearchResultItem, @@ -54,13 +55,16 @@ export class GfAssistantListItemComponent dataSource: this.item?.dataSource, symbol: this.item?.symbol }; - this.routerLink = ['/admin', 'market-data']; + + this.routerLink = + internalRoutes.adminControl.subRoutes.marketData.routerLink; } else if (this.item?.mode === SearchMode.HOLDING) { this.queryParams = { dataSource: this.item?.dataSource, holdingDetailDialog: true, symbol: this.item?.symbol }; + this.routerLink = []; } else if (this.item?.mode === SearchMode.QUICK_LINK) { this.queryParams = {}; From 96b4e11126169396b48c74b5e15544ab3c08ccfe Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 8 Jul 2025 20:23:49 +0200 Subject: [PATCH 11/16] Feature/improve label in treemap chart for asset profiles with MANUAL data source (#5128) * Improve label * Update changelog --- CHANGELOG.md | 1 + .../treemap-chart/treemap-chart.component.ts | 42 ++++++++++--------- 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ff8e3a8bc..ed320057a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Improved the label for asset profiles with `MANUAL` data source in the chart of the holdings tab on the home page - Improved the language localization for Catalan (`ca`) ## 2.179.0 - 2025-07-07 diff --git a/libs/ui/src/lib/treemap-chart/treemap-chart.component.ts b/libs/ui/src/lib/treemap-chart/treemap-chart.component.ts index 8c5ee94de..4e06d49cc 100644 --- a/libs/ui/src/lib/treemap-chart/treemap-chart.component.ts +++ b/libs/ui/src/lib/treemap-chart/treemap-chart.component.ts @@ -29,6 +29,7 @@ import { ChartConfiguration } from 'chart.js'; import { LinearScale } from 'chart.js'; import { Chart, Tooltip } from 'chart.js'; import { TreemapController, TreemapElement } from 'chartjs-chart-treemap'; +import { isUUID } from 'class-validator'; import { differenceInDays, max } from 'date-fns'; import { orderBy } from 'lodash'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; @@ -199,18 +200,18 @@ export class GfTreemapChartComponent const data: ChartConfiguration<'treemap'>['data'] = { datasets: [ { - backgroundColor: (ctx) => { + backgroundColor: (context) => { let annualizedNetPerformancePercent = getAnnualizedPerformancePercent({ daysInMarket: differenceInDays( endDate, max([ - ctx.raw._data.dateOfFirstActivity ?? new Date(0), + context.raw._data.dateOfFirstActivity ?? new Date(0), startDate ]) ), netPerformancePercentage: new Big( - ctx.raw._data.netPerformancePercentWithCurrencyEffect + context.raw._data.netPerformancePercentWithCurrencyEffect ) }).toNumber(); @@ -230,18 +231,18 @@ export class GfTreemapChartComponent key: 'allocationInPercentage', labels: { align: 'left', - color: (ctx) => { + color: (context) => { let annualizedNetPerformancePercent = getAnnualizedPerformancePercent({ daysInMarket: differenceInDays( endDate, max([ - ctx.raw._data.dateOfFirstActivity ?? new Date(0), + context.raw._data.dateOfFirstActivity ?? new Date(0), startDate ]) ), netPerformancePercentage: new Big( - ctx.raw._data.netPerformancePercentWithCurrencyEffect + context.raw._data.netPerformancePercentWithCurrencyEffect ) }).toNumber(); @@ -259,11 +260,11 @@ export class GfTreemapChartComponent }, display: true, font: [{ size: 16 }, { lineHeight: 1.5, size: 14 }], - formatter: (ctx) => { + formatter: ({ raw }) => { // Round to 4 decimal places let netPerformancePercentWithCurrencyEffect = Math.round( - ctx.raw._data.netPerformancePercentWithCurrencyEffect * 10000 + raw._data.netPerformancePercentWithCurrencyEffect * 10000 ) / 10000; if (Math.abs(netPerformancePercentWithCurrencyEffect) === 0) { @@ -272,8 +273,11 @@ export class GfTreemapChartComponent ); } + const name = raw._data.name; + const symbol = raw._data.symbol; + return [ - ctx.raw._data.symbol, + isUUID(symbol) ? (name ?? symbol) : symbol, `${netPerformancePercentWithCurrencyEffect > 0 ? '+' : ''}${(netPerformancePercentWithCurrencyEffect * 100).toFixed(2)}%` ]; }, @@ -341,19 +345,17 @@ export class GfTreemapChartComponent locale: this.locale }), callbacks: { - label: (context) => { - const allocationInPercentage = `${((context.raw._data.allocationInPercentage as number) * 100).toFixed(2)}%`; - const name = context.raw._data.name; + label: ({ raw }) => { + const allocationInPercentage = `${((raw._data.allocationInPercentage as number) * 100).toFixed(2)}%`; + const name = raw._data.name; const sign = - context.raw._data.netPerformancePercentWithCurrencyEffect > 0 - ? '+' - : ''; - const symbol = context.raw._data.symbol; + raw._data.netPerformancePercentWithCurrencyEffect > 0 ? '+' : ''; + const symbol = raw._data.symbol; - const netPerformanceInPercentageWithSign = `${sign}${(context.raw._data.netPerformancePercentWithCurrencyEffect * 100).toFixed(2)}%`; + const netPerformanceInPercentageWithSign = `${sign}${(raw._data.netPerformancePercentWithCurrencyEffect * 100).toFixed(2)}%`; - if (context.raw._data.valueInBaseCurrency !== null) { - const value = context.raw._data.valueInBaseCurrency as number; + if (raw._data.valueInBaseCurrency !== null) { + const value = raw._data.valueInBaseCurrency as number; return [ `${name ?? symbol} (${allocationInPercentage})`, @@ -363,7 +365,7 @@ export class GfTreemapChartComponent })} ${this.baseCurrency}`, '', $localize`Change` + ' (' + $localize`Performance` + ')', - `${sign}${context.raw._data.netPerformanceWithCurrencyEffect.toLocaleString( + `${sign}${raw._data.netPerformanceWithCurrencyEffect.toLocaleString( this.locale, { maximumFractionDigits: 2, From 0addf645b03766cb8aa5e2fdc5f7f4874849d086 Mon Sep 17 00:00:00 2001 From: Attila Cseh <77381875+csehatt741@users.noreply.github.com> Date: Tue, 8 Jul 2025 20:32:36 +0200 Subject: [PATCH 12/16] Bugfix/fix export functionality for accounts without activities (#5116) * Fix export functionality for accounts without activities * Update changelog --- CHANGELOG.md | 5 +++++ apps/api/src/app/export/export.service.ts | 22 ++++++++++++++++++---- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ed320057a..75327ae9c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,9 +14,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed +- Respected the filter by account for accounts when exporting activities on the portfolio activities page - Improved the label for asset profiles with `MANUAL` data source in the chart of the holdings tab on the home page - Improved the language localization for Catalan (`ca`) +### Fixed + +- Fixed the export functionality for accounts without activities + ## 2.179.0 - 2025-07-07 ### Added diff --git a/apps/api/src/app/export/export.service.ts b/apps/api/src/app/export/export.service.ts index 565dd1340..f0f52bfe2 100644 --- a/apps/api/src/app/export/export.service.ts +++ b/apps/api/src/app/export/export.service.ts @@ -5,7 +5,8 @@ import { TagService } from '@ghostfolio/api/services/tag/tag.service'; import { Filter, Export } from '@ghostfolio/common/interfaces'; import { Injectable } from '@nestjs/common'; -import { Platform } from '@prisma/client'; +import { Platform, Prisma } from '@prisma/client'; +import { groupBy } from 'lodash'; @Injectable() export class ExportService { @@ -26,6 +27,9 @@ export class ExportService { userCurrency: string; userId: string; }): Promise { + const { ACCOUNT: filtersByAccount } = groupBy(filters, ({ type }) => { + return type; + }); const platformsMap: { [platformId: string]: Platform } = {}; let { activities } = await this.orderService.getOrders({ @@ -44,20 +48,30 @@ export class ExportService { }); } + const where: Prisma.AccountWhereInput = { userId }; + + if (filtersByAccount?.length > 0) { + where.id = { + in: filtersByAccount.map(({ id }) => { + return id; + }) + }; + } + const accounts = ( await this.accountService.accounts({ + where, include: { balances: true, platform: true }, orderBy: { name: 'asc' - }, - where: { userId } + } }) ) .filter(({ id }) => { - return activities.length > 0 + return activityIds?.length > 0 ? activities.some(({ accountId }) => { return accountId === id; }) From 114b14507bc76c110af3b8fb9e1da1ec914b9018 Mon Sep 17 00:00:00 2001 From: Georgine Forner Date: Wed, 9 Jul 2025 00:33:18 +0600 Subject: [PATCH 13/16] Feature/improve language localization for ES 20250708 (#5125) * Improve language localization for ES * Update changelog --- CHANGELOG.md | 1 + apps/client/src/locales/messages.es.xlf | 16 ++++++++-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 75327ae9c..226f81fb2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Respected the filter by account for accounts when exporting activities on the portfolio activities page - Improved the label for asset profiles with `MANUAL` data source in the chart of the holdings tab on the home page - Improved the language localization for Catalan (`ca`) +- 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 e0ef4dd37..a00d6d054 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -6527,7 +6527,7 @@ Italy - Italy + Italia libs/ui/src/lib/i18n.ts 85 @@ -6535,7 +6535,7 @@ Netherlands - Netherlands + Países Bajos libs/ui/src/lib/i18n.ts 87 @@ -6543,7 +6543,7 @@ New Zealand - New Zealand + Nueva Zelanda libs/ui/src/lib/i18n.ts 88 @@ -6551,7 +6551,7 @@ Poland - Poland + Polonia libs/ui/src/lib/i18n.ts 89 @@ -6559,7 +6559,7 @@ Romania - Romania + Rumanía libs/ui/src/lib/i18n.ts 90 @@ -6567,7 +6567,7 @@ South Africa - South Africa + Sudáfrica libs/ui/src/lib/i18n.ts 92 @@ -6575,7 +6575,7 @@ Thailand - Thailand + Tailandia libs/ui/src/lib/i18n.ts 94 @@ -6583,7 +6583,7 @@ United States - United States + Estados Unidos libs/ui/src/lib/i18n.ts 97 From f2a4af3804b3c3c6c7163204a8db9a32495d71c5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 8 Jul 2025 20:44:41 +0200 Subject: [PATCH 14/16] Feature/update locales (#5129) * Update locales * Update translation * Update changelog --------- Co-authored-by: github-actions[bot] Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> --- CHANGELOG.md | 1 + apps/client/src/locales/messages.ca.xlf | 118 ++++++++++++++---------- apps/client/src/locales/messages.de.xlf | 118 ++++++++++++++---------- apps/client/src/locales/messages.es.xlf | 118 ++++++++++++++---------- apps/client/src/locales/messages.fr.xlf | 118 ++++++++++++++---------- apps/client/src/locales/messages.it.xlf | 118 ++++++++++++++---------- apps/client/src/locales/messages.nl.xlf | 118 ++++++++++++++---------- apps/client/src/locales/messages.pl.xlf | 118 ++++++++++++++---------- apps/client/src/locales/messages.pt.xlf | 118 ++++++++++++++---------- apps/client/src/locales/messages.tr.xlf | 118 ++++++++++++++---------- apps/client/src/locales/messages.uk.xlf | 118 ++++++++++++++---------- apps/client/src/locales/messages.xlf | 116 +++++++++++++---------- apps/client/src/locales/messages.zh.xlf | 118 ++++++++++++++---------- 13 files changed, 803 insertions(+), 612 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 226f81fb2..7066c4788 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Respected the filter by account for accounts when exporting activities on the portfolio activities page - Improved the label for asset profiles with `MANUAL` data source in the chart of the holdings tab on the home page - Improved the language localization for Catalan (`ca`) +- Improved the language localization for German (`de`) - Improved the language localization for Spanish (`es`) ### Fixed diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf index f849aae31..35b837e5b 100644 --- a/apps/client/src/locales/messages.ca.xlf +++ b/apps/client/src/locales/messages.ca.xlf @@ -1271,7 +1271,7 @@ Punts de referència apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 91 + 85 @@ -1279,7 +1279,7 @@ Divises apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 96 + 90 @@ -1287,7 +1287,7 @@ ETFs sense País apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 101 + 95 @@ -1295,7 +1295,7 @@ ETFs sense Sector apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 106 + 100 @@ -1303,7 +1303,7 @@ Filtra per... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 350 + 344 @@ -2383,7 +2383,7 @@ libs/ui/src/lib/i18n.ts - 102 + 104 @@ -2399,7 +2399,7 @@ libs/ui/src/lib/i18n.ts - 103 + 105 @@ -5213,7 +5213,7 @@ libs/ui/src/lib/i18n.ts - 93 + 95 @@ -5973,7 +5973,7 @@ Japan libs/ui/src/lib/i18n.ts - 86 + 88 @@ -6113,7 +6113,7 @@ Cash libs/ui/src/lib/i18n.ts - 44 + 53 @@ -6169,7 +6169,7 @@ Cryptocurrency libs/ui/src/lib/i18n.ts - 53 + 55 @@ -6177,7 +6177,7 @@ ETF libs/ui/src/lib/i18n.ts - 54 + 56 @@ -6185,7 +6185,7 @@ Mutual Fund libs/ui/src/lib/i18n.ts - 55 + 57 @@ -6193,7 +6193,7 @@ Precious Metal libs/ui/src/lib/i18n.ts - 56 + 58 @@ -6201,7 +6201,7 @@ Private Equity libs/ui/src/lib/i18n.ts - 57 + 59 @@ -6209,7 +6209,7 @@ Stock libs/ui/src/lib/i18n.ts - 58 + 60 @@ -6217,7 +6217,7 @@ Africa libs/ui/src/lib/i18n.ts - 65 + 67 @@ -6225,7 +6225,7 @@ Asia libs/ui/src/lib/i18n.ts - 66 + 68 @@ -6233,7 +6233,7 @@ Europe libs/ui/src/lib/i18n.ts - 67 + 69 @@ -6241,7 +6241,7 @@ North America libs/ui/src/lib/i18n.ts - 68 + 70 @@ -6249,7 +6249,7 @@ Oceania libs/ui/src/lib/i18n.ts - 69 + 71 @@ -6257,7 +6257,7 @@ South America libs/ui/src/lib/i18n.ts - 70 + 72 @@ -6265,7 +6265,7 @@ Extreme Fear libs/ui/src/lib/i18n.ts - 100 + 102 @@ -6273,7 +6273,7 @@ Extreme Greed libs/ui/src/lib/i18n.ts - 101 + 103 @@ -6281,7 +6281,7 @@ Neutral libs/ui/src/lib/i18n.ts - 104 + 106 @@ -6449,7 +6449,7 @@ Australia libs/ui/src/lib/i18n.ts - 74 + 76 @@ -6457,7 +6457,7 @@ Austria libs/ui/src/lib/i18n.ts - 75 + 77 @@ -6465,7 +6465,7 @@ Belgium libs/ui/src/lib/i18n.ts - 76 + 78 @@ -6473,7 +6473,7 @@ Bulgaria libs/ui/src/lib/i18n.ts - 78 + 80 @@ -6481,7 +6481,7 @@ Canada libs/ui/src/lib/i18n.ts - 79 + 81 @@ -6489,7 +6489,7 @@ Czech Republic libs/ui/src/lib/i18n.ts - 80 + 82 @@ -6497,7 +6497,7 @@ Finland libs/ui/src/lib/i18n.ts - 81 + 83 @@ -6505,7 +6505,7 @@ France libs/ui/src/lib/i18n.ts - 82 + 84 @@ -6513,7 +6513,7 @@ Germany libs/ui/src/lib/i18n.ts - 83 + 85 @@ -6521,7 +6521,7 @@ India libs/ui/src/lib/i18n.ts - 84 + 86 @@ -6529,7 +6529,7 @@ Italy libs/ui/src/lib/i18n.ts - 85 + 87 @@ -6537,7 +6537,7 @@ Netherlands libs/ui/src/lib/i18n.ts - 87 + 89 @@ -6545,7 +6545,7 @@ New Zealand libs/ui/src/lib/i18n.ts - 88 + 90 @@ -6553,7 +6553,7 @@ Poland libs/ui/src/lib/i18n.ts - 89 + 91 @@ -6561,7 +6561,7 @@ Romania libs/ui/src/lib/i18n.ts - 90 + 92 @@ -6569,7 +6569,7 @@ South Africa libs/ui/src/lib/i18n.ts - 92 + 94 @@ -6577,7 +6577,7 @@ Thailand libs/ui/src/lib/i18n.ts - 94 + 96 @@ -6585,7 +6585,7 @@ United States libs/ui/src/lib/i18n.ts - 97 + 99 @@ -6921,7 +6921,7 @@ Ukraine libs/ui/src/lib/i18n.ts - 95 + 97 @@ -7283,7 +7283,7 @@ Change libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + 367 @@ -7291,11 +7291,11 @@ Performance libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + 367 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 378 + 380 @@ -7319,7 +7319,7 @@ Armenia libs/ui/src/lib/i18n.ts - 73 + 75 @@ -7327,7 +7327,7 @@ British Virgin Islands libs/ui/src/lib/i18n.ts - 77 + 79 @@ -7335,7 +7335,7 @@ Singapore libs/ui/src/lib/i18n.ts - 91 + 93 @@ -7411,7 +7411,7 @@ United Kingdom libs/ui/src/lib/i18n.ts - 96 + 98 @@ -8055,6 +8055,22 @@ 434 + + Alternative Investment + Alternative Investment + + libs/ui/src/lib/i18n.ts + 44 + + + + Collectible + Collectible + + libs/ui/src/lib/i18n.ts + 54 + + diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index 150429eee..a73ea11d8 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -2814,7 +2814,7 @@ libs/ui/src/lib/i18n.ts - 102 + 104 @@ -2830,7 +2830,7 @@ libs/ui/src/lib/i18n.ts - 103 + 105 @@ -2838,7 +2838,7 @@ Filtern nach... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 350 + 344 @@ -3002,7 +3002,7 @@ Bargeld libs/ui/src/lib/i18n.ts - 44 + 53 @@ -3050,7 +3050,7 @@ Kryptowährung libs/ui/src/lib/i18n.ts - 53 + 55 @@ -3058,7 +3058,7 @@ ETF libs/ui/src/lib/i18n.ts - 54 + 56 @@ -3066,7 +3066,7 @@ Investmentfonds libs/ui/src/lib/i18n.ts - 55 + 57 @@ -3074,7 +3074,7 @@ Edelmetall libs/ui/src/lib/i18n.ts - 56 + 58 @@ -3082,7 +3082,7 @@ Privates Beteiligungskapital libs/ui/src/lib/i18n.ts - 57 + 59 @@ -3090,7 +3090,7 @@ Aktie libs/ui/src/lib/i18n.ts - 58 + 60 @@ -3130,7 +3130,7 @@ Nordamerika libs/ui/src/lib/i18n.ts - 68 + 70 @@ -3138,7 +3138,7 @@ Afrika libs/ui/src/lib/i18n.ts - 65 + 67 @@ -3146,7 +3146,7 @@ Asien libs/ui/src/lib/i18n.ts - 66 + 68 @@ -3154,7 +3154,7 @@ Europa libs/ui/src/lib/i18n.ts - 67 + 69 @@ -3162,7 +3162,7 @@ Ozeanien libs/ui/src/lib/i18n.ts - 69 + 71 @@ -3170,7 +3170,7 @@ Südamerika libs/ui/src/lib/i18n.ts - 70 + 72 @@ -4546,7 +4546,7 @@ ETFs ohne Länder apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 101 + 95 @@ -4554,7 +4554,7 @@ ETFs ohne Sektoren apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 106 + 100 @@ -4594,7 +4594,7 @@ Japan libs/ui/src/lib/i18n.ts - 86 + 88 @@ -4786,7 +4786,7 @@ Währungen apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 96 + 90 @@ -5408,7 +5408,7 @@ libs/ui/src/lib/i18n.ts - 93 + 95 @@ -5724,7 +5724,7 @@ Extreme Angst libs/ui/src/lib/i18n.ts - 100 + 102 @@ -5732,7 +5732,7 @@ Extreme Gier libs/ui/src/lib/i18n.ts - 101 + 103 @@ -5740,7 +5740,7 @@ Neutral libs/ui/src/lib/i18n.ts - 104 + 106 @@ -6305,7 +6305,7 @@ Benchmarks apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 91 + 85 @@ -6473,7 +6473,7 @@ Australien libs/ui/src/lib/i18n.ts - 74 + 76 @@ -6481,7 +6481,7 @@ Österreich libs/ui/src/lib/i18n.ts - 75 + 77 @@ -6489,7 +6489,7 @@ Belgien libs/ui/src/lib/i18n.ts - 76 + 78 @@ -6497,7 +6497,7 @@ Bulgarien libs/ui/src/lib/i18n.ts - 78 + 80 @@ -6505,7 +6505,7 @@ Kanada libs/ui/src/lib/i18n.ts - 79 + 81 @@ -6513,7 +6513,7 @@ Tschechien libs/ui/src/lib/i18n.ts - 80 + 82 @@ -6521,7 +6521,7 @@ Finnland libs/ui/src/lib/i18n.ts - 81 + 83 @@ -6529,7 +6529,7 @@ Frankreich libs/ui/src/lib/i18n.ts - 82 + 84 @@ -6537,7 +6537,7 @@ Deutschland libs/ui/src/lib/i18n.ts - 83 + 85 @@ -6545,7 +6545,7 @@ Indien libs/ui/src/lib/i18n.ts - 84 + 86 @@ -6553,7 +6553,7 @@ Italien libs/ui/src/lib/i18n.ts - 85 + 87 @@ -6561,7 +6561,7 @@ Niederlande libs/ui/src/lib/i18n.ts - 87 + 89 @@ -6569,7 +6569,7 @@ Neuseeland libs/ui/src/lib/i18n.ts - 88 + 90 @@ -6577,7 +6577,7 @@ Polen libs/ui/src/lib/i18n.ts - 89 + 91 @@ -6585,7 +6585,7 @@ Rumänien libs/ui/src/lib/i18n.ts - 90 + 92 @@ -6593,7 +6593,7 @@ Südafrika libs/ui/src/lib/i18n.ts - 92 + 94 @@ -6601,7 +6601,7 @@ Thailand libs/ui/src/lib/i18n.ts - 94 + 96 @@ -6609,7 +6609,7 @@ USA libs/ui/src/lib/i18n.ts - 97 + 99 @@ -6945,7 +6945,7 @@ Ukraine libs/ui/src/lib/i18n.ts - 95 + 97 @@ -7307,7 +7307,7 @@ Änderung libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + 367 @@ -7315,11 +7315,11 @@ Performance libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + 367 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 378 + 380 @@ -7343,7 +7343,7 @@ Armenien libs/ui/src/lib/i18n.ts - 73 + 75 @@ -7351,7 +7351,7 @@ Britische Jungferninseln libs/ui/src/lib/i18n.ts - 77 + 79 @@ -7359,7 +7359,7 @@ Singapur libs/ui/src/lib/i18n.ts - 91 + 93 @@ -7435,7 +7435,7 @@ Vereinigtes Königreich libs/ui/src/lib/i18n.ts - 96 + 98 @@ -8055,6 +8055,22 @@ 434 + + Alternative Investment + Alternative Investition + + libs/ui/src/lib/i18n.ts + 44 + + + + Collectible + Sammlerobjekt + + libs/ui/src/lib/i18n.ts + 54 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index a00d6d054..5113a051d 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -2799,7 +2799,7 @@ libs/ui/src/lib/i18n.ts - 102 + 104 @@ -2815,7 +2815,7 @@ libs/ui/src/lib/i18n.ts - 103 + 105 @@ -2823,7 +2823,7 @@ Filtrar por... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 350 + 344 @@ -2987,7 +2987,7 @@ Efectivo libs/ui/src/lib/i18n.ts - 44 + 53 @@ -3035,7 +3035,7 @@ Criptomoneda libs/ui/src/lib/i18n.ts - 53 + 55 @@ -3043,7 +3043,7 @@ ETF libs/ui/src/lib/i18n.ts - 54 + 56 @@ -3051,7 +3051,7 @@ Fondo de inversión libs/ui/src/lib/i18n.ts - 55 + 57 @@ -3059,7 +3059,7 @@ Metal precioso libs/ui/src/lib/i18n.ts - 56 + 58 @@ -3067,7 +3067,7 @@ Capital riesgo libs/ui/src/lib/i18n.ts - 57 + 59 @@ -3075,7 +3075,7 @@ Acción libs/ui/src/lib/i18n.ts - 58 + 60 @@ -3115,7 +3115,7 @@ América del Norte libs/ui/src/lib/i18n.ts - 68 + 70 @@ -3123,7 +3123,7 @@ África libs/ui/src/lib/i18n.ts - 65 + 67 @@ -3131,7 +3131,7 @@ Asia libs/ui/src/lib/i18n.ts - 66 + 68 @@ -3139,7 +3139,7 @@ Europa libs/ui/src/lib/i18n.ts - 67 + 69 @@ -3147,7 +3147,7 @@ Oceanía libs/ui/src/lib/i18n.ts - 69 + 71 @@ -3155,7 +3155,7 @@ América del Sur libs/ui/src/lib/i18n.ts - 70 + 72 @@ -4523,7 +4523,7 @@ ETFs sin países apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 101 + 95 @@ -4531,7 +4531,7 @@ ETFs sin sectores apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 106 + 100 @@ -4571,7 +4571,7 @@ Japón libs/ui/src/lib/i18n.ts - 86 + 88 @@ -4763,7 +4763,7 @@ Monedas apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 96 + 90 @@ -5385,7 +5385,7 @@ libs/ui/src/lib/i18n.ts - 93 + 95 @@ -5701,7 +5701,7 @@ Miedo extremo libs/ui/src/lib/i18n.ts - 100 + 102 @@ -5709,7 +5709,7 @@ Avaricia extrema libs/ui/src/lib/i18n.ts - 101 + 103 @@ -5717,7 +5717,7 @@ Neutral libs/ui/src/lib/i18n.ts - 104 + 106 @@ -6282,7 +6282,7 @@ Puntos de referencia apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 91 + 85 @@ -6450,7 +6450,7 @@ Australia libs/ui/src/lib/i18n.ts - 74 + 76 @@ -6458,7 +6458,7 @@ Austria libs/ui/src/lib/i18n.ts - 75 + 77 @@ -6466,7 +6466,7 @@ Bélgica libs/ui/src/lib/i18n.ts - 76 + 78 @@ -6474,7 +6474,7 @@ Bulgaria libs/ui/src/lib/i18n.ts - 78 + 80 @@ -6482,7 +6482,7 @@ Canadá libs/ui/src/lib/i18n.ts - 79 + 81 @@ -6490,7 +6490,7 @@ República Checa libs/ui/src/lib/i18n.ts - 80 + 82 @@ -6498,7 +6498,7 @@ Finlandia libs/ui/src/lib/i18n.ts - 81 + 83 @@ -6506,7 +6506,7 @@ Francia libs/ui/src/lib/i18n.ts - 82 + 84 @@ -6514,7 +6514,7 @@ Alemania libs/ui/src/lib/i18n.ts - 83 + 85 @@ -6522,7 +6522,7 @@ India libs/ui/src/lib/i18n.ts - 84 + 86 @@ -6530,7 +6530,7 @@ Italia libs/ui/src/lib/i18n.ts - 85 + 87 @@ -6538,7 +6538,7 @@ Países Bajos libs/ui/src/lib/i18n.ts - 87 + 89 @@ -6546,7 +6546,7 @@ Nueva Zelanda libs/ui/src/lib/i18n.ts - 88 + 90 @@ -6554,7 +6554,7 @@ Polonia libs/ui/src/lib/i18n.ts - 89 + 91 @@ -6562,7 +6562,7 @@ Rumanía libs/ui/src/lib/i18n.ts - 90 + 92 @@ -6570,7 +6570,7 @@ Sudáfrica libs/ui/src/lib/i18n.ts - 92 + 94 @@ -6578,7 +6578,7 @@ Tailandia libs/ui/src/lib/i18n.ts - 94 + 96 @@ -6586,7 +6586,7 @@ Estados Unidos libs/ui/src/lib/i18n.ts - 97 + 99 @@ -6922,7 +6922,7 @@ Ukraine libs/ui/src/lib/i18n.ts - 95 + 97 @@ -7284,7 +7284,7 @@ Change libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + 367 @@ -7292,11 +7292,11 @@ Performance libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + 367 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 378 + 380 @@ -7320,7 +7320,7 @@ Armenia libs/ui/src/lib/i18n.ts - 73 + 75 @@ -7328,7 +7328,7 @@ British Virgin Islands libs/ui/src/lib/i18n.ts - 77 + 79 @@ -7336,7 +7336,7 @@ Singapore libs/ui/src/lib/i18n.ts - 91 + 93 @@ -7412,7 +7412,7 @@ United Kingdom libs/ui/src/lib/i18n.ts - 96 + 98 @@ -8056,6 +8056,22 @@ 434 + + Alternative Investment + Alternative Investment + + libs/ui/src/lib/i18n.ts + 44 + + + + Collectible + Collectible + + libs/ui/src/lib/i18n.ts + 54 + + diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 2ef2876ff..2cd584425 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -646,7 +646,7 @@ Filtrer par... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 350 + 344 @@ -1370,7 +1370,7 @@ libs/ui/src/lib/i18n.ts - 102 + 104 @@ -1386,7 +1386,7 @@ libs/ui/src/lib/i18n.ts - 103 + 105 @@ -3178,7 +3178,7 @@ Cash libs/ui/src/lib/i18n.ts - 44 + 53 @@ -3226,7 +3226,7 @@ Cryptomonnaie libs/ui/src/lib/i18n.ts - 53 + 55 @@ -3234,7 +3234,7 @@ ETF libs/ui/src/lib/i18n.ts - 54 + 56 @@ -3242,7 +3242,7 @@ SICAV libs/ui/src/lib/i18n.ts - 55 + 57 @@ -3250,7 +3250,7 @@ Métal Précieux libs/ui/src/lib/i18n.ts - 56 + 58 @@ -3258,7 +3258,7 @@ Capital Propre libs/ui/src/lib/i18n.ts - 57 + 59 @@ -3266,7 +3266,7 @@ Action libs/ui/src/lib/i18n.ts - 58 + 60 @@ -3274,7 +3274,7 @@ Afrique libs/ui/src/lib/i18n.ts - 65 + 67 @@ -3282,7 +3282,7 @@ Asie libs/ui/src/lib/i18n.ts - 66 + 68 @@ -3290,7 +3290,7 @@ Europe libs/ui/src/lib/i18n.ts - 67 + 69 @@ -3298,7 +3298,7 @@ Amérique du Nord libs/ui/src/lib/i18n.ts - 68 + 70 @@ -3306,7 +3306,7 @@ Océanie libs/ui/src/lib/i18n.ts - 69 + 71 @@ -3314,7 +3314,7 @@ Amérique du Sud libs/ui/src/lib/i18n.ts - 70 + 72 @@ -4522,7 +4522,7 @@ ETF sans Pays apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 101 + 95 @@ -4530,7 +4530,7 @@ ETF sans Secteurs apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 106 + 100 @@ -4570,7 +4570,7 @@ Japon libs/ui/src/lib/i18n.ts - 86 + 88 @@ -4762,7 +4762,7 @@ Devises apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 96 + 90 @@ -5384,7 +5384,7 @@ libs/ui/src/lib/i18n.ts - 93 + 95 @@ -5700,7 +5700,7 @@ Extreme Peur libs/ui/src/lib/i18n.ts - 100 + 102 @@ -5708,7 +5708,7 @@ Extreme Cupidité libs/ui/src/lib/i18n.ts - 101 + 103 @@ -5716,7 +5716,7 @@ Neutre libs/ui/src/lib/i18n.ts - 104 + 106 @@ -6281,7 +6281,7 @@ Benchmarks apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 91 + 85 @@ -6449,7 +6449,7 @@ Australie libs/ui/src/lib/i18n.ts - 74 + 76 @@ -6457,7 +6457,7 @@ Autriche libs/ui/src/lib/i18n.ts - 75 + 77 @@ -6465,7 +6465,7 @@ Belgique libs/ui/src/lib/i18n.ts - 76 + 78 @@ -6473,7 +6473,7 @@ Bulgarie libs/ui/src/lib/i18n.ts - 78 + 80 @@ -6481,7 +6481,7 @@ Canada libs/ui/src/lib/i18n.ts - 79 + 81 @@ -6489,7 +6489,7 @@ République Tchèque libs/ui/src/lib/i18n.ts - 80 + 82 @@ -6497,7 +6497,7 @@ Finlande libs/ui/src/lib/i18n.ts - 81 + 83 @@ -6505,7 +6505,7 @@ France libs/ui/src/lib/i18n.ts - 82 + 84 @@ -6513,7 +6513,7 @@ Allemagne libs/ui/src/lib/i18n.ts - 83 + 85 @@ -6521,7 +6521,7 @@ Inde libs/ui/src/lib/i18n.ts - 84 + 86 @@ -6529,7 +6529,7 @@ Italie libs/ui/src/lib/i18n.ts - 85 + 87 @@ -6537,7 +6537,7 @@ Pays-Bas libs/ui/src/lib/i18n.ts - 87 + 89 @@ -6545,7 +6545,7 @@ Nouvelle-Zélande libs/ui/src/lib/i18n.ts - 88 + 90 @@ -6553,7 +6553,7 @@ Pologne libs/ui/src/lib/i18n.ts - 89 + 91 @@ -6561,7 +6561,7 @@ Roumanie libs/ui/src/lib/i18n.ts - 90 + 92 @@ -6569,7 +6569,7 @@ Afrique du Sud libs/ui/src/lib/i18n.ts - 92 + 94 @@ -6577,7 +6577,7 @@ Thaïlande libs/ui/src/lib/i18n.ts - 94 + 96 @@ -6585,7 +6585,7 @@ Etats-Unis libs/ui/src/lib/i18n.ts - 97 + 99 @@ -6921,7 +6921,7 @@ Ukraine libs/ui/src/lib/i18n.ts - 95 + 97 @@ -7283,7 +7283,7 @@ Variation libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + 367 @@ -7291,11 +7291,11 @@ Performance libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + 367 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 378 + 380 @@ -7319,7 +7319,7 @@ Arménie libs/ui/src/lib/i18n.ts - 73 + 75 @@ -7327,7 +7327,7 @@ Îles Vierges britanniques libs/ui/src/lib/i18n.ts - 77 + 79 @@ -7335,7 +7335,7 @@ Singapour libs/ui/src/lib/i18n.ts - 91 + 93 @@ -7411,7 +7411,7 @@ Royaume-Uni libs/ui/src/lib/i18n.ts - 96 + 98 @@ -8055,6 +8055,22 @@ 434 + + Alternative Investment + Alternative Investment + + libs/ui/src/lib/i18n.ts + 44 + + + + Collectible + Collectible + + libs/ui/src/lib/i18n.ts + 54 + + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index f5906fb07..7f8a5a414 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -2799,7 +2799,7 @@ libs/ui/src/lib/i18n.ts - 102 + 104 @@ -2815,7 +2815,7 @@ libs/ui/src/lib/i18n.ts - 103 + 105 @@ -2823,7 +2823,7 @@ Filtra per... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 350 + 344 @@ -2987,7 +2987,7 @@ Contanti libs/ui/src/lib/i18n.ts - 44 + 53 @@ -3035,7 +3035,7 @@ Criptovaluta libs/ui/src/lib/i18n.ts - 53 + 55 @@ -3043,7 +3043,7 @@ ETF libs/ui/src/lib/i18n.ts - 54 + 56 @@ -3051,7 +3051,7 @@ Fondo comune di investimento libs/ui/src/lib/i18n.ts - 55 + 57 @@ -3059,7 +3059,7 @@ Metalli preziosi libs/ui/src/lib/i18n.ts - 56 + 58 @@ -3067,7 +3067,7 @@ Azione ordinaria privata libs/ui/src/lib/i18n.ts - 57 + 59 @@ -3075,7 +3075,7 @@ Azione libs/ui/src/lib/i18n.ts - 58 + 60 @@ -3115,7 +3115,7 @@ Nord America libs/ui/src/lib/i18n.ts - 68 + 70 @@ -3123,7 +3123,7 @@ Africa libs/ui/src/lib/i18n.ts - 65 + 67 @@ -3131,7 +3131,7 @@ Asia libs/ui/src/lib/i18n.ts - 66 + 68 @@ -3139,7 +3139,7 @@ Europa libs/ui/src/lib/i18n.ts - 67 + 69 @@ -3147,7 +3147,7 @@ Oceania libs/ui/src/lib/i18n.ts - 69 + 71 @@ -3155,7 +3155,7 @@ Sud America libs/ui/src/lib/i18n.ts - 70 + 72 @@ -4523,7 +4523,7 @@ ETF senza paesi apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 101 + 95 @@ -4531,7 +4531,7 @@ ETF senza settori apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 106 + 100 @@ -4571,7 +4571,7 @@ Giappone libs/ui/src/lib/i18n.ts - 86 + 88 @@ -4763,7 +4763,7 @@ Valute apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 96 + 90 @@ -5385,7 +5385,7 @@ libs/ui/src/lib/i18n.ts - 93 + 95 @@ -5701,7 +5701,7 @@ Paura estrema libs/ui/src/lib/i18n.ts - 100 + 102 @@ -5709,7 +5709,7 @@ Avidità estrema libs/ui/src/lib/i18n.ts - 101 + 103 @@ -5717,7 +5717,7 @@ Neutrale libs/ui/src/lib/i18n.ts - 104 + 106 @@ -6282,7 +6282,7 @@ Benchmarks apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 91 + 85 @@ -6450,7 +6450,7 @@ Australia libs/ui/src/lib/i18n.ts - 74 + 76 @@ -6458,7 +6458,7 @@ Austria libs/ui/src/lib/i18n.ts - 75 + 77 @@ -6466,7 +6466,7 @@ Belgio libs/ui/src/lib/i18n.ts - 76 + 78 @@ -6474,7 +6474,7 @@ Bulgaria libs/ui/src/lib/i18n.ts - 78 + 80 @@ -6482,7 +6482,7 @@ Canada libs/ui/src/lib/i18n.ts - 79 + 81 @@ -6490,7 +6490,7 @@ Repubblica Ceca libs/ui/src/lib/i18n.ts - 80 + 82 @@ -6498,7 +6498,7 @@ Finlandia libs/ui/src/lib/i18n.ts - 81 + 83 @@ -6506,7 +6506,7 @@ Francia libs/ui/src/lib/i18n.ts - 82 + 84 @@ -6514,7 +6514,7 @@ Germania libs/ui/src/lib/i18n.ts - 83 + 85 @@ -6522,7 +6522,7 @@ India libs/ui/src/lib/i18n.ts - 84 + 86 @@ -6530,7 +6530,7 @@ Italia libs/ui/src/lib/i18n.ts - 85 + 87 @@ -6538,7 +6538,7 @@ Olanda libs/ui/src/lib/i18n.ts - 87 + 89 @@ -6546,7 +6546,7 @@ Nuova Zelanda libs/ui/src/lib/i18n.ts - 88 + 90 @@ -6554,7 +6554,7 @@ Polonia libs/ui/src/lib/i18n.ts - 89 + 91 @@ -6562,7 +6562,7 @@ Romania libs/ui/src/lib/i18n.ts - 90 + 92 @@ -6570,7 +6570,7 @@ Sud Africa libs/ui/src/lib/i18n.ts - 92 + 94 @@ -6578,7 +6578,7 @@ Tailandia libs/ui/src/lib/i18n.ts - 94 + 96 @@ -6586,7 +6586,7 @@ Stati Uniti libs/ui/src/lib/i18n.ts - 97 + 99 @@ -6922,7 +6922,7 @@ Ucraina libs/ui/src/lib/i18n.ts - 95 + 97 @@ -7284,7 +7284,7 @@ Cambia libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + 367 @@ -7292,11 +7292,11 @@ Prestazione libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + 367 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 378 + 380 @@ -7320,7 +7320,7 @@ Armenia libs/ui/src/lib/i18n.ts - 73 + 75 @@ -7328,7 +7328,7 @@ Isole Vergini Britanniche libs/ui/src/lib/i18n.ts - 77 + 79 @@ -7336,7 +7336,7 @@ Singapore libs/ui/src/lib/i18n.ts - 91 + 93 @@ -7412,7 +7412,7 @@ United Kingdom libs/ui/src/lib/i18n.ts - 96 + 98 @@ -8056,6 +8056,22 @@ 434 + + Alternative Investment + Alternative Investment + + libs/ui/src/lib/i18n.ts + 44 + + + + Collectible + Collectible + + libs/ui/src/lib/i18n.ts + 54 + + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index 981de4dd9..42bdb1206 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -2798,7 +2798,7 @@ libs/ui/src/lib/i18n.ts - 102 + 104 @@ -2814,7 +2814,7 @@ libs/ui/src/lib/i18n.ts - 103 + 105 @@ -2822,7 +2822,7 @@ Filter op... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 350 + 344 @@ -2986,7 +2986,7 @@ Contant geld libs/ui/src/lib/i18n.ts - 44 + 53 @@ -3034,7 +3034,7 @@ Cryptovaluta libs/ui/src/lib/i18n.ts - 53 + 55 @@ -3042,7 +3042,7 @@ ETF libs/ui/src/lib/i18n.ts - 54 + 56 @@ -3050,7 +3050,7 @@ Beleggingsfonds libs/ui/src/lib/i18n.ts - 55 + 57 @@ -3058,7 +3058,7 @@ Edelmetaal libs/ui/src/lib/i18n.ts - 56 + 58 @@ -3066,7 +3066,7 @@ Private equity libs/ui/src/lib/i18n.ts - 57 + 59 @@ -3074,7 +3074,7 @@ Aandeel libs/ui/src/lib/i18n.ts - 58 + 60 @@ -3114,7 +3114,7 @@ Noord-Amerika libs/ui/src/lib/i18n.ts - 68 + 70 @@ -3122,7 +3122,7 @@ Afrika libs/ui/src/lib/i18n.ts - 65 + 67 @@ -3130,7 +3130,7 @@ Azië libs/ui/src/lib/i18n.ts - 66 + 68 @@ -3138,7 +3138,7 @@ Europa libs/ui/src/lib/i18n.ts - 67 + 69 @@ -3146,7 +3146,7 @@ Oceanië libs/ui/src/lib/i18n.ts - 69 + 71 @@ -3154,7 +3154,7 @@ Zuid-Amerika libs/ui/src/lib/i18n.ts - 70 + 72 @@ -4522,7 +4522,7 @@ ETF’s zonder Landen apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 101 + 95 @@ -4530,7 +4530,7 @@ ETF’s zonder Sectoren apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 106 + 100 @@ -4570,7 +4570,7 @@ Japan libs/ui/src/lib/i18n.ts - 86 + 88 @@ -4762,7 +4762,7 @@ Valuta apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 96 + 90 @@ -5384,7 +5384,7 @@ libs/ui/src/lib/i18n.ts - 93 + 95 @@ -5700,7 +5700,7 @@ Extreme Angst libs/ui/src/lib/i18n.ts - 100 + 102 @@ -5708,7 +5708,7 @@ Extreme Hebzucht libs/ui/src/lib/i18n.ts - 101 + 103 @@ -5716,7 +5716,7 @@ Neutraal libs/ui/src/lib/i18n.ts - 104 + 106 @@ -6281,7 +6281,7 @@ Benchmarks apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 91 + 85 @@ -6449,7 +6449,7 @@ Australië libs/ui/src/lib/i18n.ts - 74 + 76 @@ -6457,7 +6457,7 @@ Oostenrijk libs/ui/src/lib/i18n.ts - 75 + 77 @@ -6465,7 +6465,7 @@ België libs/ui/src/lib/i18n.ts - 76 + 78 @@ -6473,7 +6473,7 @@ Bulgarije libs/ui/src/lib/i18n.ts - 78 + 80 @@ -6481,7 +6481,7 @@ Canada libs/ui/src/lib/i18n.ts - 79 + 81 @@ -6489,7 +6489,7 @@ Tsjechische Republiek libs/ui/src/lib/i18n.ts - 80 + 82 @@ -6497,7 +6497,7 @@ Finland libs/ui/src/lib/i18n.ts - 81 + 83 @@ -6505,7 +6505,7 @@ Frankrijk libs/ui/src/lib/i18n.ts - 82 + 84 @@ -6513,7 +6513,7 @@ Duitsland libs/ui/src/lib/i18n.ts - 83 + 85 @@ -6521,7 +6521,7 @@ India libs/ui/src/lib/i18n.ts - 84 + 86 @@ -6529,7 +6529,7 @@ Italië libs/ui/src/lib/i18n.ts - 85 + 87 @@ -6537,7 +6537,7 @@ Nederland libs/ui/src/lib/i18n.ts - 87 + 89 @@ -6545,7 +6545,7 @@ Nieuw-Zeeland libs/ui/src/lib/i18n.ts - 88 + 90 @@ -6553,7 +6553,7 @@ Polen libs/ui/src/lib/i18n.ts - 89 + 91 @@ -6561,7 +6561,7 @@ Roemenië libs/ui/src/lib/i18n.ts - 90 + 92 @@ -6569,7 +6569,7 @@ Zuid-Afrika libs/ui/src/lib/i18n.ts - 92 + 94 @@ -6577,7 +6577,7 @@ Thailand libs/ui/src/lib/i18n.ts - 94 + 96 @@ -6585,7 +6585,7 @@ Verenigde Station libs/ui/src/lib/i18n.ts - 97 + 99 @@ -6921,7 +6921,7 @@ Oekraïne libs/ui/src/lib/i18n.ts - 95 + 97 @@ -7283,7 +7283,7 @@ Aanpassen libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + 367 @@ -7291,11 +7291,11 @@ Prestatie libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + 367 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 378 + 380 @@ -7319,7 +7319,7 @@ Armenië libs/ui/src/lib/i18n.ts - 73 + 75 @@ -7327,7 +7327,7 @@ Britse Maagdeneilanden libs/ui/src/lib/i18n.ts - 77 + 79 @@ -7335,7 +7335,7 @@ Singapore libs/ui/src/lib/i18n.ts - 91 + 93 @@ -7411,7 +7411,7 @@ Verenigd Koninkrijk libs/ui/src/lib/i18n.ts - 96 + 98 @@ -8055,6 +8055,22 @@ 434 + + Alternative Investment + Alternative Investment + + libs/ui/src/lib/i18n.ts + 44 + + + + Collectible + Collectible + + libs/ui/src/lib/i18n.ts + 54 + + diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index a033efef6..01689f372 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -1163,7 +1163,7 @@ Waluty apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 96 + 90 @@ -1171,7 +1171,7 @@ ETF-y bez Krajów apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 101 + 95 @@ -1179,7 +1179,7 @@ ETF-y bez Sektorów apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 106 + 100 @@ -1195,7 +1195,7 @@ Filtruj według... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 350 + 344 @@ -2043,7 +2043,7 @@ libs/ui/src/lib/i18n.ts - 102 + 104 @@ -2059,7 +2059,7 @@ libs/ui/src/lib/i18n.ts - 103 + 105 @@ -5008,7 +5008,7 @@ libs/ui/src/lib/i18n.ts - 93 + 95 @@ -5392,7 +5392,7 @@ Japonia libs/ui/src/lib/i18n.ts - 86 + 88 @@ -5532,7 +5532,7 @@ Gotówka libs/ui/src/lib/i18n.ts - 44 + 53 @@ -5580,7 +5580,7 @@ Kryptowaluta libs/ui/src/lib/i18n.ts - 53 + 55 @@ -5588,7 +5588,7 @@ ETF libs/ui/src/lib/i18n.ts - 54 + 56 @@ -5596,7 +5596,7 @@ Fundusz Wzajemny libs/ui/src/lib/i18n.ts - 55 + 57 @@ -5604,7 +5604,7 @@ Metal Szlachetny libs/ui/src/lib/i18n.ts - 56 + 58 @@ -5612,7 +5612,7 @@ Prywatny Kapitał libs/ui/src/lib/i18n.ts - 57 + 59 @@ -5620,7 +5620,7 @@ Akcje libs/ui/src/lib/i18n.ts - 58 + 60 @@ -5628,7 +5628,7 @@ Afryka libs/ui/src/lib/i18n.ts - 65 + 67 @@ -5636,7 +5636,7 @@ Azja libs/ui/src/lib/i18n.ts - 66 + 68 @@ -5644,7 +5644,7 @@ Europa libs/ui/src/lib/i18n.ts - 67 + 69 @@ -5652,7 +5652,7 @@ Ameryka Północna libs/ui/src/lib/i18n.ts - 68 + 70 @@ -5660,7 +5660,7 @@ Oceania libs/ui/src/lib/i18n.ts - 69 + 71 @@ -5668,7 +5668,7 @@ Ameryka Południowa libs/ui/src/lib/i18n.ts - 70 + 72 @@ -5676,7 +5676,7 @@ Skrajny Strach libs/ui/src/lib/i18n.ts - 100 + 102 @@ -5684,7 +5684,7 @@ Skrajna Zachłanność libs/ui/src/lib/i18n.ts - 101 + 103 @@ -5692,7 +5692,7 @@ Neutralny libs/ui/src/lib/i18n.ts - 104 + 106 @@ -6281,7 +6281,7 @@ Punkty Odniesienia apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 91 + 85 @@ -6449,7 +6449,7 @@ Australia libs/ui/src/lib/i18n.ts - 74 + 76 @@ -6457,7 +6457,7 @@ Austria libs/ui/src/lib/i18n.ts - 75 + 77 @@ -6465,7 +6465,7 @@ Belgia libs/ui/src/lib/i18n.ts - 76 + 78 @@ -6473,7 +6473,7 @@ Bułgaria libs/ui/src/lib/i18n.ts - 78 + 80 @@ -6481,7 +6481,7 @@ Kanada libs/ui/src/lib/i18n.ts - 79 + 81 @@ -6489,7 +6489,7 @@ Czechy libs/ui/src/lib/i18n.ts - 80 + 82 @@ -6497,7 +6497,7 @@ Finlandia libs/ui/src/lib/i18n.ts - 81 + 83 @@ -6505,7 +6505,7 @@ Francja libs/ui/src/lib/i18n.ts - 82 + 84 @@ -6513,7 +6513,7 @@ Niemcy libs/ui/src/lib/i18n.ts - 83 + 85 @@ -6521,7 +6521,7 @@ Indie libs/ui/src/lib/i18n.ts - 84 + 86 @@ -6529,7 +6529,7 @@ Włochy libs/ui/src/lib/i18n.ts - 85 + 87 @@ -6537,7 +6537,7 @@ Holandia libs/ui/src/lib/i18n.ts - 87 + 89 @@ -6545,7 +6545,7 @@ Nowa Zelandia libs/ui/src/lib/i18n.ts - 88 + 90 @@ -6553,7 +6553,7 @@ Polska libs/ui/src/lib/i18n.ts - 89 + 91 @@ -6561,7 +6561,7 @@ Rumunia libs/ui/src/lib/i18n.ts - 90 + 92 @@ -6569,7 +6569,7 @@ Południowa Afryka libs/ui/src/lib/i18n.ts - 92 + 94 @@ -6577,7 +6577,7 @@ Tajlandia libs/ui/src/lib/i18n.ts - 94 + 96 @@ -6585,7 +6585,7 @@ Stany Zjednoczone libs/ui/src/lib/i18n.ts - 97 + 99 @@ -6921,7 +6921,7 @@ Ukraina libs/ui/src/lib/i18n.ts - 95 + 97 @@ -7283,7 +7283,7 @@ Zmiana libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + 367 @@ -7291,11 +7291,11 @@ Wydajność libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + 367 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 378 + 380 @@ -7319,7 +7319,7 @@ Armenia libs/ui/src/lib/i18n.ts - 73 + 75 @@ -7327,7 +7327,7 @@ Brytyjskie Wyspy Dziewicze libs/ui/src/lib/i18n.ts - 77 + 79 @@ -7335,7 +7335,7 @@ Singapur libs/ui/src/lib/i18n.ts - 91 + 93 @@ -7411,7 +7411,7 @@ Wielka Brytania libs/ui/src/lib/i18n.ts - 96 + 98 @@ -8055,6 +8055,22 @@ 434 + + Alternative Investment + Alternative Investment + + libs/ui/src/lib/i18n.ts + 44 + + + + Collectible + Collectible + + libs/ui/src/lib/i18n.ts + 54 + + diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 1c9ac7f97..63d7cb3ec 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -646,7 +646,7 @@ Filtrar por... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 350 + 344 @@ -1242,7 +1242,7 @@ libs/ui/src/lib/i18n.ts - 102 + 104 @@ -1258,7 +1258,7 @@ libs/ui/src/lib/i18n.ts - 103 + 105 @@ -3026,7 +3026,7 @@ Dinheiro libs/ui/src/lib/i18n.ts - 44 + 53 @@ -3074,7 +3074,7 @@ Criptomoedas libs/ui/src/lib/i18n.ts - 53 + 55 @@ -3082,7 +3082,7 @@ ETF libs/ui/src/lib/i18n.ts - 54 + 56 @@ -3090,7 +3090,7 @@ Fundo de Investimento libs/ui/src/lib/i18n.ts - 55 + 57 @@ -3098,7 +3098,7 @@ Metal Precioso libs/ui/src/lib/i18n.ts - 56 + 58 @@ -3106,7 +3106,7 @@ Private Equity libs/ui/src/lib/i18n.ts - 57 + 59 @@ -3114,7 +3114,7 @@ Ação libs/ui/src/lib/i18n.ts - 58 + 60 @@ -3122,7 +3122,7 @@ África libs/ui/src/lib/i18n.ts - 65 + 67 @@ -3130,7 +3130,7 @@ Ásia libs/ui/src/lib/i18n.ts - 66 + 68 @@ -3138,7 +3138,7 @@ Europa libs/ui/src/lib/i18n.ts - 67 + 69 @@ -3146,7 +3146,7 @@ América do Norte libs/ui/src/lib/i18n.ts - 68 + 70 @@ -3154,7 +3154,7 @@ Oceânia libs/ui/src/lib/i18n.ts - 69 + 71 @@ -3162,7 +3162,7 @@ América do Sul libs/ui/src/lib/i18n.ts - 70 + 72 @@ -4522,7 +4522,7 @@ ETFs sem países apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 101 + 95 @@ -4530,7 +4530,7 @@ ETFs sem setores apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 106 + 100 @@ -4570,7 +4570,7 @@ Japão libs/ui/src/lib/i18n.ts - 86 + 88 @@ -4762,7 +4762,7 @@ Moedas apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 96 + 90 @@ -5384,7 +5384,7 @@ libs/ui/src/lib/i18n.ts - 93 + 95 @@ -5700,7 +5700,7 @@ Medo Extremo libs/ui/src/lib/i18n.ts - 100 + 102 @@ -5708,7 +5708,7 @@ Ganância Extrema libs/ui/src/lib/i18n.ts - 101 + 103 @@ -5716,7 +5716,7 @@ Neutro libs/ui/src/lib/i18n.ts - 104 + 106 @@ -6281,7 +6281,7 @@ Referências apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 91 + 85 @@ -6449,7 +6449,7 @@ Austrália libs/ui/src/lib/i18n.ts - 74 + 76 @@ -6457,7 +6457,7 @@ Áustria libs/ui/src/lib/i18n.ts - 75 + 77 @@ -6465,7 +6465,7 @@ Bélgica libs/ui/src/lib/i18n.ts - 76 + 78 @@ -6473,7 +6473,7 @@ Bulgária libs/ui/src/lib/i18n.ts - 78 + 80 @@ -6481,7 +6481,7 @@ Canadá libs/ui/src/lib/i18n.ts - 79 + 81 @@ -6489,7 +6489,7 @@ República Tcheca libs/ui/src/lib/i18n.ts - 80 + 82 @@ -6497,7 +6497,7 @@ Finlândia libs/ui/src/lib/i18n.ts - 81 + 83 @@ -6505,7 +6505,7 @@ França libs/ui/src/lib/i18n.ts - 82 + 84 @@ -6513,7 +6513,7 @@ Alemanha libs/ui/src/lib/i18n.ts - 83 + 85 @@ -6521,7 +6521,7 @@ Índia libs/ui/src/lib/i18n.ts - 84 + 86 @@ -6529,7 +6529,7 @@ Itália libs/ui/src/lib/i18n.ts - 85 + 87 @@ -6537,7 +6537,7 @@ Holanda libs/ui/src/lib/i18n.ts - 87 + 89 @@ -6545,7 +6545,7 @@ Nova Zelândia libs/ui/src/lib/i18n.ts - 88 + 90 @@ -6553,7 +6553,7 @@ Polônia libs/ui/src/lib/i18n.ts - 89 + 91 @@ -6561,7 +6561,7 @@ Romênia libs/ui/src/lib/i18n.ts - 90 + 92 @@ -6569,7 +6569,7 @@ África do Sul libs/ui/src/lib/i18n.ts - 92 + 94 @@ -6577,7 +6577,7 @@ Tailândia libs/ui/src/lib/i18n.ts - 94 + 96 @@ -6585,7 +6585,7 @@ Estados Unidos libs/ui/src/lib/i18n.ts - 97 + 99 @@ -6921,7 +6921,7 @@ Ukraine libs/ui/src/lib/i18n.ts - 95 + 97 @@ -7283,7 +7283,7 @@ Mudar libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + 367 @@ -7291,11 +7291,11 @@ Performance libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + 367 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 378 + 380 @@ -7319,7 +7319,7 @@ Armenia libs/ui/src/lib/i18n.ts - 73 + 75 @@ -7327,7 +7327,7 @@ British Virgin Islands libs/ui/src/lib/i18n.ts - 77 + 79 @@ -7335,7 +7335,7 @@ Singapore libs/ui/src/lib/i18n.ts - 91 + 93 @@ -7411,7 +7411,7 @@ United Kingdom libs/ui/src/lib/i18n.ts - 96 + 98 @@ -8055,6 +8055,22 @@ 434 + + Alternative Investment + Alternative Investment + + libs/ui/src/lib/i18n.ts + 44 + + + + Collectible + Collectible + + libs/ui/src/lib/i18n.ts + 54 + + diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index d0a24a9ac..1f1126391 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -1123,7 +1123,7 @@ Para Birimleri apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 96 + 90 @@ -1131,7 +1131,7 @@ Ülkesi Olmayan ETF’ler apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 101 + 95 @@ -1139,7 +1139,7 @@ Sektörü Olmayan ETF’ler apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 106 + 100 @@ -1147,7 +1147,7 @@ Filtrele... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 350 + 344 @@ -1891,7 +1891,7 @@ libs/ui/src/lib/i18n.ts - 102 + 104 @@ -1907,7 +1907,7 @@ libs/ui/src/lib/i18n.ts - 103 + 105 @@ -4492,7 +4492,7 @@ libs/ui/src/lib/i18n.ts - 93 + 95 @@ -5108,7 +5108,7 @@ Japonya libs/ui/src/lib/i18n.ts - 86 + 88 @@ -5240,7 +5240,7 @@ Nakit libs/ui/src/lib/i18n.ts - 44 + 53 @@ -5288,7 +5288,7 @@ Kriptopara libs/ui/src/lib/i18n.ts - 53 + 55 @@ -5296,7 +5296,7 @@ Borsada İşlem Gören Fonlar (ETF) libs/ui/src/lib/i18n.ts - 54 + 56 @@ -5304,7 +5304,7 @@ Borsada İşlem Görmeyen Fonlar (Mutual Fund) libs/ui/src/lib/i18n.ts - 55 + 57 @@ -5312,7 +5312,7 @@ Kıymetli Metaller libs/ui/src/lib/i18n.ts - 56 + 58 @@ -5320,7 +5320,7 @@ Özel Menkul Kıymetler libs/ui/src/lib/i18n.ts - 57 + 59 @@ -5328,7 +5328,7 @@ Hisse Senetleri libs/ui/src/lib/i18n.ts - 58 + 60 @@ -5336,7 +5336,7 @@ Afrika libs/ui/src/lib/i18n.ts - 65 + 67 @@ -5344,7 +5344,7 @@ Asya libs/ui/src/lib/i18n.ts - 66 + 68 @@ -5352,7 +5352,7 @@ Avrupa libs/ui/src/lib/i18n.ts - 67 + 69 @@ -5360,7 +5360,7 @@ Kuzey Amerika libs/ui/src/lib/i18n.ts - 68 + 70 @@ -5368,7 +5368,7 @@ Okyanusya libs/ui/src/lib/i18n.ts - 69 + 71 @@ -5376,7 +5376,7 @@ Güney Amerika libs/ui/src/lib/i18n.ts - 70 + 72 @@ -5700,7 +5700,7 @@ Aşırı Korku libs/ui/src/lib/i18n.ts - 100 + 102 @@ -5708,7 +5708,7 @@ Aşırı Açgözlülük libs/ui/src/lib/i18n.ts - 101 + 103 @@ -5716,7 +5716,7 @@ Nötr libs/ui/src/lib/i18n.ts - 104 + 106 @@ -6281,7 +6281,7 @@ Kıyaslamalar apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 91 + 85 @@ -6449,7 +6449,7 @@ Avustralya libs/ui/src/lib/i18n.ts - 74 + 76 @@ -6457,7 +6457,7 @@ Avusturya libs/ui/src/lib/i18n.ts - 75 + 77 @@ -6465,7 +6465,7 @@ Belçika libs/ui/src/lib/i18n.ts - 76 + 78 @@ -6473,7 +6473,7 @@ Bulgaristan libs/ui/src/lib/i18n.ts - 78 + 80 @@ -6481,7 +6481,7 @@ Kanada libs/ui/src/lib/i18n.ts - 79 + 81 @@ -6489,7 +6489,7 @@ Çek Cumhuriyeti libs/ui/src/lib/i18n.ts - 80 + 82 @@ -6497,7 +6497,7 @@ Finlandiya libs/ui/src/lib/i18n.ts - 81 + 83 @@ -6505,7 +6505,7 @@ Fransa libs/ui/src/lib/i18n.ts - 82 + 84 @@ -6513,7 +6513,7 @@ Almanya libs/ui/src/lib/i18n.ts - 83 + 85 @@ -6521,7 +6521,7 @@ Hindistan libs/ui/src/lib/i18n.ts - 84 + 86 @@ -6529,7 +6529,7 @@ İtalya libs/ui/src/lib/i18n.ts - 85 + 87 @@ -6537,7 +6537,7 @@ Hollanda libs/ui/src/lib/i18n.ts - 87 + 89 @@ -6545,7 +6545,7 @@ Yeni Zelanda libs/ui/src/lib/i18n.ts - 88 + 90 @@ -6553,7 +6553,7 @@ Polonya libs/ui/src/lib/i18n.ts - 89 + 91 @@ -6561,7 +6561,7 @@ Romanya libs/ui/src/lib/i18n.ts - 90 + 92 @@ -6569,7 +6569,7 @@ Güney Afrika libs/ui/src/lib/i18n.ts - 92 + 94 @@ -6577,7 +6577,7 @@ Tayland libs/ui/src/lib/i18n.ts - 94 + 96 @@ -6585,7 +6585,7 @@ Amerika Birleşik Devletleri libs/ui/src/lib/i18n.ts - 97 + 99 @@ -6921,7 +6921,7 @@ Ukraine libs/ui/src/lib/i18n.ts - 95 + 97 @@ -7283,7 +7283,7 @@ Değişim libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + 367 @@ -7291,11 +7291,11 @@ Performans libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + 367 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 378 + 380 @@ -7319,7 +7319,7 @@ Ermenistan libs/ui/src/lib/i18n.ts - 73 + 75 @@ -7327,7 +7327,7 @@ Britanya Virjin Adaları libs/ui/src/lib/i18n.ts - 77 + 79 @@ -7335,7 +7335,7 @@ Singapur libs/ui/src/lib/i18n.ts - 91 + 93 @@ -7411,7 +7411,7 @@ Birleşik Krallık libs/ui/src/lib/i18n.ts - 96 + 98 @@ -8055,6 +8055,22 @@ 434 + + Alternative Investment + Alternative Investment + + libs/ui/src/lib/i18n.ts + 44 + + + + Collectible + Collectible + + libs/ui/src/lib/i18n.ts + 54 + + diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf index f865634f0..06150c567 100644 --- a/apps/client/src/locales/messages.uk.xlf +++ b/apps/client/src/locales/messages.uk.xlf @@ -1155,7 +1155,7 @@ Порівняльні показники apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 91 + 85 @@ -1163,7 +1163,7 @@ Валюти apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 96 + 90 @@ -1171,7 +1171,7 @@ ETF без країн apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 101 + 95 @@ -1179,7 +1179,7 @@ ETF без секторів apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 106 + 100 @@ -1187,7 +1187,7 @@ Фільтрувати за... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 350 + 344 @@ -2487,7 +2487,7 @@ libs/ui/src/lib/i18n.ts - 102 + 104 @@ -2503,7 +2503,7 @@ libs/ui/src/lib/i18n.ts - 103 + 105 @@ -5595,7 +5595,7 @@ libs/ui/src/lib/i18n.ts - 93 + 95 @@ -6783,7 +6783,7 @@ Готівка libs/ui/src/lib/i18n.ts - 44 + 53 @@ -6839,7 +6839,7 @@ Криптовалюта libs/ui/src/lib/i18n.ts - 53 + 55 @@ -6847,7 +6847,7 @@ ETF libs/ui/src/lib/i18n.ts - 54 + 56 @@ -6855,7 +6855,7 @@ Взаємний фонд libs/ui/src/lib/i18n.ts - 55 + 57 @@ -6863,7 +6863,7 @@ Дорогоцінний метал libs/ui/src/lib/i18n.ts - 56 + 58 @@ -6871,7 +6871,7 @@ Приватний капітал libs/ui/src/lib/i18n.ts - 57 + 59 @@ -6879,7 +6879,7 @@ Акція libs/ui/src/lib/i18n.ts - 58 + 60 @@ -6887,7 +6887,7 @@ Африка libs/ui/src/lib/i18n.ts - 65 + 67 @@ -6895,7 +6895,7 @@ Азія libs/ui/src/lib/i18n.ts - 66 + 68 @@ -6903,7 +6903,7 @@ Європа libs/ui/src/lib/i18n.ts - 67 + 69 @@ -6911,7 +6911,7 @@ Північна Америка libs/ui/src/lib/i18n.ts - 68 + 70 @@ -6919,7 +6919,7 @@ Океанія libs/ui/src/lib/i18n.ts - 69 + 71 @@ -6927,7 +6927,7 @@ Південна Америка libs/ui/src/lib/i18n.ts - 70 + 72 @@ -6935,7 +6935,7 @@ Австралія libs/ui/src/lib/i18n.ts - 74 + 76 @@ -6943,7 +6943,7 @@ Австрія libs/ui/src/lib/i18n.ts - 75 + 77 @@ -6951,7 +6951,7 @@ Бельгія libs/ui/src/lib/i18n.ts - 76 + 78 @@ -6959,7 +6959,7 @@ Болгарія libs/ui/src/lib/i18n.ts - 78 + 80 @@ -6967,7 +6967,7 @@ Канада libs/ui/src/lib/i18n.ts - 79 + 81 @@ -6975,7 +6975,7 @@ Чеська Республіка libs/ui/src/lib/i18n.ts - 80 + 82 @@ -6983,7 +6983,7 @@ Фінляндія libs/ui/src/lib/i18n.ts - 81 + 83 @@ -6991,7 +6991,7 @@ Франція libs/ui/src/lib/i18n.ts - 82 + 84 @@ -6999,7 +6999,7 @@ Німеччина libs/ui/src/lib/i18n.ts - 83 + 85 @@ -7007,7 +7007,7 @@ Індія libs/ui/src/lib/i18n.ts - 84 + 86 @@ -7015,7 +7015,7 @@ Італія libs/ui/src/lib/i18n.ts - 85 + 87 @@ -7023,7 +7023,7 @@ Японія libs/ui/src/lib/i18n.ts - 86 + 88 @@ -7031,7 +7031,7 @@ Нідерланди libs/ui/src/lib/i18n.ts - 87 + 89 @@ -7039,7 +7039,7 @@ Нова Зеландія libs/ui/src/lib/i18n.ts - 88 + 90 @@ -7047,7 +7047,7 @@ Польща libs/ui/src/lib/i18n.ts - 89 + 91 @@ -7055,7 +7055,7 @@ Румунія libs/ui/src/lib/i18n.ts - 90 + 92 @@ -7063,7 +7063,7 @@ Південна Африка libs/ui/src/lib/i18n.ts - 92 + 94 @@ -7071,7 +7071,7 @@ Таїланд libs/ui/src/lib/i18n.ts - 94 + 96 @@ -7079,7 +7079,7 @@ Україна libs/ui/src/lib/i18n.ts - 95 + 97 @@ -7087,7 +7087,7 @@ Сполучені Штати libs/ui/src/lib/i18n.ts - 97 + 99 @@ -7095,7 +7095,7 @@ Екстремальний страх libs/ui/src/lib/i18n.ts - 100 + 102 @@ -7103,7 +7103,7 @@ Екстремальна жадібність libs/ui/src/lib/i18n.ts - 101 + 103 @@ -7111,7 +7111,7 @@ Нейтрально libs/ui/src/lib/i18n.ts - 104 + 106 @@ -7283,7 +7283,7 @@ Change libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + 367 @@ -7291,11 +7291,11 @@ Performance libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + 367 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 378 + 380 @@ -7319,7 +7319,7 @@ Armenia libs/ui/src/lib/i18n.ts - 73 + 75 @@ -7327,7 +7327,7 @@ British Virgin Islands libs/ui/src/lib/i18n.ts - 77 + 79 @@ -7335,7 +7335,7 @@ Singapore libs/ui/src/lib/i18n.ts - 91 + 93 @@ -7411,7 +7411,7 @@ United Kingdom libs/ui/src/lib/i18n.ts - 96 + 98 @@ -8055,6 +8055,22 @@ 434 + + Alternative Investment + Alternative Investment + + libs/ui/src/lib/i18n.ts + 44 + + + + Collectible + Collectible + + libs/ui/src/lib/i18n.ts + 54 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index 50f5929d7..3f4af3859 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -1111,21 +1111,21 @@ Currencies apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 96 + 90 ETFs without Countries apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 101 + 95 ETFs without Sectors apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 106 + 100 @@ -1139,7 +1139,7 @@ Filter by... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 350 + 344 @@ -1930,7 +1930,7 @@ libs/ui/src/lib/i18n.ts - 102 + 104 @@ -1945,7 +1945,7 @@ libs/ui/src/lib/i18n.ts - 103 + 105 @@ -4608,7 +4608,7 @@ libs/ui/src/lib/i18n.ts - 93 + 95 @@ -4969,7 +4969,7 @@ Japan libs/ui/src/lib/i18n.ts - 86 + 88 @@ -5092,7 +5092,7 @@ Cash libs/ui/src/lib/i18n.ts - 44 + 53 @@ -5134,105 +5134,105 @@ Cryptocurrency libs/ui/src/lib/i18n.ts - 53 + 55 ETF libs/ui/src/lib/i18n.ts - 54 + 56 Mutual Fund libs/ui/src/lib/i18n.ts - 55 + 57 Precious Metal libs/ui/src/lib/i18n.ts - 56 + 58 Private Equity libs/ui/src/lib/i18n.ts - 57 + 59 Stock libs/ui/src/lib/i18n.ts - 58 + 60 Africa libs/ui/src/lib/i18n.ts - 65 + 67 Asia libs/ui/src/lib/i18n.ts - 66 + 68 Europe libs/ui/src/lib/i18n.ts - 67 + 69 North America libs/ui/src/lib/i18n.ts - 68 + 70 Oceania libs/ui/src/lib/i18n.ts - 69 + 71 South America libs/ui/src/lib/i18n.ts - 70 + 72 Extreme Fear libs/ui/src/lib/i18n.ts - 100 + 102 Extreme Greed libs/ui/src/lib/i18n.ts - 101 + 103 Neutral libs/ui/src/lib/i18n.ts - 104 + 106 @@ -5725,7 +5725,7 @@ Benchmarks apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 91 + 85 @@ -5767,35 +5767,35 @@ Thailand libs/ui/src/lib/i18n.ts - 94 + 96 India libs/ui/src/lib/i18n.ts - 84 + 86 Austria libs/ui/src/lib/i18n.ts - 75 + 77 Poland libs/ui/src/lib/i18n.ts - 89 + 91 Italy libs/ui/src/lib/i18n.ts - 85 + 87 @@ -5837,21 +5837,21 @@ Canada libs/ui/src/lib/i18n.ts - 79 + 81 New Zealand libs/ui/src/lib/i18n.ts - 88 + 90 Netherlands libs/ui/src/lib/i18n.ts - 87 + 89 @@ -5886,21 +5886,21 @@ Romania libs/ui/src/lib/i18n.ts - 90 + 92 Germany libs/ui/src/lib/i18n.ts - 83 + 85 United States libs/ui/src/lib/i18n.ts - 97 + 99 @@ -5914,7 +5914,7 @@ Belgium libs/ui/src/lib/i18n.ts - 76 + 78 @@ -5928,28 +5928,28 @@ Czech Republic libs/ui/src/lib/i18n.ts - 80 + 82 Australia libs/ui/src/lib/i18n.ts - 74 + 76 South Africa libs/ui/src/lib/i18n.ts - 92 + 94 Bulgaria libs/ui/src/lib/i18n.ts - 78 + 80 @@ -5963,14 +5963,14 @@ Finland libs/ui/src/lib/i18n.ts - 81 + 83 France libs/ui/src/lib/i18n.ts - 82 + 84 @@ -6243,7 +6243,7 @@ Ukraine libs/ui/src/lib/i18n.ts - 95 + 97 @@ -6583,18 +6583,18 @@ Change libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + 367 Performance libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + 367 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 378 + 380 @@ -6608,21 +6608,21 @@ Singapore libs/ui/src/lib/i18n.ts - 91 + 93 Armenia libs/ui/src/lib/i18n.ts - 73 + 75 British Virgin Islands libs/ui/src/lib/i18n.ts - 77 + 79 @@ -6696,7 +6696,7 @@ United Kingdom libs/ui/src/lib/i18n.ts - 96 + 98 @@ -7242,6 +7242,20 @@ 434 + + Alternative Investment + + libs/ui/src/lib/i18n.ts + 44 + + + + Collectible + + libs/ui/src/lib/i18n.ts + 54 + + diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index df3c3a5b0..0bfac761b 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -1172,7 +1172,7 @@ 货币 apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 96 + 90 @@ -1180,7 +1180,7 @@ 没有国家的 ETF apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 101 + 95 @@ -1188,7 +1188,7 @@ 无行业类别的 ETF apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 106 + 100 @@ -1204,7 +1204,7 @@ 过滤... apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 350 + 344 @@ -2052,7 +2052,7 @@ libs/ui/src/lib/i18n.ts - 102 + 104 @@ -2068,7 +2068,7 @@ libs/ui/src/lib/i18n.ts - 103 + 105 @@ -5041,7 +5041,7 @@ libs/ui/src/lib/i18n.ts - 93 + 95 @@ -5449,7 +5449,7 @@ 日本 libs/ui/src/lib/i18n.ts - 86 + 88 @@ -5589,7 +5589,7 @@ 现金 libs/ui/src/lib/i18n.ts - 44 + 53 @@ -5637,7 +5637,7 @@ 加密货币 libs/ui/src/lib/i18n.ts - 53 + 55 @@ -5645,7 +5645,7 @@ 交易所交易基金 libs/ui/src/lib/i18n.ts - 54 + 56 @@ -5653,7 +5653,7 @@ 共同基金 libs/ui/src/lib/i18n.ts - 55 + 57 @@ -5661,7 +5661,7 @@ 贵金属 libs/ui/src/lib/i18n.ts - 56 + 58 @@ -5669,7 +5669,7 @@ 私募股权 libs/ui/src/lib/i18n.ts - 57 + 59 @@ -5677,7 +5677,7 @@ 股票 libs/ui/src/lib/i18n.ts - 58 + 60 @@ -5685,7 +5685,7 @@ 非洲 libs/ui/src/lib/i18n.ts - 65 + 67 @@ -5693,7 +5693,7 @@ 亚洲 libs/ui/src/lib/i18n.ts - 66 + 68 @@ -5701,7 +5701,7 @@ 欧洲 libs/ui/src/lib/i18n.ts - 67 + 69 @@ -5709,7 +5709,7 @@ 北美 libs/ui/src/lib/i18n.ts - 68 + 70 @@ -5717,7 +5717,7 @@ 大洋洲 libs/ui/src/lib/i18n.ts - 69 + 71 @@ -5725,7 +5725,7 @@ 南美洲 libs/ui/src/lib/i18n.ts - 70 + 72 @@ -5733,7 +5733,7 @@ 极度恐惧 libs/ui/src/lib/i18n.ts - 100 + 102 @@ -5741,7 +5741,7 @@ 极度贪婪 libs/ui/src/lib/i18n.ts - 101 + 103 @@ -5749,7 +5749,7 @@ 中性的 libs/ui/src/lib/i18n.ts - 104 + 106 @@ -6282,7 +6282,7 @@ 基准 apps/client/src/app/components/admin-market-data/admin-market-data.component.ts - 91 + 85 @@ -6450,7 +6450,7 @@ 澳大利亚 libs/ui/src/lib/i18n.ts - 74 + 76 @@ -6458,7 +6458,7 @@ 奥地利 libs/ui/src/lib/i18n.ts - 75 + 77 @@ -6466,7 +6466,7 @@ 比利时 libs/ui/src/lib/i18n.ts - 76 + 78 @@ -6474,7 +6474,7 @@ 保加利亚 libs/ui/src/lib/i18n.ts - 78 + 80 @@ -6482,7 +6482,7 @@ 加拿大 libs/ui/src/lib/i18n.ts - 79 + 81 @@ -6490,7 +6490,7 @@ 捷克共和国 libs/ui/src/lib/i18n.ts - 80 + 82 @@ -6498,7 +6498,7 @@ 芬兰 libs/ui/src/lib/i18n.ts - 81 + 83 @@ -6506,7 +6506,7 @@ 法国 libs/ui/src/lib/i18n.ts - 82 + 84 @@ -6514,7 +6514,7 @@ 德国 libs/ui/src/lib/i18n.ts - 83 + 85 @@ -6522,7 +6522,7 @@ 印度 libs/ui/src/lib/i18n.ts - 84 + 86 @@ -6530,7 +6530,7 @@ 意大利 libs/ui/src/lib/i18n.ts - 85 + 87 @@ -6538,7 +6538,7 @@ 荷兰 libs/ui/src/lib/i18n.ts - 87 + 89 @@ -6546,7 +6546,7 @@ 新西兰 libs/ui/src/lib/i18n.ts - 88 + 90 @@ -6554,7 +6554,7 @@ 波兰 libs/ui/src/lib/i18n.ts - 89 + 91 @@ -6562,7 +6562,7 @@ 罗马尼亚 libs/ui/src/lib/i18n.ts - 90 + 92 @@ -6570,7 +6570,7 @@ 南非 libs/ui/src/lib/i18n.ts - 92 + 94 @@ -6578,7 +6578,7 @@ 泰国 libs/ui/src/lib/i18n.ts - 94 + 96 @@ -6586,7 +6586,7 @@ 美国 libs/ui/src/lib/i18n.ts - 97 + 99 @@ -6922,7 +6922,7 @@ 乌克兰 libs/ui/src/lib/i18n.ts - 95 + 97 @@ -7284,7 +7284,7 @@ 涨跌 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + 367 @@ -7292,11 +7292,11 @@ 表现 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 365 + 367 libs/ui/src/lib/treemap-chart/treemap-chart.component.ts - 378 + 380 @@ -7320,7 +7320,7 @@ 亚美尼亚 libs/ui/src/lib/i18n.ts - 73 + 75 @@ -7328,7 +7328,7 @@ 英属维尔京群岛 libs/ui/src/lib/i18n.ts - 77 + 79 @@ -7336,7 +7336,7 @@ 新加坡 libs/ui/src/lib/i18n.ts - 91 + 93 @@ -7412,7 +7412,7 @@ 英国 libs/ui/src/lib/i18n.ts - 96 + 98 @@ -8056,6 +8056,22 @@ 434 + + Alternative Investment + Alternative Investment + + libs/ui/src/lib/i18n.ts + 44 + + + + Collectible + Collectible + + libs/ui/src/lib/i18n.ts + 54 + + From a0b00ff26c519142de9d52d17398d305cb556075 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 8 Jul 2025 21:37:49 +0200 Subject: [PATCH 15/16] Feature/rename AccessGive to accessesGive in User database schema (#5132) * Rename AccessGive to accessesGive in User database schema * Update changelog --- CHANGELOG.md | 1 + prisma/schema.prisma | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7066c4788..de4f9fb8f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Respected the filter by account for accounts when exporting activities on the portfolio activities page - Improved the label for asset profiles with `MANUAL` data source in the chart of the holdings tab on the home page +- Renamed `AccessGive` to `accessesGive` in the `User` database schema - Improved the language localization for Catalan (`ca`) - Improved the language localization for German (`de`) - Improved the language localization for Spanish (`es`) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 6080a1aa6..609bede5c 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -245,6 +245,7 @@ model Tag { model User { accessesGet Access[] @relation("accessGet") + accessesGive Access[] @relation("accessGive") accessToken String? accounts Account[] activities Order[] @@ -262,7 +263,6 @@ model User { thirdPartyId String? updatedAt DateTime @updatedAt watchlist SymbolProfile[] @relation("UserWatchlist") - AccessGive Access[] @relation("accessGive") SymbolProfile SymbolProfile[] @@index([accessToken]) From 110f990cb7b1dabde04ac36ea8e0ac940f195e6d Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Tue, 8 Jul 2025 21:39:41 +0200 Subject: [PATCH 16/16] Release 2.180.0 (#5133) --- 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 de4f9fb8f..8f05db77f 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.180.0 - 2025-07-08 ### Added diff --git a/package-lock.json b/package-lock.json index b8dfa6a1c..6722459a3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ghostfolio", - "version": "2.179.0", + "version": "2.180.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ghostfolio", - "version": "2.179.0", + "version": "2.180.0", "hasInstallScript": true, "license": "AGPL-3.0", "dependencies": { diff --git a/package.json b/package.json index 74b7f981f..bc10005cb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.179.0", + "version": "2.180.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio",