diff --git a/CHANGELOG.md b/CHANGELOG.md index 929769ae1..9237217a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,9 +7,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +### Added + +- Extended the content of the _Self-Hosting_ section by the custom asset instructions on the Frequently Asked Questions (FAQ) page + ### Changed +- Migrated the `@ghostfolio/ui` components to control flow - Updated the browserslist database +- Upgraded `prisma` from version `5.12.1` to `5.13.0` + +### Fixed + +- Fixed the form submit in the asset profile details dialog of the admin control due to the `url` validation + +## 2.76.0 - 2024-04-23 + +### Changed + +- Changed `CASH` to `LIQUIDITY` in the asset class enum ## 2.75.1 - 2024-04-21 diff --git a/apps/api/src/app/admin/admin.service.ts b/apps/api/src/app/admin/admin.service.ts index 2aac43a18..7df4498d7 100644 --- a/apps/api/src/app/admin/admin.service.ts +++ b/apps/api/src/app/admin/admin.service.ts @@ -416,7 +416,7 @@ export class AdminService { dataSource, marketDataItemCount, symbol, - assetClass: 'CASH', + assetClass: AssetClass.LIQUIDITY, countriesCount: 0, currency: symbol.replace(DEFAULT_CURRENCY, ''), id: undefined, diff --git a/apps/api/src/app/portfolio/portfolio.controller.ts b/apps/api/src/app/portfolio/portfolio.controller.ts index 81d0c3df9..0828fb3e4 100644 --- a/apps/api/src/app/portfolio/portfolio.controller.ts +++ b/apps/api/src/app/portfolio/portfolio.controller.ts @@ -47,6 +47,7 @@ import { } from '@nestjs/common'; import { REQUEST } from '@nestjs/core'; import { AuthGuard } from '@nestjs/passport'; +import { AssetClass, AssetSubClass } from '@prisma/client'; import { Big } from 'big.js'; import { StatusCodes, getReasonPhrase } from 'http-status-codes'; @@ -128,14 +129,19 @@ export class PortfolioController { const totalValue = Object.values(holdings) .filter(({ assetClass, assetSubClass }) => { - return assetClass !== 'CASH' && assetSubClass !== 'CASH'; + return ( + assetClass !== AssetClass.LIQUIDITY && + assetSubClass !== AssetSubClass.CASH + ); }) .map(({ valueInBaseCurrency }) => { return valueInBaseCurrency; }) - .reduce((a, b) => a + b, 0); + .reduce((a, b) => { + return a + b; + }, 0); - for (const [symbol, portfolioPosition] of Object.entries(holdings)) { + for (const [, portfolioPosition] of Object.entries(holdings)) { portfolioPosition.investment = portfolioPosition.investment / totalInvestment; portfolioPosition.valueInPercentage = @@ -185,11 +191,11 @@ export class PortfolioController { holdings[symbol] = { ...portfolioPosition, assetClass: - hasDetails || portfolioPosition.assetClass === 'CASH' + hasDetails || portfolioPosition.assetClass === AssetClass.LIQUIDITY ? portfolioPosition.assetClass : undefined, assetSubClass: - hasDetails || portfolioPosition.assetSubClass === 'CASH' + hasDetails || portfolioPosition.assetSubClass === AssetSubClass.CASH ? portfolioPosition.assetSubClass : undefined, countries: hasDetails ? portfolioPosition.countries : [], diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index cf7a47f52..4e56f844b 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -54,6 +54,7 @@ import { Account, Type as ActivityType, AssetClass, + AssetSubClass, DataSource, Order, Platform, @@ -376,7 +377,7 @@ export class PortfolioService { }) ?? false; const isFilteredByCash = filters?.some(({ id, type }) => { - return id === 'CASH' && type === 'ASSET_CLASS'; + return id === AssetClass.LIQUIDITY && type === 'ASSET_CLASS'; }); const isFilteredByClosedHoldings = @@ -391,8 +392,8 @@ export class PortfolioService { if ( filters?.length === 0 || (filters?.length === 1 && - filters[0].type === 'ASSET_CLASS' && - filters[0].id === 'CASH') + filters[0].id === AssetClass.LIQUIDITY && + filters[0].type === 'ASSET_CLASS') ) { filteredValueInBaseCurrency = filteredValueInBaseCurrency.plus( cashDetails.balanceInBaseCurrency @@ -1425,8 +1426,8 @@ export class PortfolioService { return { currency, allocationInPercentage: 0, - assetClass: AssetClass.CASH, - assetSubClass: AssetClass.CASH, + assetClass: AssetClass.LIQUIDITY, + assetSubClass: AssetSubClass.CASH, countries: [], dataSource: undefined, dateOfFirstActivity: undefined, diff --git a/apps/api/src/services/data-provider/coingecko/coingecko.service.ts b/apps/api/src/services/data-provider/coingecko/coingecko.service.ts index d17ba4b7e..d673dd7aa 100644 --- a/apps/api/src/services/data-provider/coingecko/coingecko.service.ts +++ b/apps/api/src/services/data-provider/coingecko/coingecko.service.ts @@ -59,7 +59,7 @@ export class CoinGeckoService implements DataProviderInterface { }): Promise> { const response: Partial = { symbol, - assetClass: AssetClass.CASH, + assetClass: AssetClass.LIQUIDITY, assetSubClass: AssetSubClass.CRYPTOCURRENCY, currency: DEFAULT_CURRENCY, dataSource: this.getName() @@ -243,7 +243,7 @@ export class CoinGeckoService implements DataProviderInterface { return { name, symbol, - assetClass: AssetClass.CASH, + assetClass: AssetClass.LIQUIDITY, assetSubClass: AssetSubClass.CRYPTOCURRENCY, currency: DEFAULT_CURRENCY, dataProviderInfo: this.getDataProviderInfo(), diff --git a/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts b/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts index c6edef0ca..35fa9604a 100644 --- a/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts +++ b/apps/api/src/services/data-provider/data-enhancer/yahoo-finance/yahoo-finance.service.ts @@ -266,7 +266,7 @@ export class YahooFinanceDataEnhancerService implements DataEnhancerInterface { switch (quoteType?.toLowerCase()) { case 'cryptocurrency': - assetClass = AssetClass.CASH; + assetClass = AssetClass.LIQUIDITY; assetSubClass = AssetSubClass.CRYPTOCURRENCY; break; case 'equity': diff --git a/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts b/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts index 99104a78d..1b6abd585 100644 --- a/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts +++ b/apps/api/src/services/data-provider/eod-historical-data/eod-historical-data.service.ts @@ -468,7 +468,7 @@ export class EodHistoricalDataService implements DataProviderInterface { assetSubClass = AssetSubClass.STOCK; break; case 'currency': - assetClass = AssetClass.CASH; + assetClass = AssetClass.LIQUIDITY; if (Exchange?.toLowerCase() === 'cc') { assetSubClass = AssetSubClass.CRYPTOCURRENCY; diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts index 2f0c2546b..783bbdbc4 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts @@ -265,22 +265,22 @@ export class AssetProfileDialog implements OnDestroy, OnInit { let symbolMapping = {}; try { - countries = JSON.parse(this.assetProfileForm.controls['countries'].value); + countries = JSON.parse(this.assetProfileForm.get('countries').value); } catch {} try { scraperConfiguration = JSON.parse( - this.assetProfileForm.controls['scraperConfiguration'].value + this.assetProfileForm.get('scraperConfiguration').value ); } catch {} try { - sectors = JSON.parse(this.assetProfileForm.controls['sectors'].value); + sectors = JSON.parse(this.assetProfileForm.get('sectors').value); } catch {} try { symbolMapping = JSON.parse( - this.assetProfileForm.controls['symbolMapping'].value + this.assetProfileForm.get('symbolMapping').value ); } catch {} @@ -289,14 +289,14 @@ export class AssetProfileDialog implements OnDestroy, OnInit { scraperConfiguration, sectors, symbolMapping, - assetClass: this.assetProfileForm.controls['assetClass'].value, - assetSubClass: this.assetProfileForm.controls['assetSubClass'].value, - comment: this.assetProfileForm.controls['comment'].value ?? null, + assetClass: this.assetProfileForm.get('assetClass').value, + assetSubClass: this.assetProfileForm.get('assetSubClass').value, + comment: this.assetProfileForm.get('comment').value || null, currency: (( - (this.assetProfileForm.controls['currency'].value) + (this.assetProfileForm.get('currency').value) ))?.value, - name: this.assetProfileForm.controls['name'].value, - url: this.assetProfileForm.controls['url'].value + name: this.assetProfileForm.get('name').value, + url: this.assetProfileForm.get('url').value || null }; this.adminService @@ -314,8 +314,8 @@ export class AssetProfileDialog implements OnDestroy, OnInit { this.adminService .testMarketData({ dataSource: this.data.dataSource, - scraperConfiguration: - this.assetProfileForm.controls['scraperConfiguration'].value, + scraperConfiguration: this.assetProfileForm.get('scraperConfiguration') + .value, symbol: this.data.symbol }) .pipe( @@ -331,9 +331,8 @@ export class AssetProfileDialog implements OnDestroy, OnInit { ' ' + price + ' ' + - (( - (this.assetProfileForm.controls['currency'].value) - ))?.value + ((this.assetProfileForm.get('currency').value)) + ?.value ); }); } diff --git a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html index b0b57df09..4f01a933e 100644 --- a/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html +++ b/apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html @@ -302,7 +302,7 @@ mat-flat-button type="button" [disabled]=" - assetProfileForm.controls['scraperConfiguration'].value === '{}' + assetProfileForm.get('scraperConfiguration').value === '{}' " (click)="onTestMarketData()" > @@ -338,11 +338,11 @@ Url - @if (assetProfileForm.controls['url'].value) { + @if (assetProfileForm.get('url').value) { } diff --git a/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts b/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts index d5415524b..f0a47ad1b 100644 --- a/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts +++ b/apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.component.ts @@ -59,14 +59,12 @@ export class CreateAssetProfileDialog implements OnInit, OnDestroy { this.mode === 'auto' ? this.dialogRef.close({ dataSource: - this.createAssetProfileForm.controls['searchSymbol'].value - .dataSource, - symbol: - this.createAssetProfileForm.controls['searchSymbol'].value.symbol + this.createAssetProfileForm.get('searchSymbol').value.dataSource, + symbol: this.createAssetProfileForm.get('searchSymbol').value.symbol }) : this.dialogRef.close({ dataSource: 'MANUAL', - symbol: this.createAssetProfileForm.controls['addSymbol'].value + symbol: this.createAssetProfileForm.get('addSymbol').value }); } diff --git a/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts b/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts index 4c6cbbb85..5e08635e0 100644 --- a/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts +++ b/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts @@ -67,9 +67,9 @@ export class CreateOrUpdateAccessDialog implements OnDestroy { public onSubmit() { const access: CreateAccessDto = { - alias: this.accessForm.controls['alias'].value, - granteeUserId: this.accessForm.controls['userId'].value, - permissions: [this.accessForm.controls['permissions'].value] + alias: this.accessForm.get('alias').value, + granteeUserId: this.accessForm.get('userId').value, + permissions: [this.accessForm.get('permissions').value] }; this.dataService diff --git a/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html b/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html index eba44adbd..a6f20f2f4 100644 --- a/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html +++ b/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html @@ -27,7 +27,7 @@ - @if (accessForm.controls['type'].value === 'PRIVATE') { + @if (accessForm.get('type').value === 'PRIVATE') {
Permission 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 4e3ef335e..6c3624344 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 @@ -82,7 +82,7 @@ export class CreateOrUpdateAccountDialog implements OnDestroy { } public autoCompleteCheck() { - const inputValue = this.accountForm.controls['platformId'].value; + const inputValue = this.accountForm.get('platformId').value; if (typeof inputValue === 'string') { const matchingEntry = this.platforms.find(({ name }) => { @@ -90,7 +90,7 @@ export class CreateOrUpdateAccountDialog implements OnDestroy { }); if (matchingEntry) { - this.accountForm.controls['platformId'].setValue(matchingEntry); + this.accountForm.get('platformId').setValue(matchingEntry); } } } @@ -105,13 +105,13 @@ export class CreateOrUpdateAccountDialog implements OnDestroy { public async onSubmit() { const account: CreateAccountDto | UpdateAccountDto = { - balance: this.accountForm.controls['balance'].value, - comment: this.accountForm.controls['comment'].value, - currency: this.accountForm.controls['currency'].value?.value, - id: this.accountForm.controls['accountId'].value, - isExcluded: this.accountForm.controls['isExcluded'].value, - name: this.accountForm.controls['name'].value, - platformId: this.accountForm.controls['platformId'].value?.id ?? null + balance: this.accountForm.get('balance').value, + comment: this.accountForm.get('comment').value || null, + currency: this.accountForm.get('currency').value?.value, + id: this.accountForm.get('accountId').value, + isExcluded: this.accountForm.get('isExcluded').value, + name: this.accountForm.get('name').value, + platformId: this.accountForm.get('platformId').value?.id || null }; try { diff --git a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html index e2981462f..af97bfce3 100644 --- a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html +++ b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html @@ -39,7 +39,7 @@ (keydown.enter)="$event.stopPropagation()" /> {{ - accountForm.controls['currency']?.value?.value + accountForm.get('currency')?.value?.value }}
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 60acd52b3..4547710cb 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 @@ -66,9 +66,9 @@ export class TransferBalanceDialog implements OnDestroy { public onSubmit() { const account: TransferBalanceDto = { - accountIdFrom: this.transferBalanceForm.controls['fromAccount'].value, - accountIdTo: this.transferBalanceForm.controls['toAccount'].value, - balance: this.transferBalanceForm.controls['balance'].value + accountIdFrom: this.transferBalanceForm.get('fromAccount').value, + accountIdTo: this.transferBalanceForm.get('toAccount').value, + balance: this.transferBalanceForm.get('balance').value }; this.dialogRef.close({ account }); diff --git a/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html b/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html index 7df2cdbe9..da6690d58 100644 --- a/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html +++ b/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html @@ -118,6 +118,25 @@ providers are considered experimental. + + + How do I add a custom asset? + + +

+ If you want to track an asset that is not available from any data + provider, you can create a custom asset as follows. +

+
    +
  1. Go to the Admin Control panel
  2. +
  3. Go to the Market Data section
  4. +
  5. Create an asset profile
  6. +
  7. Select Add Manually and enter a unique symbol
  8. +
  9. Edit your asset profile
  10. +
  11. Add a new activity by searching for the symbol
  12. +
+
+
Which devices are supported? diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts index 1196de58c..700e997e1 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts @@ -148,13 +148,14 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { .subscribe(async () => { let exchangeRateOfUnitPrice = 1; - this.activityForm.controls['feeInCustomCurrency'].setErrors(null); - this.activityForm.controls['unitPriceInCustomCurrency'].setErrors(null); + this.activityForm.get('feeInCustomCurrency').setErrors(null); + this.activityForm.get('unitPriceInCustomCurrency').setErrors(null); - const currency = this.activityForm.controls['currency'].value; - const currencyOfUnitPrice = - this.activityForm.controls['currencyOfUnitPrice'].value; - const date = this.activityForm.controls['date'].value; + const currency = this.activityForm.get('currency').value; + const currencyOfUnitPrice = this.activityForm.get( + 'currencyOfUnitPrice' + ).value; + const date = this.activityForm.get('date').value; if ( currency && @@ -174,104 +175,97 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { exchangeRateOfUnitPrice = marketPrice; } catch { - this.activityForm.controls['unitPriceInCustomCurrency'].setErrors({ + this.activityForm.get('unitPriceInCustomCurrency').setErrors({ invalid: true }); } } const feeInCustomCurrency = - this.activityForm.controls['feeInCustomCurrency'].value * + this.activityForm.get('feeInCustomCurrency').value * exchangeRateOfUnitPrice; const unitPriceInCustomCurrency = - this.activityForm.controls['unitPriceInCustomCurrency'].value * + this.activityForm.get('unitPriceInCustomCurrency').value * exchangeRateOfUnitPrice; - this.activityForm.controls['fee'].setValue(feeInCustomCurrency, { + this.activityForm.get('fee').setValue(feeInCustomCurrency, { emitEvent: false }); - this.activityForm.controls['unitPrice'].setValue( - unitPriceInCustomCurrency, - { - emitEvent: false - } - ); + this.activityForm.get('unitPrice').setValue(unitPriceInCustomCurrency, { + emitEvent: false + }); if ( - this.activityForm.controls['type'].value === 'BUY' || - this.activityForm.controls['type'].value === 'FEE' || - this.activityForm.controls['type'].value === 'ITEM' + this.activityForm.get('type').value === 'BUY' || + this.activityForm.get('type').value === 'FEE' || + this.activityForm.get('type').value === 'ITEM' ) { this.total = - this.activityForm.controls['quantity'].value * - this.activityForm.controls['unitPrice'].value + - this.activityForm.controls['fee'].value ?? 0; + this.activityForm.get('quantity').value * + this.activityForm.get('unitPrice').value + + this.activityForm.get('fee').value ?? 0; } else { this.total = - this.activityForm.controls['quantity'].value * - this.activityForm.controls['unitPrice'].value - - this.activityForm.controls['fee'].value ?? 0; + this.activityForm.get('quantity').value * + this.activityForm.get('unitPrice').value - + this.activityForm.get('fee').value ?? 0; } this.changeDetectorRef.markForCheck(); }); - this.activityForm.controls['accountId'].valueChanges.subscribe( - (accountId) => { - const type = this.activityForm.controls['type'].value; + this.activityForm.get('accountId').valueChanges.subscribe((accountId) => { + const type = this.activityForm.get('type').value; - if ( - type === 'FEE' || - type === 'INTEREST' || - type === 'ITEM' || - type === 'LIABILITY' - ) { - const currency = - this.data.accounts.find(({ id }) => { - return id === accountId; - })?.currency ?? this.data.user.settings.baseCurrency; + if ( + type === 'FEE' || + type === 'INTEREST' || + type === 'ITEM' || + type === 'LIABILITY' + ) { + const currency = + this.data.accounts.find(({ id }) => { + return id === accountId; + })?.currency ?? this.data.user.settings.baseCurrency; - this.activityForm.controls['currency'].setValue(currency); - this.activityForm.controls['currencyOfUnitPrice'].setValue(currency); - - if (['FEE', 'INTEREST'].includes(type)) { - if (this.activityForm.controls['accountId'].value) { - this.activityForm.controls['updateAccountBalance'].enable(); - } else { - this.activityForm.controls['updateAccountBalance'].disable(); - this.activityForm.controls['updateAccountBalance'].setValue( - false - ); - } + this.activityForm.get('currency').setValue(currency); + this.activityForm.get('currencyOfUnitPrice').setValue(currency); + + if (['FEE', 'INTEREST'].includes(type)) { + if (this.activityForm.get('accountId').value) { + this.activityForm.get('updateAccountBalance').enable(); + } else { + this.activityForm.get('updateAccountBalance').disable(); + this.activityForm.get('updateAccountBalance').setValue(false); } } } - ); + }); - this.activityForm.controls['date'].valueChanges.subscribe(() => { - if (isToday(this.activityForm.controls['date'].value)) { - this.activityForm.controls['updateAccountBalance'].enable(); + this.activityForm.get('date').valueChanges.subscribe(() => { + if (isToday(this.activityForm.get('date').value)) { + this.activityForm.get('updateAccountBalance').enable(); } else { - this.activityForm.controls['updateAccountBalance'].disable(); - this.activityForm.controls['updateAccountBalance'].setValue(false); + this.activityForm.get('updateAccountBalance').disable(); + this.activityForm.get('updateAccountBalance').setValue(false); } this.changeDetectorRef.markForCheck(); }); - this.activityForm.controls['searchSymbol'].valueChanges.subscribe(() => { - if (this.activityForm.controls['searchSymbol'].invalid) { + this.activityForm.get('searchSymbol').valueChanges.subscribe(() => { + if (this.activityForm.get('searchSymbol').invalid) { this.data.activity.SymbolProfile = null; } else if ( ['BUY', 'DIVIDEND', 'SELL'].includes( - this.activityForm.controls['type'].value + this.activityForm.get('type').value ) ) { - this.activityForm.controls['dataSource'].setValue( - this.activityForm.controls['searchSymbol'].value.dataSource - ); + this.activityForm + .get('dataSource') + .setValue(this.activityForm.get('searchSymbol').value.dataSource); this.updateSymbol(); } @@ -282,130 +276,127 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { this.filteredTagsObservable = this.activityForm.controls[ 'tags' ].valueChanges.pipe( - startWith(this.activityForm.controls['tags'].value), + startWith(this.activityForm.get('tags').value), map((aTags: Tag[] | null) => { return aTags ? this.filterTags(aTags) : this.tags.slice(); }) ); - this.activityForm.controls['type'].valueChanges - .pipe(takeUntil(this.unsubscribeSubject)) + this.activityForm + .get('type') + .valueChanges.pipe(takeUntil(this.unsubscribeSubject)) .subscribe((type: Type) => { if (type === 'ITEM') { - this.activityForm.controls['accountId'].removeValidators( - Validators.required - ); - this.activityForm.controls['accountId'].updateValueAndValidity(); + this.activityForm + .get('accountId') + .removeValidators(Validators.required); + this.activityForm.get('accountId').updateValueAndValidity(); const currency = this.data.accounts.find(({ id }) => { - return id === this.activityForm.controls['accountId'].value; + return id === this.activityForm.get('accountId').value; })?.currency ?? this.data.user.settings.baseCurrency; - this.activityForm.controls['currency'].setValue(currency); - this.activityForm.controls['currencyOfUnitPrice'].setValue(currency); - - this.activityForm.controls['dataSource'].removeValidators( - Validators.required - ); - this.activityForm.controls['dataSource'].updateValueAndValidity(); - this.activityForm.controls['feeInCustomCurrency'].reset(); - this.activityForm.controls['name'].setValidators(Validators.required); - this.activityForm.controls['name'].updateValueAndValidity(); - this.activityForm.controls['quantity'].setValue(1); - this.activityForm.controls['searchSymbol'].removeValidators( - Validators.required - ); - this.activityForm.controls['searchSymbol'].updateValueAndValidity(); - this.activityForm.controls['updateAccountBalance'].disable(); - this.activityForm.controls['updateAccountBalance'].setValue(false); + this.activityForm.get('currency').setValue(currency); + this.activityForm.get('currencyOfUnitPrice').setValue(currency); + + this.activityForm + .get('dataSource') + .removeValidators(Validators.required); + this.activityForm.get('dataSource').updateValueAndValidity(); + this.activityForm.get('feeInCustomCurrency').reset(); + this.activityForm.get('name').setValidators(Validators.required); + this.activityForm.get('name').updateValueAndValidity(); + this.activityForm.get('quantity').setValue(1); + this.activityForm + .get('searchSymbol') + .removeValidators(Validators.required); + this.activityForm.get('searchSymbol').updateValueAndValidity(); + this.activityForm.get('updateAccountBalance').disable(); + this.activityForm.get('updateAccountBalance').setValue(false); } else if ( type === 'FEE' || type === 'INTEREST' || type === 'LIABILITY' ) { - this.activityForm.controls['accountId'].removeValidators( - Validators.required - ); - this.activityForm.controls['accountId'].updateValueAndValidity(); + this.activityForm + .get('accountId') + .removeValidators(Validators.required); + this.activityForm.get('accountId').updateValueAndValidity(); const currency = this.data.accounts.find(({ id }) => { - return id === this.activityForm.controls['accountId'].value; + return id === this.activityForm.get('accountId').value; })?.currency ?? this.data.user.settings.baseCurrency; - this.activityForm.controls['currency'].setValue(currency); - this.activityForm.controls['currencyOfUnitPrice'].setValue(currency); + this.activityForm.get('currency').setValue(currency); + this.activityForm.get('currencyOfUnitPrice').setValue(currency); - this.activityForm.controls['dataSource'].removeValidators( - Validators.required - ); - this.activityForm.controls['dataSource'].updateValueAndValidity(); + this.activityForm + .get('dataSource') + .removeValidators(Validators.required); + this.activityForm.get('dataSource').updateValueAndValidity(); if ( (type === 'FEE' && - this.activityForm.controls['feeInCustomCurrency'].value === 0) || + this.activityForm.get('feeInCustomCurrency').value === 0) || type === 'INTEREST' || type === 'LIABILITY' ) { - this.activityForm.controls['feeInCustomCurrency'].reset(); + this.activityForm.get('feeInCustomCurrency').reset(); } - this.activityForm.controls['name'].setValidators(Validators.required); - this.activityForm.controls['name'].updateValueAndValidity(); + this.activityForm.get('name').setValidators(Validators.required); + this.activityForm.get('name').updateValueAndValidity(); if (type === 'FEE') { - this.activityForm.controls['quantity'].setValue(0); + this.activityForm.get('quantity').setValue(0); } else if (type === 'INTEREST' || type === 'LIABILITY') { - this.activityForm.controls['quantity'].setValue(1); + this.activityForm.get('quantity').setValue(1); } - this.activityForm.controls['searchSymbol'].removeValidators( - Validators.required - ); - this.activityForm.controls['searchSymbol'].updateValueAndValidity(); + this.activityForm + .get('searchSymbol') + .removeValidators(Validators.required); + this.activityForm.get('searchSymbol').updateValueAndValidity(); if (type === 'FEE') { - this.activityForm.controls['unitPriceInCustomCurrency'].setValue(0); + this.activityForm.get('unitPriceInCustomCurrency').setValue(0); } if ( ['FEE', 'INTEREST'].includes(type) && - this.activityForm.controls['accountId'].value + this.activityForm.get('accountId').value ) { - this.activityForm.controls['updateAccountBalance'].enable(); + this.activityForm.get('updateAccountBalance').enable(); } else { - this.activityForm.controls['updateAccountBalance'].disable(); - this.activityForm.controls['updateAccountBalance'].setValue(false); + this.activityForm.get('updateAccountBalance').disable(); + this.activityForm.get('updateAccountBalance').setValue(false); } } else { - this.activityForm.controls['accountId'].setValidators( - Validators.required - ); - this.activityForm.controls['accountId'].updateValueAndValidity(); - this.activityForm.controls['dataSource'].setValidators( - Validators.required - ); - this.activityForm.controls['dataSource'].updateValueAndValidity(); - this.activityForm.controls['name'].removeValidators( - Validators.required - ); - this.activityForm.controls['name'].updateValueAndValidity(); - this.activityForm.controls['searchSymbol'].setValidators( - Validators.required - ); - this.activityForm.controls['searchSymbol'].updateValueAndValidity(); - this.activityForm.controls['updateAccountBalance'].enable(); + this.activityForm.get('accountId').setValidators(Validators.required); + this.activityForm.get('accountId').updateValueAndValidity(); + this.activityForm + .get('dataSource') + .setValidators(Validators.required); + this.activityForm.get('dataSource').updateValueAndValidity(); + this.activityForm.get('name').removeValidators(Validators.required); + this.activityForm.get('name').updateValueAndValidity(); + this.activityForm + .get('searchSymbol') + .setValidators(Validators.required); + this.activityForm.get('searchSymbol').updateValueAndValidity(); + this.activityForm.get('updateAccountBalance').enable(); } this.changeDetectorRef.markForCheck(); }); - this.activityForm.controls['type'].setValue(this.data.activity?.type); + this.activityForm.get('type').setValue(this.data.activity?.type); if (this.data.activity?.id) { - this.activityForm.controls['searchSymbol'].disable(); - this.activityForm.controls['type'].disable(); + this.activityForm.get('searchSymbol').disable(); + this.activityForm.get('type').disable(); } if (this.data.activity?.SymbolProfile?.symbol) { @@ -425,14 +416,14 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { public applyCurrentMarketPrice() { this.activityForm.patchValue({ - currencyOfUnitPrice: this.activityForm.controls['currency'].value, + currencyOfUnitPrice: this.activityForm.get('currency').value, unitPriceInCustomCurrency: this.currentMarketPrice }); } public onAddTag(event: MatAutocompleteSelectedEvent) { - this.activityForm.controls['tags'].setValue([ - ...(this.activityForm.controls['tags'].value ?? []), + this.activityForm.get('tags').setValue([ + ...(this.activityForm.get('tags').value ?? []), this.tags.find(({ id }) => { return id === event.option.value; }) @@ -445,8 +436,8 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { } public onRemoveTag(aTag: Tag) { - this.activityForm.controls['tags'].setValue( - this.activityForm.controls['tags'].value.filter(({ id }) => { + this.activityForm.get('tags').setValue( + this.activityForm.get('tags').value.filter(({ id }) => { return id !== aTag.id; }) ); @@ -454,25 +445,24 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { public async onSubmit() { const activity: CreateOrderDto | UpdateOrderDto = { - accountId: this.activityForm.controls['accountId'].value, - assetClass: this.activityForm.controls['assetClass'].value, - assetSubClass: this.activityForm.controls['assetSubClass'].value, - comment: this.activityForm.controls['comment'].value, - currency: this.activityForm.controls['currency'].value, - customCurrency: this.activityForm.controls['currencyOfUnitPrice'].value, - date: this.activityForm.controls['date'].value, - dataSource: this.activityForm.controls['dataSource'].value, - fee: this.activityForm.controls['fee'].value, - quantity: this.activityForm.controls['quantity'].value, + accountId: this.activityForm.get('accountId').value, + assetClass: this.activityForm.get('assetClass').value, + assetSubClass: this.activityForm.get('assetSubClass').value, + comment: this.activityForm.get('comment').value || null, + currency: this.activityForm.get('currency').value, + customCurrency: this.activityForm.get('currencyOfUnitPrice').value, + date: this.activityForm.get('date').value, + dataSource: this.activityForm.get('dataSource').value, + fee: this.activityForm.get('fee').value, + quantity: this.activityForm.get('quantity').value, symbol: - this.activityForm.controls['searchSymbol'].value?.symbol === - undefined || - isUUID(this.activityForm.controls['searchSymbol'].value?.symbol) - ? this.activityForm.controls['name'].value - : this.activityForm.controls['searchSymbol'].value.symbol, - tags: this.activityForm.controls['tags'].value, - type: this.activityForm.controls['type'].value, - unitPrice: this.activityForm.controls['unitPrice'].value + this.activityForm.get('searchSymbol').value?.symbol === undefined || + isUUID(this.activityForm.get('searchSymbol').value?.symbol) + ? this.activityForm.get('name').value + : this.activityForm.get('searchSymbol').value.symbol, + tags: this.activityForm.get('tags').value, + type: this.activityForm.get('type').value, + unitPrice: this.activityForm.get('unitPrice').value }; try { @@ -487,7 +477,7 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { }); } else { (activity as CreateOrderDto).updateAccountBalance = - this.activityForm.controls['updateAccountBalance'].value; + this.activityForm.get('updateAccountBalance').value; await validateObjectForForm({ classDto: CreateOrderDto, @@ -524,8 +514,8 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { this.dataService .fetchSymbolItem({ - dataSource: this.activityForm.controls['dataSource'].value, - symbol: this.activityForm.controls['searchSymbol'].value.symbol + dataSource: this.activityForm.get('dataSource').value, + symbol: this.activityForm.get('searchSymbol').value.symbol }) .pipe( catchError(() => { @@ -540,9 +530,9 @@ export class CreateOrUpdateActivityDialog implements OnDestroy { takeUntil(this.unsubscribeSubject) ) .subscribe(({ currency, dataSource, marketPrice }) => { - this.activityForm.controls['currency'].setValue(currency); - this.activityForm.controls['currencyOfUnitPrice'].setValue(currency); - this.activityForm.controls['dataSource'].setValue(dataSource); + this.activityForm.get('currency').setValue(currency); + this.activityForm.get('currencyOfUnitPrice').setValue(currency); + this.activityForm.get('dataSource').setValue(dataSource); this.currentMarketPrice = marketPrice; diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html index 79ea7647a..65ba637db 100644 --- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html +++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html @@ -12,7 +12,7 @@ Type {{ - typesTranslationMap[activityForm.controls['type'].value] + typesTranslationMap[activityForm.get('type').value] }} @@ -113,9 +111,9 @@
@@ -129,9 +127,7 @@
@@ -173,10 +169,10 @@ class="mb-3" [ngClass]="{ 'd-none': - activityForm.controls['type']?.value === 'FEE' || - activityForm.controls['type']?.value === 'INTEREST' || - activityForm.controls['type']?.value === 'ITEM' || - activityForm.controls['type']?.value === 'LIABILITY' + activityForm.get('type')?.value === 'FEE' || + activityForm.get('type')?.value === 'INTEREST' || + activityForm.get('type')?.value === 'ITEM' || + activityForm.get('type')?.value === 'LIABILITY' }" > @@ -186,12 +182,12 @@
+ > Dividend @@ -211,7 +207,7 @@
Oops! Could not get the historical exchange rate from {{ - activityForm.controls['date']?.value | date: defaultDateFormat + activityForm.get('date')?.value | date: defaultDateFormat }} @@ -241,7 +235,7 @@ *ngIf=" currentMarketPrice && (data.activity.type === 'BUY' || data.activity.type === 'SELL') && - isToday(activityForm.controls['date']?.value) + isToday(activityForm.get('date')?.value) " class="ml-2 mt-1 no-min-width" mat-button @@ -256,7 +250,7 @@
+ > Dividend @@ -269,7 +263,7 @@ {{ - activityForm.controls['currency'].value + activityForm.get('currency').value }}
@@ -277,9 +271,9 @@ class="mb-3" [ngClass]="{ 'd-none': - activityForm.controls['type']?.value === 'INTEREST' || - activityForm.controls['type']?.value === 'ITEM' || - activityForm.controls['type']?.value === 'LIABILITY' + activityForm.get('type')?.value === 'INTEREST' || + activityForm.get('type')?.value === 'ITEM' || + activityForm.get('type')?.value === 'LIABILITY' }" > @@ -288,19 +282,17 @@
- {{ activityForm.controls['currencyOfUnitPrice'].value }} + {{ activityForm.get('currencyOfUnitPrice').value }}
Oops! Could not get the historical exchange rate from {{ - activityForm.controls['date']?.value | date: defaultDateFormat + activityForm.get('date')?.value | date: defaultDateFormat }}
@@ -310,7 +302,7 @@ Fee {{ - activityForm.controls['currency'].value + activityForm.get('currency').value }}
@@ -328,7 +320,7 @@
Asset Class @@ -344,7 +336,7 @@
Asset Sub Class @@ -363,7 +355,7 @@ Tags diff --git a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts index c8d369f54..ccc861335 100644 --- a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts +++ b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts @@ -85,7 +85,7 @@ export class ImportActivitiesDialog implements OnDestroy { this.dialogTitle = $localize`Import Dividends`; this.mode = 'DIVIDEND'; - this.uniqueAssetForm.controls['uniqueAsset'].disable(); + this.uniqueAssetForm.get('uniqueAsset').disable(); this.dataService .fetchPositions({ @@ -102,7 +102,7 @@ export class ImportActivitiesDialog implements OnDestroy { this.holdings = sortBy(positions, ({ name }) => { return name.toLowerCase(); }); - this.uniqueAssetForm.controls['uniqueAsset'].enable(); + this.uniqueAssetForm.get('uniqueAsset').enable(); this.isLoading = false; @@ -167,10 +167,10 @@ export class ImportActivitiesDialog implements OnDestroy { } public onLoadDividends(aStepper: MatStepper) { - this.uniqueAssetForm.controls['uniqueAsset'].disable(); + this.uniqueAssetForm.get('uniqueAsset').disable(); const { dataSource, symbol } = - this.uniqueAssetForm.controls['uniqueAsset'].value; + this.uniqueAssetForm.get('uniqueAsset').value; this.dataService .fetchDividendsImport({ @@ -193,7 +193,7 @@ export class ImportActivitiesDialog implements OnDestroy { this.details = []; this.errorMessages = []; this.importStep = ImportStep.SELECT_ACTIVITIES; - this.uniqueAssetForm.controls['uniqueAsset'].enable(); + this.uniqueAssetForm.get('uniqueAsset').enable(); aStepper.reset(); } diff --git a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html index 032480acf..3e0a00e93 100644 --- a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html +++ b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html @@ -33,7 +33,7 @@ Holding {{ - uniqueAssetForm.controls['uniqueAsset']?.value?.name + uniqueAssetForm.get('uniqueAsset')?.value?.name }} 0) { this.markets.developedMarkets.value += diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf index ef828af83..8c8b5e68f 100644 --- a/apps/client/src/locales/messages.de.xlf +++ b/apps/client/src/locales/messages.de.xlf @@ -1266,7 +1266,7 @@ apps/client/src/app/pages/landing/landing-page.html - 429 + 423 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html @@ -3036,7 +3036,7 @@ libs/ui/src/lib/i18n.ts - 69 + 70 @@ -3048,7 +3048,7 @@ libs/ui/src/lib/i18n.ts - 70 + 71 @@ -3252,7 +3252,7 @@ Immobilien libs/ui/src/lib/i18n.ts - 43 + 44 @@ -3260,7 +3260,7 @@ Anleihe libs/ui/src/lib/i18n.ts - 46 + 47 @@ -3268,7 +3268,7 @@ Kryptowährung libs/ui/src/lib/i18n.ts - 47 + 48 @@ -3276,7 +3276,7 @@ ETF libs/ui/src/lib/i18n.ts - 48 + 49 @@ -3284,7 +3284,7 @@ Investmentfonds libs/ui/src/lib/i18n.ts - 49 + 50 @@ -3292,7 +3292,7 @@ Edelmetall libs/ui/src/lib/i18n.ts - 50 + 51 @@ -3300,7 +3300,7 @@ Privates Beteiligungskapital libs/ui/src/lib/i18n.ts - 51 + 52 @@ -3308,7 +3308,7 @@ Aktie libs/ui/src/lib/i18n.ts - 52 + 53 @@ -3348,7 +3348,7 @@ Nordamerika libs/ui/src/lib/i18n.ts - 62 + 63 @@ -3356,7 +3356,7 @@ Afrika libs/ui/src/lib/i18n.ts - 59 + 60 @@ -3364,7 +3364,7 @@ Asien libs/ui/src/lib/i18n.ts - 60 + 61 @@ -3372,7 +3372,7 @@ Europa libs/ui/src/lib/i18n.ts - 61 + 62 @@ -3380,7 +3380,7 @@ Ozeanien libs/ui/src/lib/i18n.ts - 63 + 64 @@ -3388,7 +3388,7 @@ Südamerika libs/ui/src/lib/i18n.ts - 64 + 65 @@ -10076,7 +10076,7 @@ Sterne auf GitHub apps/client/src/app/pages/landing/landing-page.html - 93 + 87 apps/client/src/app/pages/open/open-page.html @@ -10088,7 +10088,7 @@ Downloads auf Docker Hub apps/client/src/app/pages/landing/landing-page.html - 111 + 105 apps/client/src/app/pages/open/open-page.html @@ -10188,7 +10188,7 @@ Verwalte dein Vermögen wie ein Profi apps/client/src/app/pages/landing/landing-page.html - 11 + 5 @@ -10196,7 +10196,7 @@ Ghostfolio ist ein Open Source Dashboard für deine persönlichen Finanzen mit Fokus auf Datenschutz. Analysiere deine Vermögensverteilung, ermittle dein Nettovermögen und treffe fundierte, datengestützte Investitionsentscheidungen. apps/client/src/app/pages/landing/landing-page.html - 15 + 9 @@ -10204,11 +10204,11 @@ Jetzt loslegen apps/client/src/app/pages/landing/landing-page.html - 47 + 41 apps/client/src/app/pages/landing/landing-page.html - 425 + 419 @@ -10216,7 +10216,7 @@ oder apps/client/src/app/pages/landing/landing-page.html - 52 + 46 @@ -10224,7 +10224,7 @@ Monatlich aktive Nutzer apps/client/src/app/pages/landing/landing-page.html - 75 + 69 @@ -10232,7 +10232,7 @@ Bekannt aus apps/client/src/app/pages/landing/landing-page.html - 119 + 113 @@ -10240,7 +10240,7 @@ Schützen Sie Ihr Vermögen. Optimieren Sie Ihre persönliche Anlagestrategie. apps/client/src/app/pages/landing/landing-page.html - 221 + 215 @@ -10248,7 +10248,7 @@ Ghostfolio ermöglicht es geschäftigen Leuten, den Überblick über Aktien, ETFs oder Kryptowährungen zu behalten, ohne überwacht zu werden. apps/client/src/app/pages/landing/landing-page.html - 225 + 219 @@ -10256,7 +10256,7 @@ 360° Ansicht apps/client/src/app/pages/landing/landing-page.html - 236 + 230 @@ -10264,7 +10264,7 @@ Web3 ready apps/client/src/app/pages/landing/landing-page.html - 247 + 241 @@ -10272,7 +10272,7 @@ Nutze Ghostfolio ganz anonym und behalte deine Finanzdaten. apps/client/src/app/pages/landing/landing-page.html - 249 + 243 @@ -10280,7 +10280,7 @@ Open Source apps/client/src/app/pages/landing/landing-page.html - 257 + 251 @@ -10288,7 +10288,7 @@ Profitiere von kontinuierlichen Verbesserungen durch eine aktive Community. apps/client/src/app/pages/landing/landing-page.html - 259 + 253 @@ -10296,7 +10296,7 @@ Warum Ghostfolio? apps/client/src/app/pages/landing/landing-page.html - 268 + 262 @@ -10304,7 +10304,7 @@ Ghostfolio ist für dich geeignet, wenn du... apps/client/src/app/pages/landing/landing-page.html - 269 + 263 @@ -10312,7 +10312,7 @@ Aktien, ETFs oder Kryptowährungen auf unterschiedlichen Plattformen handelst apps/client/src/app/pages/landing/landing-page.html - 276 + 270 @@ -10320,7 +10320,7 @@ eine Buy & Hold Strategie verfolgst apps/client/src/app/pages/landing/landing-page.html - 282 + 276 @@ -10328,7 +10328,7 @@ dich für die Zusammensetzung deines Portfolios interessierst apps/client/src/app/pages/landing/landing-page.html - 287 + 281 @@ -10336,7 +10336,7 @@ Privatsphäre und Datenhoheit wertschätzt apps/client/src/app/pages/landing/landing-page.html - 292 + 286 @@ -10344,7 +10344,7 @@ zum Frugalismus oder Minimalismus neigst apps/client/src/app/pages/landing/landing-page.html - 295 + 289 @@ -10352,7 +10352,7 @@ dich um die Diversifizierung deiner finanziellen Mittel kümmerst apps/client/src/app/pages/landing/landing-page.html - 299 + 293 @@ -10360,7 +10360,7 @@ Interesse an finanzieller Freiheit hast apps/client/src/app/pages/landing/landing-page.html - 303 + 297 @@ -10368,7 +10368,7 @@ Nein sagst zu Excel-Tabellen im Jahr apps/client/src/app/pages/landing/landing-page.html - 307 + 301 @@ -10376,7 +10376,7 @@ diese Liste bis zum Ende liest apps/client/src/app/pages/landing/landing-page.html - 310 + 304 @@ -10384,7 +10384,7 @@ Erfahre mehr über Ghostfolio apps/client/src/app/pages/landing/landing-page.html - 315 + 309 @@ -10392,7 +10392,7 @@ Was unsere Nutzer sagen apps/client/src/app/pages/landing/landing-page.html - 323 + 317 @@ -10400,7 +10400,7 @@ Nutzer aus aller Welt verwenden Ghostfolio Premium apps/client/src/app/pages/landing/landing-page.html - 355 + 349 @@ -10408,7 +10408,7 @@ Wie funktioniert Ghostfolio ? apps/client/src/app/pages/landing/landing-page.html - 367 + 361 @@ -10416,7 +10416,7 @@ Registriere dich anonym* apps/client/src/app/pages/landing/landing-page.html - 376 + 370 @@ -10424,7 +10424,7 @@ * Keine E-Mail-Adresse oder Kreditkarte erforderlich apps/client/src/app/pages/landing/landing-page.html - 378 + 372 @@ -10432,7 +10432,7 @@ Füge historische Transaktionen hinzu apps/client/src/app/pages/landing/landing-page.html - 389 + 383 @@ -10440,7 +10440,7 @@ Erhalte nützliche Erkenntnisse über die Zusammensetzung deines Portfolios apps/client/src/app/pages/landing/landing-page.html - 401 + 395 @@ -10448,7 +10448,7 @@ Bist du bereit? apps/client/src/app/pages/landing/landing-page.html - 413 + 407 @@ -10456,7 +10456,7 @@ Melde dich jetzt an oder probiere die Live Demo aus apps/client/src/app/pages/landing/landing-page.html - 414 + 408 @@ -10464,11 +10464,11 @@ Live Demo apps/client/src/app/pages/landing/landing-page.html - 55 + 49 apps/client/src/app/pages/landing/landing-page.html - 430 + 424 @@ -10476,7 +10476,7 @@ Verschaffe dir einen vollständigen Überblick deiner persönlichen Finanzen über mehrere Plattformen hinweg. apps/client/src/app/pages/landing/landing-page.html - 238 + 232 @@ -10484,7 +10484,7 @@ Beginne mit nur 3 Schritten apps/client/src/app/pages/landing/landing-page.html - 370 + 364 @@ -13199,14 +13199,6 @@ 127 - - New - Neu - - apps/client/src/app/pages/landing/landing-page.html - 7 - - Choose or drop a file here Wählen Sie eine Datei aus oder ziehen Sie sie hierhin @@ -13744,7 +13736,7 @@ Ups, der Cash-Bestand Transfer ist fehlgeschlagen. apps/client/src/app/pages/accounts/accounts-page.component.ts - 306 + 308 @@ -13768,7 +13760,7 @@ Extreme Angst libs/ui/src/lib/i18n.ts - 67 + 68 @@ -13776,7 +13768,7 @@ Extreme Gier libs/ui/src/lib/i18n.ts - 68 + 69 @@ -13784,7 +13776,7 @@ Neutral libs/ui/src/lib/i18n.ts - 71 + 72 @@ -15043,6 +15035,14 @@ 70 + + Liquidity + Liquidität + + libs/ui/src/lib/i18n.ts + 43 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 4e480b139..42e5e299a 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -1267,7 +1267,7 @@ apps/client/src/app/pages/landing/landing-page.html - 429 + 423 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html @@ -3034,7 +3034,7 @@ libs/ui/src/lib/i18n.ts - 69 + 70 @@ -3046,7 +3046,7 @@ libs/ui/src/lib/i18n.ts - 70 + 71 @@ -3250,7 +3250,7 @@ Propiedad inmobiliaria libs/ui/src/lib/i18n.ts - 43 + 44 @@ -3258,7 +3258,7 @@ Bono libs/ui/src/lib/i18n.ts - 46 + 47 @@ -3266,7 +3266,7 @@ Criptomoneda libs/ui/src/lib/i18n.ts - 47 + 48 @@ -3274,7 +3274,7 @@ ETF libs/ui/src/lib/i18n.ts - 48 + 49 @@ -3282,7 +3282,7 @@ Fondo de inversión libs/ui/src/lib/i18n.ts - 49 + 50 @@ -3290,7 +3290,7 @@ Metal precioso libs/ui/src/lib/i18n.ts - 50 + 51 @@ -3298,7 +3298,7 @@ Capital riesgo libs/ui/src/lib/i18n.ts - 51 + 52 @@ -3306,7 +3306,7 @@ Acción libs/ui/src/lib/i18n.ts - 52 + 53 @@ -3346,7 +3346,7 @@ América del Norte libs/ui/src/lib/i18n.ts - 62 + 63 @@ -3354,7 +3354,7 @@ África libs/ui/src/lib/i18n.ts - 59 + 60 @@ -3362,7 +3362,7 @@ Asia libs/ui/src/lib/i18n.ts - 60 + 61 @@ -3370,7 +3370,7 @@ Europa libs/ui/src/lib/i18n.ts - 61 + 62 @@ -3378,7 +3378,7 @@ Oceanía libs/ui/src/lib/i18n.ts - 63 + 64 @@ -3386,7 +3386,7 @@ América del Sur libs/ui/src/lib/i18n.ts - 64 + 65 @@ -10074,7 +10074,7 @@ Stars on GitHub apps/client/src/app/pages/landing/landing-page.html - 93 + 87 apps/client/src/app/pages/open/open-page.html @@ -10086,7 +10086,7 @@ Pulls on Docker Hub apps/client/src/app/pages/landing/landing-page.html - 111 + 105 apps/client/src/app/pages/open/open-page.html @@ -10186,7 +10186,7 @@ Manage your wealth like a boss apps/client/src/app/pages/landing/landing-page.html - 11 + 5 @@ -10194,7 +10194,7 @@ Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. apps/client/src/app/pages/landing/landing-page.html - 15 + 9 @@ -10202,11 +10202,11 @@ Get Started apps/client/src/app/pages/landing/landing-page.html - 47 + 41 apps/client/src/app/pages/landing/landing-page.html - 425 + 419 @@ -10214,7 +10214,7 @@ or apps/client/src/app/pages/landing/landing-page.html - 52 + 46 @@ -10222,7 +10222,7 @@ Monthly Active Users apps/client/src/app/pages/landing/landing-page.html - 75 + 69 @@ -10230,7 +10230,7 @@ As seen in apps/client/src/app/pages/landing/landing-page.html - 119 + 113 @@ -10238,7 +10238,7 @@ Protect your assets. Refine your personal investment strategy. apps/client/src/app/pages/landing/landing-page.html - 221 + 215 @@ -10246,7 +10246,7 @@ Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. apps/client/src/app/pages/landing/landing-page.html - 225 + 219 @@ -10254,7 +10254,7 @@ 360° View apps/client/src/app/pages/landing/landing-page.html - 236 + 230 @@ -10262,7 +10262,7 @@ Web3 Ready apps/client/src/app/pages/landing/landing-page.html - 247 + 241 @@ -10270,7 +10270,7 @@ Use Ghostfolio anonymously and own your financial data. apps/client/src/app/pages/landing/landing-page.html - 249 + 243 @@ -10278,7 +10278,7 @@ Open Source apps/client/src/app/pages/landing/landing-page.html - 257 + 251 @@ -10286,7 +10286,7 @@ Benefit from continuous improvements through a strong community. apps/client/src/app/pages/landing/landing-page.html - 259 + 253 @@ -10294,7 +10294,7 @@ Why Ghostfolio? apps/client/src/app/pages/landing/landing-page.html - 268 + 262 @@ -10302,7 +10302,7 @@ Ghostfolio is for you if you are... apps/client/src/app/pages/landing/landing-page.html - 269 + 263 @@ -10310,7 +10310,7 @@ trading stocks, ETFs or cryptocurrencies on multiple platforms apps/client/src/app/pages/landing/landing-page.html - 276 + 270 @@ -10318,7 +10318,7 @@ pursuing a buy & hold strategy apps/client/src/app/pages/landing/landing-page.html - 282 + 276 @@ -10326,7 +10326,7 @@ interested in getting insights of your portfolio composition apps/client/src/app/pages/landing/landing-page.html - 287 + 281 @@ -10334,7 +10334,7 @@ valuing privacy and data ownership apps/client/src/app/pages/landing/landing-page.html - 292 + 286 @@ -10342,7 +10342,7 @@ into minimalism apps/client/src/app/pages/landing/landing-page.html - 295 + 289 @@ -10350,7 +10350,7 @@ caring about diversifying your financial resources apps/client/src/app/pages/landing/landing-page.html - 299 + 293 @@ -10358,7 +10358,7 @@ interested in financial independence apps/client/src/app/pages/landing/landing-page.html - 303 + 297 @@ -10366,7 +10366,7 @@ saying no to spreadsheets in apps/client/src/app/pages/landing/landing-page.html - 307 + 301 @@ -10374,7 +10374,7 @@ still reading this list apps/client/src/app/pages/landing/landing-page.html - 310 + 304 @@ -10382,7 +10382,7 @@ Learn more about Ghostfolio apps/client/src/app/pages/landing/landing-page.html - 315 + 309 @@ -10390,7 +10390,7 @@ What our users are saying apps/client/src/app/pages/landing/landing-page.html - 323 + 317 @@ -10398,7 +10398,7 @@ Members from around the globe are using Ghostfolio Premium apps/client/src/app/pages/landing/landing-page.html - 355 + 349 @@ -10406,7 +10406,7 @@ How does Ghostfolio work? apps/client/src/app/pages/landing/landing-page.html - 367 + 361 @@ -10414,7 +10414,7 @@ Sign up anonymously* apps/client/src/app/pages/landing/landing-page.html - 376 + 370 @@ -10422,7 +10422,7 @@ * no e-mail address nor credit card required apps/client/src/app/pages/landing/landing-page.html - 378 + 372 @@ -10430,7 +10430,7 @@ Add any of your historical transactions apps/client/src/app/pages/landing/landing-page.html - 389 + 383 @@ -10438,7 +10438,7 @@ Get valuable insights of your portfolio composition apps/client/src/app/pages/landing/landing-page.html - 401 + 395 @@ -10446,7 +10446,7 @@ Are you ready? apps/client/src/app/pages/landing/landing-page.html - 413 + 407 @@ -10454,7 +10454,7 @@ Join now or check out the example account apps/client/src/app/pages/landing/landing-page.html - 414 + 408 @@ -10462,11 +10462,11 @@ Live Demo apps/client/src/app/pages/landing/landing-page.html - 55 + 49 apps/client/src/app/pages/landing/landing-page.html - 430 + 424 @@ -10474,7 +10474,7 @@ Get the full picture of your personal finances across multiple platforms. apps/client/src/app/pages/landing/landing-page.html - 238 + 232 @@ -10482,7 +10482,7 @@ Get started in only 3 steps apps/client/src/app/pages/landing/landing-page.html - 370 + 364 @@ -13197,14 +13197,6 @@ 127 - - New - New - - apps/client/src/app/pages/landing/landing-page.html - 7 - - Choose or drop a file here Choose or drop a file here @@ -13742,7 +13734,7 @@ Oops, cash balance transfer has failed. apps/client/src/app/pages/accounts/accounts-page.component.ts - 306 + 308 @@ -13766,7 +13758,7 @@ Extreme Fear libs/ui/src/lib/i18n.ts - 67 + 68 @@ -13774,7 +13766,7 @@ Extreme Greed libs/ui/src/lib/i18n.ts - 68 + 69 @@ -13782,7 +13774,7 @@ Neutral libs/ui/src/lib/i18n.ts - 71 + 72 @@ -15041,6 +15033,14 @@ 70 + + Liquidity + Liquidity + + libs/ui/src/lib/i18n.ts + 43 + + diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index fbc210fce..3955e6dd8 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -1550,7 +1550,7 @@ libs/ui/src/lib/i18n.ts - 69 + 70 @@ -1562,7 +1562,7 @@ libs/ui/src/lib/i18n.ts - 70 + 71 @@ -1642,7 +1642,7 @@ apps/client/src/app/pages/landing/landing-page.html - 429 + 423 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html @@ -3445,7 +3445,7 @@ Immobilier libs/ui/src/lib/i18n.ts - 43 + 44 @@ -3453,7 +3453,7 @@ Obligation libs/ui/src/lib/i18n.ts - 46 + 47 @@ -3461,7 +3461,7 @@ Cryptomonnaie libs/ui/src/lib/i18n.ts - 47 + 48 @@ -3469,7 +3469,7 @@ ETF libs/ui/src/lib/i18n.ts - 48 + 49 @@ -3477,7 +3477,7 @@ SICAV libs/ui/src/lib/i18n.ts - 49 + 50 @@ -3485,7 +3485,7 @@ Métal Précieux libs/ui/src/lib/i18n.ts - 50 + 51 @@ -3493,7 +3493,7 @@ Capital Propre libs/ui/src/lib/i18n.ts - 51 + 52 @@ -3501,7 +3501,7 @@ Action libs/ui/src/lib/i18n.ts - 52 + 53 @@ -3509,7 +3509,7 @@ Afrique libs/ui/src/lib/i18n.ts - 59 + 60 @@ -3517,7 +3517,7 @@ Asie libs/ui/src/lib/i18n.ts - 60 + 61 @@ -3525,7 +3525,7 @@ Europe libs/ui/src/lib/i18n.ts - 61 + 62 @@ -3533,7 +3533,7 @@ Amérique du Nord libs/ui/src/lib/i18n.ts - 62 + 63 @@ -3541,7 +3541,7 @@ Océanie libs/ui/src/lib/i18n.ts - 63 + 64 @@ -3549,7 +3549,7 @@ Amérique du Sud libs/ui/src/lib/i18n.ts - 64 + 65 @@ -10073,7 +10073,7 @@ Stars on GitHub apps/client/src/app/pages/landing/landing-page.html - 93 + 87 apps/client/src/app/pages/open/open-page.html @@ -10085,7 +10085,7 @@ Pulls on Docker Hub apps/client/src/app/pages/landing/landing-page.html - 111 + 105 apps/client/src/app/pages/open/open-page.html @@ -10185,7 +10185,7 @@ Manage your wealth like a boss apps/client/src/app/pages/landing/landing-page.html - 11 + 5 @@ -10193,7 +10193,7 @@ Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. apps/client/src/app/pages/landing/landing-page.html - 15 + 9 @@ -10201,11 +10201,11 @@ Get Started apps/client/src/app/pages/landing/landing-page.html - 47 + 41 apps/client/src/app/pages/landing/landing-page.html - 425 + 419 @@ -10213,7 +10213,7 @@ or apps/client/src/app/pages/landing/landing-page.html - 52 + 46 @@ -10221,7 +10221,7 @@ Monthly Active Users apps/client/src/app/pages/landing/landing-page.html - 75 + 69 @@ -10229,7 +10229,7 @@ As seen in apps/client/src/app/pages/landing/landing-page.html - 119 + 113 @@ -10237,7 +10237,7 @@ Protect your assets. Refine your personal investment strategy. apps/client/src/app/pages/landing/landing-page.html - 221 + 215 @@ -10245,7 +10245,7 @@ Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. apps/client/src/app/pages/landing/landing-page.html - 225 + 219 @@ -10253,7 +10253,7 @@ 360° View apps/client/src/app/pages/landing/landing-page.html - 236 + 230 @@ -10261,7 +10261,7 @@ Web3 Ready apps/client/src/app/pages/landing/landing-page.html - 247 + 241 @@ -10269,7 +10269,7 @@ Use Ghostfolio anonymously and own your financial data. apps/client/src/app/pages/landing/landing-page.html - 249 + 243 @@ -10277,7 +10277,7 @@ Open Source apps/client/src/app/pages/landing/landing-page.html - 257 + 251 @@ -10285,7 +10285,7 @@ Benefit from continuous improvements through a strong community. apps/client/src/app/pages/landing/landing-page.html - 259 + 253 @@ -10293,7 +10293,7 @@ Why Ghostfolio? apps/client/src/app/pages/landing/landing-page.html - 268 + 262 @@ -10301,7 +10301,7 @@ Ghostfolio is for you if you are... apps/client/src/app/pages/landing/landing-page.html - 269 + 263 @@ -10309,7 +10309,7 @@ trading stocks, ETFs or cryptocurrencies on multiple platforms apps/client/src/app/pages/landing/landing-page.html - 276 + 270 @@ -10317,7 +10317,7 @@ pursuing a buy & hold strategy apps/client/src/app/pages/landing/landing-page.html - 282 + 276 @@ -10325,7 +10325,7 @@ interested in getting insights of your portfolio composition apps/client/src/app/pages/landing/landing-page.html - 287 + 281 @@ -10333,7 +10333,7 @@ valuing privacy and data ownership apps/client/src/app/pages/landing/landing-page.html - 292 + 286 @@ -10341,7 +10341,7 @@ into minimalism apps/client/src/app/pages/landing/landing-page.html - 295 + 289 @@ -10349,7 +10349,7 @@ caring about diversifying your financial resources apps/client/src/app/pages/landing/landing-page.html - 299 + 293 @@ -10357,7 +10357,7 @@ interested in financial independence apps/client/src/app/pages/landing/landing-page.html - 303 + 297 @@ -10365,7 +10365,7 @@ saying no to spreadsheets in apps/client/src/app/pages/landing/landing-page.html - 307 + 301 @@ -10373,7 +10373,7 @@ still reading this list apps/client/src/app/pages/landing/landing-page.html - 310 + 304 @@ -10381,7 +10381,7 @@ Learn more about Ghostfolio apps/client/src/app/pages/landing/landing-page.html - 315 + 309 @@ -10389,7 +10389,7 @@ What our users are saying apps/client/src/app/pages/landing/landing-page.html - 323 + 317 @@ -10397,7 +10397,7 @@ Members from around the globe are using Ghostfolio Premium apps/client/src/app/pages/landing/landing-page.html - 355 + 349 @@ -10405,7 +10405,7 @@ How does Ghostfolio work? apps/client/src/app/pages/landing/landing-page.html - 367 + 361 @@ -10413,7 +10413,7 @@ Sign up anonymously* apps/client/src/app/pages/landing/landing-page.html - 376 + 370 @@ -10421,7 +10421,7 @@ * no e-mail address nor credit card required apps/client/src/app/pages/landing/landing-page.html - 378 + 372 @@ -10429,7 +10429,7 @@ Add any of your historical transactions apps/client/src/app/pages/landing/landing-page.html - 389 + 383 @@ -10437,7 +10437,7 @@ Get valuable insights of your portfolio composition apps/client/src/app/pages/landing/landing-page.html - 401 + 395 @@ -10445,7 +10445,7 @@ Are you ready? apps/client/src/app/pages/landing/landing-page.html - 413 + 407 @@ -10453,7 +10453,7 @@ Join now or check out the example account apps/client/src/app/pages/landing/landing-page.html - 414 + 408 @@ -10461,11 +10461,11 @@ Live Demo apps/client/src/app/pages/landing/landing-page.html - 55 + 49 apps/client/src/app/pages/landing/landing-page.html - 430 + 424 @@ -10473,7 +10473,7 @@ Get the full picture of your personal finances across multiple platforms. apps/client/src/app/pages/landing/landing-page.html - 238 + 232 @@ -10481,7 +10481,7 @@ Get started in only 3 steps apps/client/src/app/pages/landing/landing-page.html - 370 + 364 @@ -13196,14 +13196,6 @@ 127 - - New - New - - apps/client/src/app/pages/landing/landing-page.html - 7 - - Choose or drop a file here Choose or drop a file here @@ -13741,7 +13733,7 @@ Oops, cash balance transfer has failed. apps/client/src/app/pages/accounts/accounts-page.component.ts - 306 + 308 @@ -13765,7 +13757,7 @@ Extreme Fear libs/ui/src/lib/i18n.ts - 67 + 68 @@ -13773,7 +13765,7 @@ Extreme Greed libs/ui/src/lib/i18n.ts - 68 + 69 @@ -13781,7 +13773,7 @@ Neutral libs/ui/src/lib/i18n.ts - 71 + 72 @@ -15040,6 +15032,14 @@ 70 + + Liquidity + Liquidity + + libs/ui/src/lib/i18n.ts + 43 + + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index 7075781c5..7aafd8d57 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -1267,7 +1267,7 @@ apps/client/src/app/pages/landing/landing-page.html - 429 + 423 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html @@ -3034,7 +3034,7 @@ libs/ui/src/lib/i18n.ts - 69 + 70 @@ -3046,7 +3046,7 @@ libs/ui/src/lib/i18n.ts - 70 + 71 @@ -3250,7 +3250,7 @@ Immobiliare libs/ui/src/lib/i18n.ts - 43 + 44 @@ -3258,7 +3258,7 @@ Obbligazioni libs/ui/src/lib/i18n.ts - 46 + 47 @@ -3266,7 +3266,7 @@ Criptovaluta libs/ui/src/lib/i18n.ts - 47 + 48 @@ -3274,7 +3274,7 @@ ETF libs/ui/src/lib/i18n.ts - 48 + 49 @@ -3282,7 +3282,7 @@ Fondo comune di investimento libs/ui/src/lib/i18n.ts - 49 + 50 @@ -3290,7 +3290,7 @@ Metalli preziosi libs/ui/src/lib/i18n.ts - 50 + 51 @@ -3298,7 +3298,7 @@ Azione ordinaria privata libs/ui/src/lib/i18n.ts - 51 + 52 @@ -3306,7 +3306,7 @@ Azione libs/ui/src/lib/i18n.ts - 52 + 53 @@ -3346,7 +3346,7 @@ Nord America libs/ui/src/lib/i18n.ts - 62 + 63 @@ -3354,7 +3354,7 @@ Africa libs/ui/src/lib/i18n.ts - 59 + 60 @@ -3362,7 +3362,7 @@ Asia libs/ui/src/lib/i18n.ts - 60 + 61 @@ -3370,7 +3370,7 @@ Europa libs/ui/src/lib/i18n.ts - 61 + 62 @@ -3378,7 +3378,7 @@ Oceania libs/ui/src/lib/i18n.ts - 63 + 64 @@ -3386,7 +3386,7 @@ Sud America libs/ui/src/lib/i18n.ts - 64 + 65 @@ -10074,7 +10074,7 @@ Stelle su GitHub apps/client/src/app/pages/landing/landing-page.html - 93 + 87 apps/client/src/app/pages/open/open-page.html @@ -10086,7 +10086,7 @@ Estrazioni su Docker Hub apps/client/src/app/pages/landing/landing-page.html - 111 + 105 apps/client/src/app/pages/open/open-page.html @@ -10186,7 +10186,7 @@ Gestisci la tua ricchezza come un capo apps/client/src/app/pages/landing/landing-page.html - 11 + 5 @@ -10194,7 +10194,7 @@ Ghostfolio è uno strumento open source e rispettoso della privacy per la gestione delle tue finanze personali. Analizza la tua allocazione degli asset, conosci il tuo patrimonio netto e prendi decisioni di investimento solide e basate sui dati. apps/client/src/app/pages/landing/landing-page.html - 15 + 9 @@ -10202,11 +10202,11 @@ Inizia apps/client/src/app/pages/landing/landing-page.html - 47 + 41 apps/client/src/app/pages/landing/landing-page.html - 425 + 419 @@ -10214,7 +10214,7 @@ o apps/client/src/app/pages/landing/landing-page.html - 52 + 46 @@ -10222,7 +10222,7 @@ Utenti attivi mensili apps/client/src/app/pages/landing/landing-page.html - 75 + 69 @@ -10230,7 +10230,7 @@ Come si vede su apps/client/src/app/pages/landing/landing-page.html - 119 + 113 @@ -10238,7 +10238,7 @@ Proteggi i tuoi asset. Perfeziona la tua strategia di investimento personale. apps/client/src/app/pages/landing/landing-page.html - 221 + 215 @@ -10246,7 +10246,7 @@ Ghostfolio permette alle persone impegnate di tenere traccia di azioni, ETF o criptovalute senza essere tracciate. apps/client/src/app/pages/landing/landing-page.html - 225 + 219 @@ -10254,7 +10254,7 @@ Vista a 360° apps/client/src/app/pages/landing/landing-page.html - 236 + 230 @@ -10262,7 +10262,7 @@ Pronto per il Web3 apps/client/src/app/pages/landing/landing-page.html - 247 + 241 @@ -10270,7 +10270,7 @@ Usa Ghostfolio in modo anonimo e possiedi i tuoi dati finanziari. apps/client/src/app/pages/landing/landing-page.html - 249 + 243 @@ -10278,7 +10278,7 @@ Open source apps/client/src/app/pages/landing/landing-page.html - 257 + 251 @@ -10286,7 +10286,7 @@ Beneficia dei continui miglioramenti grazie a una forte comunità. apps/client/src/app/pages/landing/landing-page.html - 259 + 253 @@ -10294,7 +10294,7 @@ Perché Ghostfolio? apps/client/src/app/pages/landing/landing-page.html - 268 + 262 @@ -10302,7 +10302,7 @@ Ghostfolio è per te se... apps/client/src/app/pages/landing/landing-page.html - 269 + 263 @@ -10310,7 +10310,7 @@ fai trading di azioni, ETF o criptovalute su più piattaforme apps/client/src/app/pages/landing/landing-page.html - 276 + 270 @@ -10318,7 +10318,7 @@ persegui una strategia buy & hold apps/client/src/app/pages/landing/landing-page.html - 282 + 276 @@ -10326,7 +10326,7 @@ sei interessato a conoscere la composizione del tuo portafoglio apps/client/src/app/pages/landing/landing-page.html - 287 + 281 @@ -10334,7 +10334,7 @@ valorizzi la privacy e la proprietà dei dati apps/client/src/app/pages/landing/landing-page.html - 292 + 286 @@ -10342,7 +10342,7 @@ sei per il minimalismo apps/client/src/app/pages/landing/landing-page.html - 295 + 289 @@ -10350,7 +10350,7 @@ ti interessa diversificare le tue risorse finanziarie apps/client/src/app/pages/landing/landing-page.html - 299 + 293 @@ -10358,7 +10358,7 @@ sei interessato all'indipendenza finanziaria apps/client/src/app/pages/landing/landing-page.html - 303 + 297 @@ -10366,7 +10366,7 @@ non vuoi utilizzare il foglio elettronico nel apps/client/src/app/pages/landing/landing-page.html - 307 + 301 @@ -10374,7 +10374,7 @@ stai ancora leggendo questo elenco apps/client/src/app/pages/landing/landing-page.html - 310 + 304 @@ -10382,7 +10382,7 @@ Ulteriori informazioni su Ghostfolio apps/client/src/app/pages/landing/landing-page.html - 315 + 309 @@ -10390,7 +10390,7 @@ Cosa dicono i nostri utenti apps/client/src/app/pages/landing/landing-page.html - 323 + 317 @@ -10398,7 +10398,7 @@ Membri da tutto il mondo utilizzano Ghostfolio Premium apps/client/src/app/pages/landing/landing-page.html - 355 + 349 @@ -10406,7 +10406,7 @@ Come funziona Ghostfolio? apps/client/src/app/pages/landing/landing-page.html - 367 + 361 @@ -10414,7 +10414,7 @@ Iscriviti in modo anonimo* apps/client/src/app/pages/landing/landing-page.html - 376 + 370 @@ -10422,7 +10422,7 @@ * non è richiesto alcun indirizzo email né la carta di credito apps/client/src/app/pages/landing/landing-page.html - 378 + 372 @@ -10430,7 +10430,7 @@ Aggiungi le tue transazioni storiche apps/client/src/app/pages/landing/landing-page.html - 389 + 383 @@ -10438,7 +10438,7 @@ Ottieni informazioni preziose sulla composizione del tuo portafoglio apps/client/src/app/pages/landing/landing-page.html - 401 + 395 @@ -10446,7 +10446,7 @@ Seipronto? apps/client/src/app/pages/landing/landing-page.html - 413 + 407 @@ -10454,7 +10454,7 @@ Iscriviti adesso o consulta l'account di esempio apps/client/src/app/pages/landing/landing-page.html - 414 + 408 @@ -10462,11 +10462,11 @@ Demo in tempo reale apps/client/src/app/pages/landing/landing-page.html - 55 + 49 apps/client/src/app/pages/landing/landing-page.html - 430 + 424 @@ -10474,7 +10474,7 @@ Ottieni un quadro completo delle tue finanze personali su più piattaforme. apps/client/src/app/pages/landing/landing-page.html - 238 + 232 @@ -10482,7 +10482,7 @@ Inizia in soli 3 passi apps/client/src/app/pages/landing/landing-page.html - 370 + 364 @@ -13197,14 +13197,6 @@ 127 - - New - Nuovo - - apps/client/src/app/pages/landing/landing-page.html - 7 - - Choose or drop a file here Choose or drop a file here @@ -13742,7 +13734,7 @@ Oops, cash balance transfer has failed. apps/client/src/app/pages/accounts/accounts-page.component.ts - 306 + 308 @@ -13766,7 +13758,7 @@ Extreme Fear libs/ui/src/lib/i18n.ts - 67 + 68 @@ -13774,7 +13766,7 @@ Extreme Greed libs/ui/src/lib/i18n.ts - 68 + 69 @@ -13782,7 +13774,7 @@ Neutral libs/ui/src/lib/i18n.ts - 71 + 72 @@ -15041,6 +15033,14 @@ 70 + + Liquidity + Liquidity + + libs/ui/src/lib/i18n.ts + 43 + + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index b4b13691a..65a45962a 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -1266,7 +1266,7 @@ apps/client/src/app/pages/landing/landing-page.html - 429 + 423 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html @@ -3033,7 +3033,7 @@ libs/ui/src/lib/i18n.ts - 69 + 70 @@ -3045,7 +3045,7 @@ libs/ui/src/lib/i18n.ts - 70 + 71 @@ -3249,7 +3249,7 @@ Vastgoed libs/ui/src/lib/i18n.ts - 43 + 44 @@ -3257,7 +3257,7 @@ Obligatie libs/ui/src/lib/i18n.ts - 46 + 47 @@ -3265,7 +3265,7 @@ Cryptovaluta libs/ui/src/lib/i18n.ts - 47 + 48 @@ -3273,7 +3273,7 @@ ETF libs/ui/src/lib/i18n.ts - 48 + 49 @@ -3281,7 +3281,7 @@ Beleggingsfonds libs/ui/src/lib/i18n.ts - 49 + 50 @@ -3289,7 +3289,7 @@ Edelmetaal libs/ui/src/lib/i18n.ts - 50 + 51 @@ -3297,7 +3297,7 @@ Private equity libs/ui/src/lib/i18n.ts - 51 + 52 @@ -3305,7 +3305,7 @@ Aandeel libs/ui/src/lib/i18n.ts - 52 + 53 @@ -3345,7 +3345,7 @@ Noord-Amerika libs/ui/src/lib/i18n.ts - 62 + 63 @@ -3353,7 +3353,7 @@ Afrika libs/ui/src/lib/i18n.ts - 59 + 60 @@ -3361,7 +3361,7 @@ Azië libs/ui/src/lib/i18n.ts - 60 + 61 @@ -3369,7 +3369,7 @@ Europa libs/ui/src/lib/i18n.ts - 61 + 62 @@ -3377,7 +3377,7 @@ Oceanië libs/ui/src/lib/i18n.ts - 63 + 64 @@ -3385,7 +3385,7 @@ Zuid-Amerika libs/ui/src/lib/i18n.ts - 64 + 65 @@ -10073,7 +10073,7 @@ Sterren op GitHub apps/client/src/app/pages/landing/landing-page.html - 93 + 87 apps/client/src/app/pages/open/open-page.html @@ -10085,7 +10085,7 @@ Pulls op Docker Hub apps/client/src/app/pages/landing/landing-page.html - 111 + 105 apps/client/src/app/pages/open/open-page.html @@ -10185,7 +10185,7 @@ Beheer je vermogen als een baas apps/client/src/app/pages/landing/landing-page.html - 11 + 5 @@ -10193,7 +10193,7 @@ Ghostfolio is een privacygericht, open source dashboard voor je persoonlijke financiën. Analyseer je asset-allocatie, ken je nettowaarde en neem gefundeerde, datagedreven investeringsbeslissingen. apps/client/src/app/pages/landing/landing-page.html - 15 + 9 @@ -10201,11 +10201,11 @@ Aan de slag apps/client/src/app/pages/landing/landing-page.html - 47 + 41 apps/client/src/app/pages/landing/landing-page.html - 425 + 419 @@ -10213,7 +10213,7 @@ of apps/client/src/app/pages/landing/landing-page.html - 52 + 46 @@ -10221,7 +10221,7 @@ Maandelijkse actieve gebruikers apps/client/src/app/pages/landing/landing-page.html - 75 + 69 @@ -10229,7 +10229,7 @@ Zoals te zien in apps/client/src/app/pages/landing/landing-page.html - 119 + 113 @@ -10237,7 +10237,7 @@ Bescherm je financiële bezittingen. Verfijn je persoonlijke investeringsstrategie. apps/client/src/app/pages/landing/landing-page.html - 221 + 215 @@ -10245,7 +10245,7 @@ Ghostfolio stelt drukbezette mensen in staat om aandelen, ETF's of cryptocurrencies bij te houden zonder gevolgd te worden. apps/client/src/app/pages/landing/landing-page.html - 225 + 219 @@ -10253,7 +10253,7 @@ 360°-overzicht apps/client/src/app/pages/landing/landing-page.html - 236 + 230 @@ -10261,7 +10261,7 @@ Klaar voor Web3 apps/client/src/app/pages/landing/landing-page.html - 247 + 241 @@ -10269,7 +10269,7 @@ Gebruik Ghostfolio anoniem en bezit je financiële gegevens. apps/client/src/app/pages/landing/landing-page.html - 249 + 243 @@ -10277,7 +10277,7 @@ Open Source apps/client/src/app/pages/landing/landing-page.html - 257 + 251 @@ -10285,7 +10285,7 @@ Profiteer van voortdurende verbeteringen door een sterke gemeenschap. apps/client/src/app/pages/landing/landing-page.html - 259 + 253 @@ -10293,7 +10293,7 @@ Waarom Ghostfolio? apps/client/src/app/pages/landing/landing-page.html - 268 + 262 @@ -10301,7 +10301,7 @@ Ghostfolio is iets voor je als je... apps/client/src/app/pages/landing/landing-page.html - 269 + 263 @@ -10309,7 +10309,7 @@ handelt in aandelen, ETF's of cryptocurrencies op meerdere platforms apps/client/src/app/pages/landing/landing-page.html - 276 + 270 @@ -10317,7 +10317,7 @@ streeft naar een buy & hold strategie apps/client/src/app/pages/landing/landing-page.html - 282 + 276 @@ -10325,7 +10325,7 @@ geïnteresseerd bent in het krijgen van inzicht in je portefeuillesamenstelling apps/client/src/app/pages/landing/landing-page.html - 287 + 281 @@ -10333,7 +10333,7 @@ privacy en eigendom van gegevens waardeert apps/client/src/app/pages/landing/landing-page.html - 292 + 286 @@ -10341,7 +10341,7 @@ houdt van een minimalistisch ontwerp apps/client/src/app/pages/landing/landing-page.html - 295 + 289 @@ -10349,7 +10349,7 @@ zorgdraagt voor het diversifiëren van je financiële middelen apps/client/src/app/pages/landing/landing-page.html - 299 + 293 @@ -10357,7 +10357,7 @@ geïnteresseerd bent in financiële onafhankelijkheid apps/client/src/app/pages/landing/landing-page.html - 303 + 297 @@ -10365,7 +10365,7 @@ "nee" zegt tegen spreadsheets in apps/client/src/app/pages/landing/landing-page.html - 307 + 301 @@ -10373,7 +10373,7 @@ nog steeds deze lijst aan het lezen bent apps/client/src/app/pages/landing/landing-page.html - 310 + 304 @@ -10381,7 +10381,7 @@ Leer meer over Ghostfolio apps/client/src/app/pages/landing/landing-page.html - 315 + 309 @@ -10389,7 +10389,7 @@ Wat onze gebruikers zeggen apps/client/src/app/pages/landing/landing-page.html - 323 + 317 @@ -10397,7 +10397,7 @@ Leden van over de hele wereld gebruikenGhostfolio Premium apps/client/src/app/pages/landing/landing-page.html - 355 + 349 @@ -10405,7 +10405,7 @@ Hoe Ghostfolio werkt? apps/client/src/app/pages/landing/landing-page.html - 367 + 361 @@ -10413,7 +10413,7 @@ Anoniem aanmelden* apps/client/src/app/pages/landing/landing-page.html - 376 + 370 @@ -10421,7 +10421,7 @@ * geen e-mailadres of creditcard nodig apps/client/src/app/pages/landing/landing-page.html - 378 + 372 @@ -10429,7 +10429,7 @@ Voeg al je historische transacties toe apps/client/src/app/pages/landing/landing-page.html - 389 + 383 @@ -10437,7 +10437,7 @@ Krijg waardevolle inzichten in de samenstelling van je portefeuille apps/client/src/app/pages/landing/landing-page.html - 401 + 395 @@ -10445,7 +10445,7 @@ Ben je er klaar voor? apps/client/src/app/pages/landing/landing-page.html - 413 + 407 @@ -10453,7 +10453,7 @@ Nu lid worden of bekijk het voorbeeld account apps/client/src/app/pages/landing/landing-page.html - 414 + 408 @@ -10461,11 +10461,11 @@ Live Demo apps/client/src/app/pages/landing/landing-page.html - 55 + 49 apps/client/src/app/pages/landing/landing-page.html - 430 + 424 @@ -10473,7 +10473,7 @@ Krijg een volledig beeld van je persoonlijke financiën op meerdere platforms. apps/client/src/app/pages/landing/landing-page.html - 238 + 232 @@ -10481,7 +10481,7 @@ Aan de slag in slechts 3 stappen apps/client/src/app/pages/landing/landing-page.html - 370 + 364 @@ -13196,14 +13196,6 @@ 127 - - New - New - - apps/client/src/app/pages/landing/landing-page.html - 7 - - Choose or drop a file here Choose or drop a file here @@ -13741,7 +13733,7 @@ Oops, cash balance transfer has failed. apps/client/src/app/pages/accounts/accounts-page.component.ts - 306 + 308 @@ -13765,7 +13757,7 @@ Extreme Fear libs/ui/src/lib/i18n.ts - 67 + 68 @@ -13773,7 +13765,7 @@ Extreme Greed libs/ui/src/lib/i18n.ts - 68 + 69 @@ -13781,7 +13773,7 @@ Neutral libs/ui/src/lib/i18n.ts - 71 + 72 @@ -15040,6 +15032,14 @@ 70 + + Liquidity + Liquidity + + libs/ui/src/lib/i18n.ts + 43 + + diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf index 1d7e40388..966be7459 100644 --- a/apps/client/src/locales/messages.pl.xlf +++ b/apps/client/src/locales/messages.pl.xlf @@ -3026,7 +3026,7 @@ libs/ui/src/lib/i18n.ts - 69 + 70 @@ -3038,7 +3038,7 @@ libs/ui/src/lib/i18n.ts - 70 + 71 @@ -3202,7 +3202,7 @@ apps/client/src/app/pages/landing/landing-page.html - 429 + 423 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html @@ -4140,7 +4140,7 @@ Oops, cash balance transfer has failed. apps/client/src/app/pages/accounts/accounts-page.component.ts - 306 + 308 @@ -4523,20 +4523,12 @@ 14 - - New - New - - apps/client/src/app/pages/landing/landing-page.html - 7 - - Manage your wealth like a boss Manage your wealth like a boss apps/client/src/app/pages/landing/landing-page.html - 11 + 5 @@ -4544,7 +4536,7 @@ Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. apps/client/src/app/pages/landing/landing-page.html - 15 + 9 @@ -4552,11 +4544,11 @@ Get Started apps/client/src/app/pages/landing/landing-page.html - 47 + 41 apps/client/src/app/pages/landing/landing-page.html - 425 + 419 @@ -4564,7 +4556,7 @@ or apps/client/src/app/pages/landing/landing-page.html - 52 + 46 @@ -4572,11 +4564,11 @@ Live Demo apps/client/src/app/pages/landing/landing-page.html - 55 + 49 apps/client/src/app/pages/landing/landing-page.html - 430 + 424 @@ -4584,7 +4576,7 @@ Monthly Active Users apps/client/src/app/pages/landing/landing-page.html - 75 + 69 @@ -4592,7 +4584,7 @@ Stars on GitHub apps/client/src/app/pages/landing/landing-page.html - 93 + 87 apps/client/src/app/pages/open/open-page.html @@ -4604,7 +4596,7 @@ Pulls on Docker Hub apps/client/src/app/pages/landing/landing-page.html - 111 + 105 apps/client/src/app/pages/open/open-page.html @@ -4616,7 +4608,7 @@ As seen in apps/client/src/app/pages/landing/landing-page.html - 119 + 113 @@ -4624,7 +4616,7 @@ Protect your assets. Refine your personal investment strategy. apps/client/src/app/pages/landing/landing-page.html - 221 + 215 @@ -4632,7 +4624,7 @@ Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. apps/client/src/app/pages/landing/landing-page.html - 225 + 219 @@ -4640,7 +4632,7 @@ 360° View apps/client/src/app/pages/landing/landing-page.html - 236 + 230 @@ -4648,7 +4640,7 @@ Get the full picture of your personal finances across multiple platforms. apps/client/src/app/pages/landing/landing-page.html - 238 + 232 @@ -4656,7 +4648,7 @@ Web3 Ready apps/client/src/app/pages/landing/landing-page.html - 247 + 241 @@ -4664,7 +4656,7 @@ Use Ghostfolio anonymously and own your financial data. apps/client/src/app/pages/landing/landing-page.html - 249 + 243 @@ -4672,7 +4664,7 @@ Open Source apps/client/src/app/pages/landing/landing-page.html - 257 + 251 @@ -4680,7 +4672,7 @@ Benefit from continuous improvements through a strong community. apps/client/src/app/pages/landing/landing-page.html - 259 + 253 @@ -4688,7 +4680,7 @@ Why Ghostfolio? apps/client/src/app/pages/landing/landing-page.html - 268 + 262 @@ -4696,7 +4688,7 @@ Ghostfolio is for you if you are... apps/client/src/app/pages/landing/landing-page.html - 269 + 263 @@ -4704,7 +4696,7 @@ trading stocks, ETFs or cryptocurrencies on multiple platforms apps/client/src/app/pages/landing/landing-page.html - 276 + 270 @@ -4712,7 +4704,7 @@ pursuing a buy & hold strategy apps/client/src/app/pages/landing/landing-page.html - 282 + 276 @@ -4720,7 +4712,7 @@ interested in getting insights of your portfolio composition apps/client/src/app/pages/landing/landing-page.html - 287 + 281 @@ -4728,7 +4720,7 @@ valuing privacy and data ownership apps/client/src/app/pages/landing/landing-page.html - 292 + 286 @@ -4736,7 +4728,7 @@ into minimalism apps/client/src/app/pages/landing/landing-page.html - 295 + 289 @@ -4744,7 +4736,7 @@ caring about diversifying your financial resources apps/client/src/app/pages/landing/landing-page.html - 299 + 293 @@ -4752,7 +4744,7 @@ interested in financial independence apps/client/src/app/pages/landing/landing-page.html - 303 + 297 @@ -4760,7 +4752,7 @@ saying no to spreadsheets in apps/client/src/app/pages/landing/landing-page.html - 307 + 301 @@ -4768,7 +4760,7 @@ still reading this list apps/client/src/app/pages/landing/landing-page.html - 310 + 304 @@ -4776,7 +4768,7 @@ Learn more about Ghostfolio apps/client/src/app/pages/landing/landing-page.html - 315 + 309 @@ -4784,7 +4776,7 @@ What our users are saying apps/client/src/app/pages/landing/landing-page.html - 323 + 317 @@ -4792,7 +4784,7 @@ Members from around the globe are using Ghostfolio Premium apps/client/src/app/pages/landing/landing-page.html - 355 + 349 @@ -4800,7 +4792,7 @@ How does Ghostfolio work? apps/client/src/app/pages/landing/landing-page.html - 367 + 361 @@ -4808,7 +4800,7 @@ Get started in only 3 steps apps/client/src/app/pages/landing/landing-page.html - 370 + 364 @@ -4816,7 +4808,7 @@ Sign up anonymously* apps/client/src/app/pages/landing/landing-page.html - 376 + 370 @@ -4824,7 +4816,7 @@ * no e-mail address nor credit card required apps/client/src/app/pages/landing/landing-page.html - 378 + 372 @@ -4832,7 +4824,7 @@ Add any of your historical transactions apps/client/src/app/pages/landing/landing-page.html - 389 + 383 @@ -4840,7 +4832,7 @@ Get valuable insights of your portfolio composition apps/client/src/app/pages/landing/landing-page.html - 401 + 395 @@ -4848,7 +4840,7 @@ Are you ready? apps/client/src/app/pages/landing/landing-page.html - 413 + 407 @@ -4856,7 +4848,7 @@ Join now or check out the example account apps/client/src/app/pages/landing/landing-page.html - 414 + 408 @@ -13636,7 +13628,7 @@ Real Estate libs/ui/src/lib/i18n.ts - 43 + 44 @@ -13644,7 +13636,7 @@ Bond libs/ui/src/lib/i18n.ts - 46 + 47 @@ -13652,7 +13644,7 @@ Cryptocurrency libs/ui/src/lib/i18n.ts - 47 + 48 @@ -13660,7 +13652,7 @@ ETF libs/ui/src/lib/i18n.ts - 48 + 49 @@ -13668,7 +13660,7 @@ Mutual Fund libs/ui/src/lib/i18n.ts - 49 + 50 @@ -13676,7 +13668,7 @@ Precious Metal libs/ui/src/lib/i18n.ts - 50 + 51 @@ -13684,7 +13676,7 @@ Private Equity libs/ui/src/lib/i18n.ts - 51 + 52 @@ -13692,7 +13684,7 @@ Stock libs/ui/src/lib/i18n.ts - 52 + 53 @@ -13700,7 +13692,7 @@ Africa libs/ui/src/lib/i18n.ts - 59 + 60 @@ -13708,7 +13700,7 @@ Asia libs/ui/src/lib/i18n.ts - 60 + 61 @@ -13716,7 +13708,7 @@ Europe libs/ui/src/lib/i18n.ts - 61 + 62 @@ -13724,7 +13716,7 @@ North America libs/ui/src/lib/i18n.ts - 62 + 63 @@ -13732,7 +13724,7 @@ Oceania libs/ui/src/lib/i18n.ts - 63 + 64 @@ -13740,7 +13732,7 @@ South America libs/ui/src/lib/i18n.ts - 64 + 65 @@ -13748,7 +13740,7 @@ Extreme Fear libs/ui/src/lib/i18n.ts - 67 + 68 @@ -13756,7 +13748,7 @@ Extreme Greed libs/ui/src/lib/i18n.ts - 68 + 69 @@ -13764,7 +13756,7 @@ Neutral libs/ui/src/lib/i18n.ts - 71 + 72 @@ -15043,6 +15035,14 @@ 70 + + Liquidity + Liquidity + + libs/ui/src/lib/i18n.ts + 43 + + diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index d7156d354..ad6aedb7a 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -1418,7 +1418,7 @@ libs/ui/src/lib/i18n.ts - 69 + 70 @@ -1430,7 +1430,7 @@ libs/ui/src/lib/i18n.ts - 70 + 71 @@ -1518,7 +1518,7 @@ apps/client/src/app/pages/landing/landing-page.html - 429 + 423 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html @@ -3293,7 +3293,7 @@ Imobiliário libs/ui/src/lib/i18n.ts - 43 + 44 @@ -3301,7 +3301,7 @@ Obrigação libs/ui/src/lib/i18n.ts - 46 + 47 @@ -3309,7 +3309,7 @@ Criptomoedas libs/ui/src/lib/i18n.ts - 47 + 48 @@ -3317,7 +3317,7 @@ ETF libs/ui/src/lib/i18n.ts - 48 + 49 @@ -3325,7 +3325,7 @@ Fundo de Investimento libs/ui/src/lib/i18n.ts - 49 + 50 @@ -3333,7 +3333,7 @@ Metal Precioso libs/ui/src/lib/i18n.ts - 50 + 51 @@ -3341,7 +3341,7 @@ Private Equity libs/ui/src/lib/i18n.ts - 51 + 52 @@ -3349,7 +3349,7 @@ Ação libs/ui/src/lib/i18n.ts - 52 + 53 @@ -3357,7 +3357,7 @@ África libs/ui/src/lib/i18n.ts - 59 + 60 @@ -3365,7 +3365,7 @@ Ásia libs/ui/src/lib/i18n.ts - 60 + 61 @@ -3373,7 +3373,7 @@ Europa libs/ui/src/lib/i18n.ts - 61 + 62 @@ -3381,7 +3381,7 @@ América do Norte libs/ui/src/lib/i18n.ts - 62 + 63 @@ -3389,7 +3389,7 @@ Oceânia libs/ui/src/lib/i18n.ts - 63 + 64 @@ -3397,7 +3397,7 @@ América do Sul libs/ui/src/lib/i18n.ts - 64 + 65 @@ -10073,7 +10073,7 @@ Stars on GitHub apps/client/src/app/pages/landing/landing-page.html - 93 + 87 apps/client/src/app/pages/open/open-page.html @@ -10085,7 +10085,7 @@ Pulls on Docker Hub apps/client/src/app/pages/landing/landing-page.html - 111 + 105 apps/client/src/app/pages/open/open-page.html @@ -10185,7 +10185,7 @@ Manage your wealth like a boss apps/client/src/app/pages/landing/landing-page.html - 11 + 5 @@ -10193,7 +10193,7 @@ Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. apps/client/src/app/pages/landing/landing-page.html - 15 + 9 @@ -10201,11 +10201,11 @@ Get Started apps/client/src/app/pages/landing/landing-page.html - 47 + 41 apps/client/src/app/pages/landing/landing-page.html - 425 + 419 @@ -10213,7 +10213,7 @@ or apps/client/src/app/pages/landing/landing-page.html - 52 + 46 @@ -10221,7 +10221,7 @@ Monthly Active Users apps/client/src/app/pages/landing/landing-page.html - 75 + 69 @@ -10229,7 +10229,7 @@ As seen in apps/client/src/app/pages/landing/landing-page.html - 119 + 113 @@ -10237,7 +10237,7 @@ Protect your assets. Refine your personal investment strategy. apps/client/src/app/pages/landing/landing-page.html - 221 + 215 @@ -10245,7 +10245,7 @@ Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. apps/client/src/app/pages/landing/landing-page.html - 225 + 219 @@ -10253,7 +10253,7 @@ 360° View apps/client/src/app/pages/landing/landing-page.html - 236 + 230 @@ -10261,7 +10261,7 @@ Web3 Ready apps/client/src/app/pages/landing/landing-page.html - 247 + 241 @@ -10269,7 +10269,7 @@ Use Ghostfolio anonymously and own your financial data. apps/client/src/app/pages/landing/landing-page.html - 249 + 243 @@ -10277,7 +10277,7 @@ Open Source apps/client/src/app/pages/landing/landing-page.html - 257 + 251 @@ -10285,7 +10285,7 @@ Benefit from continuous improvements through a strong community. apps/client/src/app/pages/landing/landing-page.html - 259 + 253 @@ -10293,7 +10293,7 @@ Why Ghostfolio? apps/client/src/app/pages/landing/landing-page.html - 268 + 262 @@ -10301,7 +10301,7 @@ Ghostfolio is for you if you are... apps/client/src/app/pages/landing/landing-page.html - 269 + 263 @@ -10309,7 +10309,7 @@ trading stocks, ETFs or cryptocurrencies on multiple platforms apps/client/src/app/pages/landing/landing-page.html - 276 + 270 @@ -10317,7 +10317,7 @@ pursuing a buy & hold strategy apps/client/src/app/pages/landing/landing-page.html - 282 + 276 @@ -10325,7 +10325,7 @@ interested in getting insights of your portfolio composition apps/client/src/app/pages/landing/landing-page.html - 287 + 281 @@ -10333,7 +10333,7 @@ valuing privacy and data ownership apps/client/src/app/pages/landing/landing-page.html - 292 + 286 @@ -10341,7 +10341,7 @@ into minimalism apps/client/src/app/pages/landing/landing-page.html - 295 + 289 @@ -10349,7 +10349,7 @@ caring about diversifying your financial resources apps/client/src/app/pages/landing/landing-page.html - 299 + 293 @@ -10357,7 +10357,7 @@ interested in financial independence apps/client/src/app/pages/landing/landing-page.html - 303 + 297 @@ -10365,7 +10365,7 @@ saying no to spreadsheets in apps/client/src/app/pages/landing/landing-page.html - 307 + 301 @@ -10373,7 +10373,7 @@ still reading this list apps/client/src/app/pages/landing/landing-page.html - 310 + 304 @@ -10381,7 +10381,7 @@ Learn more about Ghostfolio apps/client/src/app/pages/landing/landing-page.html - 315 + 309 @@ -10389,7 +10389,7 @@ What our users are saying apps/client/src/app/pages/landing/landing-page.html - 323 + 317 @@ -10397,7 +10397,7 @@ Members from around the globe are using Ghostfolio Premium apps/client/src/app/pages/landing/landing-page.html - 355 + 349 @@ -10405,7 +10405,7 @@ How does Ghostfolio work? apps/client/src/app/pages/landing/landing-page.html - 367 + 361 @@ -10413,7 +10413,7 @@ Sign up anonymously* apps/client/src/app/pages/landing/landing-page.html - 376 + 370 @@ -10421,7 +10421,7 @@ * no e-mail address nor credit card required apps/client/src/app/pages/landing/landing-page.html - 378 + 372 @@ -10429,7 +10429,7 @@ Add any of your historical transactions apps/client/src/app/pages/landing/landing-page.html - 389 + 383 @@ -10437,7 +10437,7 @@ Get valuable insights of your portfolio composition apps/client/src/app/pages/landing/landing-page.html - 401 + 395 @@ -10445,7 +10445,7 @@ Are you ready? apps/client/src/app/pages/landing/landing-page.html - 413 + 407 @@ -10453,7 +10453,7 @@ Join now or check out the example account apps/client/src/app/pages/landing/landing-page.html - 414 + 408 @@ -10461,11 +10461,11 @@ Live Demo apps/client/src/app/pages/landing/landing-page.html - 55 + 49 apps/client/src/app/pages/landing/landing-page.html - 430 + 424 @@ -10473,7 +10473,7 @@ Get the full picture of your personal finances across multiple platforms. apps/client/src/app/pages/landing/landing-page.html - 238 + 232 @@ -10481,7 +10481,7 @@ Get started in only 3 steps apps/client/src/app/pages/landing/landing-page.html - 370 + 364 @@ -13196,14 +13196,6 @@ 127 - - New - New - - apps/client/src/app/pages/landing/landing-page.html - 7 - - Choose or drop a file here Choose or drop a file here @@ -13741,7 +13733,7 @@ Oops, cash balance transfer has failed. apps/client/src/app/pages/accounts/accounts-page.component.ts - 306 + 308 @@ -13765,7 +13757,7 @@ Extreme Fear libs/ui/src/lib/i18n.ts - 67 + 68 @@ -13773,7 +13765,7 @@ Extreme Greed libs/ui/src/lib/i18n.ts - 68 + 69 @@ -13781,7 +13773,7 @@ Neutral libs/ui/src/lib/i18n.ts - 71 + 72 @@ -15040,6 +15032,14 @@ 70 + + Liquidity + Liquidity + + libs/ui/src/lib/i18n.ts + 43 + + diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf index 51dd75275..af530e9d5 100644 --- a/apps/client/src/locales/messages.tr.xlf +++ b/apps/client/src/locales/messages.tr.xlf @@ -2878,7 +2878,7 @@ libs/ui/src/lib/i18n.ts - 69 + 70 @@ -2890,7 +2890,7 @@ libs/ui/src/lib/i18n.ts - 70 + 71 @@ -3054,7 +3054,7 @@ apps/client/src/app/pages/landing/landing-page.html - 429 + 423 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html @@ -4065,7 +4065,7 @@ Servetinizi bir patron gibi yönetin apps/client/src/app/pages/landing/landing-page.html - 11 + 5 @@ -4073,7 +4073,7 @@ Ghostfolio, mali durumunuz için gizlilik odaklı, açık kaynaklı bir kontrol panelidi. Varlık dağılımınızı analiz edin, net değerinizi öğrenin ve sağlam, veriye dayalı yatırım kararları alın. apps/client/src/app/pages/landing/landing-page.html - 15 + 9 @@ -4081,11 +4081,11 @@ Başla apps/client/src/app/pages/landing/landing-page.html - 47 + 41 apps/client/src/app/pages/landing/landing-page.html - 425 + 419 @@ -4093,7 +4093,7 @@ veya apps/client/src/app/pages/landing/landing-page.html - 52 + 46 @@ -4101,11 +4101,11 @@ Canlı Deneme apps/client/src/app/pages/landing/landing-page.html - 55 + 49 apps/client/src/app/pages/landing/landing-page.html - 430 + 424 @@ -4113,7 +4113,7 @@ Aylık Aktif Kullanıcılar apps/client/src/app/pages/landing/landing-page.html - 75 + 69 @@ -4121,7 +4121,7 @@ GitHub'daki Beğeniler apps/client/src/app/pages/landing/landing-page.html - 93 + 87 apps/client/src/app/pages/open/open-page.html @@ -4133,7 +4133,7 @@ Docker Hub'ta Çekmeler apps/client/src/app/pages/landing/landing-page.html - 111 + 105 apps/client/src/app/pages/open/open-page.html @@ -4145,7 +4145,7 @@ Şurada görüldüğü gibi apps/client/src/app/pages/landing/landing-page.html - 119 + 113 @@ -4153,7 +4153,7 @@ varlıklarınızı koruyun. Kişisel yatırım stratejinizi geliştirin. apps/client/src/app/pages/landing/landing-page.html - 221 + 215 @@ -4161,7 +4161,7 @@ Ghostfolio, takip edilmeden hisse senetleri, ETF'ler veya kripto paraları izlemek isteyen yoğun insanlara güç verir. apps/client/src/app/pages/landing/landing-page.html - 225 + 219 @@ -4169,7 +4169,7 @@ 360° Görünüm apps/client/src/app/pages/landing/landing-page.html - 236 + 230 @@ -4177,7 +4177,7 @@ Kişisel finansınızın tam resmini birden fazla platformda edinin. apps/client/src/app/pages/landing/landing-page.html - 238 + 232 @@ -4185,7 +4185,7 @@ Web3 Hazır apps/client/src/app/pages/landing/landing-page.html - 247 + 241 @@ -4193,7 +4193,7 @@ Ghostfolio'yu anonim olarak kullanın ve finansal verilerinize sahip çıkın. apps/client/src/app/pages/landing/landing-page.html - 249 + 243 @@ -4201,7 +4201,7 @@ Açık Kaynak apps/client/src/app/pages/landing/landing-page.html - 257 + 251 @@ -4209,7 +4209,7 @@ Güçlü bir topluluk aracılığıyla sürekli gelişmelerden faydalanın. apps/client/src/app/pages/landing/landing-page.html - 259 + 253 @@ -4217,7 +4217,7 @@ Why Ghostfolio? apps/client/src/app/pages/landing/landing-page.html - 268 + 262 @@ -4225,7 +4225,7 @@ Ghostfolio tam size göre, apps/client/src/app/pages/landing/landing-page.html - 269 + 263 @@ -4233,7 +4233,7 @@ Birden fazla platformda hisse senedi, ETF veya kripto para ticareti yapıyorsanız, apps/client/src/app/pages/landing/landing-page.html - 276 + 270 @@ -4241,7 +4241,7 @@ al ve tut stratejisi izliyorsanız, apps/client/src/app/pages/landing/landing-page.html - 282 + 276 @@ -4249,7 +4249,7 @@ Portföy bileşimine dair içgörüleri edinmek istiyorsanız, apps/client/src/app/pages/landing/landing-page.html - 287 + 281 @@ -4257,7 +4257,7 @@ Gizliliğe ve verilerinize sahip çıkmayı önemsiyorsanız apps/client/src/app/pages/landing/landing-page.html - 292 + 286 @@ -4265,7 +4265,7 @@ minimalizme ilgi duyuyorsanız apps/client/src/app/pages/landing/landing-page.html - 295 + 289 @@ -4273,7 +4273,7 @@ finansal kaynaklarınızı çeşitlendirmeye önem veriyorsanız apps/client/src/app/pages/landing/landing-page.html - 299 + 293 @@ -4281,7 +4281,7 @@ finansal özgürlük peşindeyseniz apps/client/src/app/pages/landing/landing-page.html - 303 + 297 @@ -4289,7 +4289,7 @@ elektronik tablo uygulamalarına hayır diyorsanız apps/client/src/app/pages/landing/landing-page.html - 307 + 301 @@ -4297,7 +4297,7 @@ bu listeyi hala okuyorsanız apps/client/src/app/pages/landing/landing-page.html - 310 + 304 @@ -4305,7 +4305,7 @@ Ghostfolio hakkında daha fazla bilgi edinin apps/client/src/app/pages/landing/landing-page.html - 315 + 309 @@ -4313,7 +4313,7 @@ What our users are saying apps/client/src/app/pages/landing/landing-page.html - 323 + 317 @@ -4321,7 +4321,7 @@ Members from around the globe are using Ghostfolio Premium apps/client/src/app/pages/landing/landing-page.html - 355 + 349 @@ -4329,7 +4329,7 @@ How does Ghostfolio work? apps/client/src/app/pages/landing/landing-page.html - 367 + 361 @@ -4337,7 +4337,7 @@ Sadece 3 adımda başlayın apps/client/src/app/pages/landing/landing-page.html - 370 + 364 @@ -4345,7 +4345,7 @@ Anonim olarak kaydolun* apps/client/src/app/pages/landing/landing-page.html - 376 + 370 @@ -4353,7 +4353,7 @@ * e-posta adresi veya kredi kartı gerekmez apps/client/src/app/pages/landing/landing-page.html - 378 + 372 @@ -4361,7 +4361,7 @@ Herhangi bir geçmiş işleminizi ekleyin apps/client/src/app/pages/landing/landing-page.html - 389 + 383 @@ -4369,7 +4369,7 @@ Portföy bileşiminizle ilgili değerli bilgiler edinin apps/client/src/app/pages/landing/landing-page.html - 401 + 395 @@ -4377,7 +4377,7 @@ Are you ready? apps/client/src/app/pages/landing/landing-page.html - 413 + 407 @@ -4385,7 +4385,7 @@ Join now or check out the example account apps/client/src/app/pages/landing/landing-page.html - 414 + 408 @@ -13041,7 +13041,7 @@ Real Estate libs/ui/src/lib/i18n.ts - 43 + 44 @@ -13049,7 +13049,7 @@ Bond libs/ui/src/lib/i18n.ts - 46 + 47 @@ -13057,7 +13057,7 @@ Cryptocurrency libs/ui/src/lib/i18n.ts - 47 + 48 @@ -13065,7 +13065,7 @@ ETF libs/ui/src/lib/i18n.ts - 48 + 49 @@ -13073,7 +13073,7 @@ Mutual Fund libs/ui/src/lib/i18n.ts - 49 + 50 @@ -13081,7 +13081,7 @@ Precious Metal libs/ui/src/lib/i18n.ts - 50 + 51 @@ -13089,7 +13089,7 @@ Private Equity libs/ui/src/lib/i18n.ts - 51 + 52 @@ -13097,7 +13097,7 @@ Stock libs/ui/src/lib/i18n.ts - 52 + 53 @@ -13105,7 +13105,7 @@ Africa libs/ui/src/lib/i18n.ts - 59 + 60 @@ -13113,7 +13113,7 @@ Asia libs/ui/src/lib/i18n.ts - 60 + 61 @@ -13121,7 +13121,7 @@ Europe libs/ui/src/lib/i18n.ts - 61 + 62 @@ -13129,7 +13129,7 @@ North America libs/ui/src/lib/i18n.ts - 62 + 63 @@ -13137,7 +13137,7 @@ Oceania libs/ui/src/lib/i18n.ts - 63 + 64 @@ -13145,7 +13145,7 @@ South America libs/ui/src/lib/i18n.ts - 64 + 65 @@ -13184,14 +13184,6 @@ 312 - - New - New - - apps/client/src/app/pages/landing/landing-page.html - 7 - - (Last 24 hours) (Last 24 hours) @@ -13741,7 +13733,7 @@ Oops, cash balance transfer has failed. apps/client/src/app/pages/accounts/accounts-page.component.ts - 306 + 308 @@ -13765,7 +13757,7 @@ Extreme Fear libs/ui/src/lib/i18n.ts - 67 + 68 @@ -13773,7 +13765,7 @@ Extreme Greed libs/ui/src/lib/i18n.ts - 68 + 69 @@ -13781,7 +13773,7 @@ Neutral libs/ui/src/lib/i18n.ts - 71 + 72 @@ -15040,6 +15032,14 @@ 70 + + Liquidity + Liquidity + + libs/ui/src/lib/i18n.ts + 43 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index b39de189e..d12c7f060 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -2893,7 +2893,7 @@ libs/ui/src/lib/i18n.ts - 69 + 70 @@ -2904,7 +2904,7 @@ libs/ui/src/lib/i18n.ts - 70 + 71 @@ -3050,7 +3050,7 @@ apps/client/src/app/pages/landing/landing-page.html - 429 + 423 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html @@ -3892,7 +3892,7 @@ Oops, cash balance transfer has failed. apps/client/src/app/pages/accounts/accounts-page.component.ts - 306 + 308 @@ -4237,68 +4237,61 @@ 14 - - New - - apps/client/src/app/pages/landing/landing-page.html - 7 - - Manage your wealth like a boss apps/client/src/app/pages/landing/landing-page.html - 11 + 5 Ghostfolio is a privacy-first, open source dashboard for your personal finances. Break down your asset allocation, know your net worth and make solid, data-driven investment decisions. apps/client/src/app/pages/landing/landing-page.html - 15 + 9 Get Started apps/client/src/app/pages/landing/landing-page.html - 47 + 41 apps/client/src/app/pages/landing/landing-page.html - 425 + 419 or apps/client/src/app/pages/landing/landing-page.html - 52 + 46 Live Demo apps/client/src/app/pages/landing/landing-page.html - 55 + 49 apps/client/src/app/pages/landing/landing-page.html - 430 + 424 Monthly Active Users apps/client/src/app/pages/landing/landing-page.html - 75 + 69 Stars on GitHub apps/client/src/app/pages/landing/landing-page.html - 93 + 87 apps/client/src/app/pages/open/open-page.html @@ -4309,7 +4302,7 @@ Pulls on Docker Hub apps/client/src/app/pages/landing/landing-page.html - 111 + 105 apps/client/src/app/pages/open/open-page.html @@ -4320,217 +4313,217 @@ As seen in apps/client/src/app/pages/landing/landing-page.html - 119 + 113 Protect your assets. Refine your personal investment strategy. apps/client/src/app/pages/landing/landing-page.html - 221 + 215 Ghostfolio empowers busy people to keep track of stocks, ETFs or cryptocurrencies without being tracked. apps/client/src/app/pages/landing/landing-page.html - 225 + 219 360° View apps/client/src/app/pages/landing/landing-page.html - 236 + 230 Get the full picture of your personal finances across multiple platforms. apps/client/src/app/pages/landing/landing-page.html - 238 + 232 Web3 Ready apps/client/src/app/pages/landing/landing-page.html - 247 + 241 Use Ghostfolio anonymously and own your financial data. apps/client/src/app/pages/landing/landing-page.html - 249 + 243 Open Source apps/client/src/app/pages/landing/landing-page.html - 257 + 251 Benefit from continuous improvements through a strong community. apps/client/src/app/pages/landing/landing-page.html - 259 + 253 Why Ghostfolio? apps/client/src/app/pages/landing/landing-page.html - 268 + 262 Ghostfolio is for you if you are... apps/client/src/app/pages/landing/landing-page.html - 269 + 263 trading stocks, ETFs or cryptocurrencies on multiple platforms apps/client/src/app/pages/landing/landing-page.html - 276 + 270 pursuing a buy & hold strategy apps/client/src/app/pages/landing/landing-page.html - 282 + 276 interested in getting insights of your portfolio composition apps/client/src/app/pages/landing/landing-page.html - 287 + 281 valuing privacy and data ownership apps/client/src/app/pages/landing/landing-page.html - 292 + 286 into minimalism apps/client/src/app/pages/landing/landing-page.html - 295 + 289 caring about diversifying your financial resources apps/client/src/app/pages/landing/landing-page.html - 299 + 293 interested in financial independence apps/client/src/app/pages/landing/landing-page.html - 303 + 297 saying no to spreadsheets in apps/client/src/app/pages/landing/landing-page.html - 307 + 301 still reading this list apps/client/src/app/pages/landing/landing-page.html - 310 + 304 Learn more about Ghostfolio apps/client/src/app/pages/landing/landing-page.html - 315 + 309 What our users are saying apps/client/src/app/pages/landing/landing-page.html - 323 + 317 Members from around the globe are using Ghostfolio Premium apps/client/src/app/pages/landing/landing-page.html - 355 + 349 How does Ghostfolio work? apps/client/src/app/pages/landing/landing-page.html - 367 + 361 Get started in only 3 steps apps/client/src/app/pages/landing/landing-page.html - 370 + 364 Sign up anonymously* apps/client/src/app/pages/landing/landing-page.html - 376 + 370 * no e-mail address nor credit card required apps/client/src/app/pages/landing/landing-page.html - 378 + 372 Add any of your historical transactions apps/client/src/app/pages/landing/landing-page.html - 389 + 383 Get valuable insights of your portfolio composition apps/client/src/app/pages/landing/landing-page.html - 401 + 395 Are you ready? apps/client/src/app/pages/landing/landing-page.html - 413 + 407 Join now or check out the example account apps/client/src/app/pages/landing/landing-page.html - 414 + 408 @@ -13918,119 +13911,119 @@ Real Estate libs/ui/src/lib/i18n.ts - 43 + 44 Bond libs/ui/src/lib/i18n.ts - 46 + 47 Cryptocurrency libs/ui/src/lib/i18n.ts - 47 + 48 ETF libs/ui/src/lib/i18n.ts - 48 + 49 Mutual Fund libs/ui/src/lib/i18n.ts - 49 + 50 Precious Metal libs/ui/src/lib/i18n.ts - 50 + 51 Private Equity libs/ui/src/lib/i18n.ts - 51 + 52 Stock libs/ui/src/lib/i18n.ts - 52 + 53 Africa libs/ui/src/lib/i18n.ts - 59 + 60 Asia libs/ui/src/lib/i18n.ts - 60 + 61 Europe libs/ui/src/lib/i18n.ts - 61 + 62 North America libs/ui/src/lib/i18n.ts - 62 + 63 Oceania libs/ui/src/lib/i18n.ts - 63 + 64 South America libs/ui/src/lib/i18n.ts - 64 + 65 Extreme Fear libs/ui/src/lib/i18n.ts - 67 + 68 Extreme Greed libs/ui/src/lib/i18n.ts - 68 + 69 Neutral libs/ui/src/lib/i18n.ts - 71 + 72 @@ -14412,6 +14405,13 @@ 63 + + Liquidity + + libs/ui/src/lib/i18n.ts + 43 + + diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf index 8b44e31b6..36f0ef1bc 100644 --- a/apps/client/src/locales/messages.zh.xlf +++ b/apps/client/src/locales/messages.zh.xlf @@ -3043,7 +3043,7 @@ libs/ui/src/lib/i18n.ts - 69 + 70 @@ -3055,7 +3055,7 @@ libs/ui/src/lib/i18n.ts - 70 + 71 @@ -3219,7 +3219,7 @@ apps/client/src/app/pages/landing/landing-page.html - 429 + 423 apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html @@ -4157,7 +4157,7 @@ 糟糕,现金余额转账失败。 apps/client/src/app/pages/accounts/accounts-page.component.ts - 306 + 308 @@ -4540,20 +4540,12 @@ 14 - - New - 新的 - - apps/client/src/app/pages/landing/landing-page.html - 7 - - Manage your wealth like a boss 像老板一样管理您的财富 apps/client/src/app/pages/landing/landing-page.html - 11 + 5 @@ -4561,7 +4553,7 @@ Ghostfolio 是一个隐私优先、开源的个人财务仪表板。分解您的资产配置,了解您的净资产并做出可靠的、数据驱动的投资决策。 apps/client/src/app/pages/landing/landing-page.html - 15 + 9 @@ -4569,11 +4561,11 @@ 开始使用 apps/client/src/app/pages/landing/landing-page.html - 47 + 41 apps/client/src/app/pages/landing/landing-page.html - 425 + 419 @@ -4581,7 +4573,7 @@ apps/client/src/app/pages/landing/landing-page.html - 52 + 46 @@ -4589,11 +4581,11 @@ 现场演示 apps/client/src/app/pages/landing/landing-page.html - 55 + 49 apps/client/src/app/pages/landing/landing-page.html - 430 + 424 @@ -4601,7 +4593,7 @@ 每月活跃用户数 apps/client/src/app/pages/landing/landing-page.html - 75 + 69 @@ -4609,7 +4601,7 @@ GitHub 上的星星 apps/client/src/app/pages/landing/landing-page.html - 93 + 87 apps/client/src/app/pages/open/open-page.html @@ -4621,7 +4613,7 @@ 拉动 Docker Hub apps/client/src/app/pages/landing/landing-page.html - 111 + 105 apps/client/src/app/pages/open/open-page.html @@ -4633,7 +4625,7 @@ 如图所示 apps/client/src/app/pages/landing/landing-page.html - 119 + 113 @@ -4641,7 +4633,7 @@ 保护你的资产。完善你的个人投资策略 apps/client/src/app/pages/landing/landing-page.html - 221 + 215 @@ -4649,7 +4641,7 @@ Ghostfolio 使忙碌的人们能够在不被追踪的情况下跟踪股票、ETF 或加密货币。 apps/client/src/app/pages/landing/landing-page.html - 225 + 219 @@ -4657,7 +4649,7 @@ 360° 视角 apps/client/src/app/pages/landing/landing-page.html - 236 + 230 @@ -4665,7 +4657,7 @@ 跨多个平台全面了解您的个人财务状况。 apps/client/src/app/pages/landing/landing-page.html - 238 + 232 @@ -4673,7 +4665,7 @@ Web3 就绪 apps/client/src/app/pages/landing/landing-page.html - 247 + 241 @@ -4681,7 +4673,7 @@ 匿名使用 Ghostfolio 并拥有您的财务数据。 apps/client/src/app/pages/landing/landing-page.html - 249 + 243 @@ -4689,7 +4681,7 @@ 开源 apps/client/src/app/pages/landing/landing-page.html - 257 + 251 @@ -4697,7 +4689,7 @@ 通过强大的社区不断改进,从中受益。 apps/client/src/app/pages/landing/landing-page.html - 259 + 253 @@ -4705,7 +4697,7 @@ 为什么使用Ghostfolio apps/client/src/app/pages/landing/landing-page.html - 268 + 262 @@ -4713,7 +4705,7 @@ 如果您符合以下条件,那么 Ghostfolio 适合您... apps/client/src/app/pages/landing/landing-page.html - 269 + 263 @@ -4721,7 +4713,7 @@ 在多个平台上交易股票、ETF 或加密货币 apps/client/src/app/pages/landing/landing-page.html - 276 + 270 @@ -4729,7 +4721,7 @@ 采取买入并持有策略 apps/client/src/app/pages/landing/landing-page.html - 282 + 276 @@ -4737,7 +4729,7 @@ 有兴趣深入了解您的投资组合构成 apps/client/src/app/pages/landing/landing-page.html - 287 + 281 @@ -4745,7 +4737,7 @@ 重视隐私和数据所有权 apps/client/src/app/pages/landing/landing-page.html - 292 + 286 @@ -4753,7 +4745,7 @@ 进入极简主义 apps/client/src/app/pages/landing/landing-page.html - 295 + 289 @@ -4761,7 +4753,7 @@ 关心您的财务资源多元化 apps/client/src/app/pages/landing/landing-page.html - 299 + 293 @@ -4769,7 +4761,7 @@ 对财务独立感兴趣 apps/client/src/app/pages/landing/landing-page.html - 303 + 297 @@ -4777,7 +4769,7 @@ 对电子表格说不 apps/client/src/app/pages/landing/landing-page.html - 307 + 301 @@ -4785,7 +4777,7 @@ 仍在阅读此列表 apps/client/src/app/pages/landing/landing-page.html - 310 + 304 @@ -4793,7 +4785,7 @@ 了解有关 Ghostfolio 的更多信息 apps/client/src/app/pages/landing/landing-page.html - 315 + 309 @@ -4801,7 +4793,7 @@ 我们的什么用户正在说 apps/client/src/app/pages/landing/landing-page.html - 323 + 317 @@ -4809,7 +4801,7 @@ 来自世界各地的会员正在使用Ghostfolio 高级版 apps/client/src/app/pages/landing/landing-page.html - 355 + 349 @@ -4817,7 +4809,7 @@ 如何幽灵作品集工作? apps/client/src/app/pages/landing/landing-page.html - 367 + 361 @@ -4825,7 +4817,7 @@ 只需 3 步即可开始 apps/client/src/app/pages/landing/landing-page.html - 370 + 364 @@ -4833,7 +4825,7 @@ 匿名注册* apps/client/src/app/pages/landing/landing-page.html - 376 + 370 @@ -4841,7 +4833,7 @@ * 无需电子邮件地址或信用卡 apps/client/src/app/pages/landing/landing-page.html - 378 + 372 @@ -4849,7 +4841,7 @@ 添加您的任何历史交易 apps/client/src/app/pages/landing/landing-page.html - 389 + 383 @@ -4857,7 +4849,7 @@ 获取有关您的投资组合构成的宝贵见解 apps/client/src/app/pages/landing/landing-page.html - 401 + 395 @@ -4865,7 +4857,7 @@ 准备好? apps/client/src/app/pages/landing/landing-page.html - 413 + 407 @@ -4873,7 +4865,7 @@ 立即加入或查看示例帐户 apps/client/src/app/pages/landing/landing-page.html - 414 + 408 @@ -14485,7 +14477,7 @@ 房地产 libs/ui/src/lib/i18n.ts - 43 + 44 @@ -14493,7 +14485,7 @@ 纽带 libs/ui/src/lib/i18n.ts - 46 + 47 @@ -14501,7 +14493,7 @@ 加密货币 libs/ui/src/lib/i18n.ts - 47 + 48 @@ -14509,7 +14501,7 @@ 交易所交易基金 libs/ui/src/lib/i18n.ts - 48 + 49 @@ -14517,7 +14509,7 @@ 共同基金 libs/ui/src/lib/i18n.ts - 49 + 50 @@ -14525,7 +14517,7 @@ 贵金属 libs/ui/src/lib/i18n.ts - 50 + 51 @@ -14533,7 +14525,7 @@ 私人产权 libs/ui/src/lib/i18n.ts - 51 + 52 @@ -14541,7 +14533,7 @@ 库存 libs/ui/src/lib/i18n.ts - 52 + 53 @@ -14549,7 +14541,7 @@ 非洲 libs/ui/src/lib/i18n.ts - 59 + 60 @@ -14557,7 +14549,7 @@ 亚洲 libs/ui/src/lib/i18n.ts - 60 + 61 @@ -14565,7 +14557,7 @@ 欧洲 libs/ui/src/lib/i18n.ts - 61 + 62 @@ -14573,7 +14565,7 @@ 北美 libs/ui/src/lib/i18n.ts - 62 + 63 @@ -14581,7 +14573,7 @@ 大洋洲 libs/ui/src/lib/i18n.ts - 63 + 64 @@ -14589,7 +14581,7 @@ 南美洲 libs/ui/src/lib/i18n.ts - 64 + 65 @@ -14597,7 +14589,7 @@ 极度恐惧 libs/ui/src/lib/i18n.ts - 67 + 68 @@ -14605,7 +14597,7 @@ 极度贪婪 libs/ui/src/lib/i18n.ts - 68 + 69 @@ -14613,7 +14605,7 @@ 中性的 libs/ui/src/lib/i18n.ts - 71 + 72 @@ -15044,6 +15036,14 @@ 70 + + Liquidity + Liquidity + + libs/ui/src/lib/i18n.ts + 43 + + diff --git a/libs/common/src/lib/config.ts b/libs/common/src/lib/config.ts index 5e1366ce2..9e438c0f5 100644 --- a/libs/common/src/lib/config.ts +++ b/libs/common/src/lib/config.ts @@ -4,7 +4,6 @@ import ms from 'ms'; export const ghostfolioPrefix = 'GF'; export const ghostfolioScraperApiSymbolPrefix = `_${ghostfolioPrefix}_`; -export const ghostfolioCashSymbol = `${ghostfolioScraperApiSymbolPrefix}CASH`; export const ghostfolioFearAndGreedIndexDataSource = DataSource.RAPID_API; export const ghostfolioFearAndGreedIndexSymbol = `${ghostfolioScraperApiSymbolPrefix}FEAR_AND_GREED_INDEX`; diff --git a/libs/common/src/lib/interfaces/portfolio-position.interface.ts b/libs/common/src/lib/interfaces/portfolio-position.interface.ts index 2e5772ef7..a47a1ebc7 100644 --- a/libs/common/src/lib/interfaces/portfolio-position.interface.ts +++ b/libs/common/src/lib/interfaces/portfolio-position.interface.ts @@ -8,7 +8,7 @@ export interface PortfolioPosition { allocationInPercentage: number; assetClass?: AssetClass; assetClassLabel?: string; - assetSubClass?: AssetSubClass | 'CASH'; + assetSubClass?: AssetSubClass; assetSubClassLabel?: string; countries: Country[]; currency: string; diff --git a/libs/ui/src/lib/account-balances/account-balances.component.ts b/libs/ui/src/lib/account-balances/account-balances.component.ts index c4fd379c8..996b513e6 100644 --- a/libs/ui/src/lib/account-balances/account-balances.component.ts +++ b/libs/ui/src/lib/account-balances/account-balances.component.ts @@ -1,7 +1,6 @@ import { getLocale } from '@ghostfolio/common/helper'; import { AccountBalancesResponse } from '@ghostfolio/common/interfaces'; -import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, @@ -36,7 +35,6 @@ import { GfValueComponent } from '../value'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, imports: [ - CommonModule, GfValueComponent, MatButtonModule, MatDatepickerModule, 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 b909145c7..4b3908369 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 @@ -2,7 +2,6 @@ import { GfSymbolModule } from '@ghostfolio/client/pipes/symbol/symbol.module'; import { ISearchResultItem } from '@ghostfolio/ui/assistant/interfaces/interfaces'; import { FocusableOption } from '@angular/cdk/a11y'; -import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, ChangeDetectorRef, @@ -19,7 +18,7 @@ import { Params, RouterModule } from '@angular/router'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, - imports: [CommonModule, GfSymbolModule, RouterModule], + imports: [GfSymbolModule, RouterModule], selector: 'gf-assistant-list-item', standalone: true, styleUrls: ['./assistant-list-item.scss'], diff --git a/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.html b/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.html index 53bf60680..46c8a4c24 100644 --- a/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.html +++ b/libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.html @@ -9,9 +9,9 @@ >
{{ item?.symbol | gfSymbol }} · {{ item?.currency - }} - · {{ item?.assetSubClassString }}{{ item?.symbol | gfSymbol }} · {{ item?.currency }} + @if (item?.assetSubClassString) { + · {{ item.assetSubClassString }} + } + diff --git a/libs/ui/src/lib/carousel/carousel.component.ts b/libs/ui/src/lib/carousel/carousel.component.ts index 33f68b249..7f93297dd 100644 --- a/libs/ui/src/lib/carousel/carousel.component.ts +++ b/libs/ui/src/lib/carousel/carousel.component.ts @@ -1,6 +1,5 @@ import { FocusKeyManager } from '@angular/cdk/a11y'; import { LEFT_ARROW, RIGHT_ARROW, TAB } from '@angular/cdk/keycodes'; -import { CommonModule } from '@angular/common'; import { AfterContentInit, CUSTOM_ELEMENTS_SCHEMA, @@ -22,7 +21,7 @@ import { CarouselItem } from './carousel-item.directive'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, - imports: [CommonModule, MatButtonModule], + imports: [MatButtonModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], selector: 'gf-carousel', standalone: true, diff --git a/libs/ui/src/lib/currency-selector/currency-selector.component.ts b/libs/ui/src/lib/currency-selector/currency-selector.component.ts index a0ed3c88a..046af1cf8 100644 --- a/libs/ui/src/lib/currency-selector/currency-selector.component.ts +++ b/libs/ui/src/lib/currency-selector/currency-selector.component.ts @@ -2,7 +2,6 @@ import { Currency } from '@ghostfolio/common/interfaces'; import { AbstractMatFormField } from '@ghostfolio/ui/shared/abstract-mat-form-field'; import { FocusMonitor } from '@angular/cdk/a11y'; -import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, @@ -41,7 +40,6 @@ import { map, startWith, takeUntil } from 'rxjs/operators'; '[id]': 'id' }, imports: [ - CommonModule, FormsModule, MatAutocompleteModule, MatFormFieldModule, diff --git a/libs/ui/src/lib/fire-calculator/fire-calculator.component.html b/libs/ui/src/lib/fire-calculator/fire-calculator.component.html index 46cd0999f..31c7b334d 100644 --- a/libs/ui/src/lib/fire-calculator/fire-calculator.component.html +++ b/libs/ui/src/lib/fire-calculator/fire-calculator.component.html @@ -31,10 +31,7 @@ Retirement Date
- {{ - calculatorForm.controls['retirementDate'].value - | date: 'MMMM YYYY' - }} + {{ calculatorForm.get('retirementDate').value | date: 'MMMM YYYY' }}
= new MatTableDataSource(); public displayedColumns = []; - public ignoreAssetSubClasses = [AssetClass.CASH]; + public ignoreAssetSubClasses = [AssetSubClass.CASH]; public isLoading = true; public routeQueryParams: Subscription; diff --git a/libs/ui/src/lib/i18n.ts b/libs/ui/src/lib/i18n.ts index 9687f461c..e1266baa3 100644 --- a/libs/ui/src/lib/i18n.ts +++ b/libs/ui/src/lib/i18n.ts @@ -40,6 +40,7 @@ const locales = { COMMODITY: $localize`Commodity`, EQUITY: $localize`Equity`, FIXED_INCOME: $localize`Fixed Income`, + LIQUIDITY: $localize`Liquidity`, REAL_ESTATE: $localize`Real Estate`, // AssetSubClass (enum) diff --git a/libs/ui/src/lib/no-transactions-info/no-transactions-info.component.ts b/libs/ui/src/lib/no-transactions-info/no-transactions-info.component.ts index 0c30041b6..7fc8830a8 100644 --- a/libs/ui/src/lib/no-transactions-info/no-transactions-info.component.ts +++ b/libs/ui/src/lib/no-transactions-info/no-transactions-info.component.ts @@ -1,4 +1,3 @@ -import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, @@ -13,7 +12,7 @@ import { GfLogoComponent } from '../logo'; @Component({ changeDetection: ChangeDetectionStrategy.OnPush, - imports: [CommonModule, GfLogoComponent, MatButtonModule, RouterModule], + imports: [GfLogoComponent, MatButtonModule, RouterModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], selector: 'gf-no-transactions-info-indicator', standalone: true, diff --git a/libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.ts b/libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.ts index 7da62d9df..8e07ed674 100644 --- a/libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.ts +++ b/libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.ts @@ -5,7 +5,6 @@ import { translate } from '@ghostfolio/ui/i18n'; import { AbstractMatFormField } from '@ghostfolio/ui/shared/abstract-mat-form-field'; import { FocusMonitor } from '@angular/cdk/a11y'; -import { CommonModule } from '@angular/common'; import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, @@ -53,7 +52,6 @@ import { GfPremiumIndicatorComponent } from '../premium-indicator'; '[id]': 'id' }, imports: [ - CommonModule, FormsModule, GfPremiumIndicatorComponent, GfSymbolModule, diff --git a/libs/ui/src/lib/trend-indicator/trend-indicator.component.html b/libs/ui/src/lib/trend-indicator/trend-indicator.component.html index 81ce57bfc..761b3f232 100644 --- a/libs/ui/src/lib/trend-indicator/trend-indicator.component.html +++ b/libs/ui/src/lib/trend-indicator/trend-indicator.component.html @@ -1,50 +1,36 @@ - - - - - +} @else { + @if (marketState === 'closed' && range === '1d') { + + } @else if (marketState === 'delayed' && range === '1d') { + + } @else if (value <= -0.0005) { + + } @else if (value > -0.0005 && value < 0.0005) { + } @else { + - - - - - - - - - + } +} diff --git a/package.json b/package.json index da5c207ae..8b036f588 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ghostfolio", - "version": "2.75.1", + "version": "2.76.0", "homepage": "https://ghostfol.io", "license": "AGPL-3.0", "repository": "https://github.com/ghostfolio/ghostfolio", @@ -83,7 +83,7 @@ "@nestjs/platform-express": "10.1.3", "@nestjs/schedule": "3.0.2", "@nestjs/serve-static": "4.0.0", - "@prisma/client": "5.12.1", + "@prisma/client": "5.13.0", "@simplewebauthn/browser": "9.0.1", "@simplewebauthn/server": "9.0.3", "@stripe/stripe-js": "1.47.0", @@ -125,7 +125,7 @@ "passport": "0.6.0", "passport-google-oauth20": "2.0.0", "passport-jwt": "4.0.0", - "prisma": "5.12.1", + "prisma": "5.13.0", "reflect-metadata": "0.1.13", "rxjs": "7.5.6", "stripe": "11.12.0", diff --git a/prisma/migrations/20240422181320_added_liquidity_to_asset_class/migration.sql b/prisma/migrations/20240422181320_added_liquidity_to_asset_class/migration.sql new file mode 100644 index 000000000..685cae6bb --- /dev/null +++ b/prisma/migrations/20240422181320_added_liquidity_to_asset_class/migration.sql @@ -0,0 +1,2 @@ +-- AlterEnum +ALTER TYPE "AssetClass" ADD VALUE 'LIQUIDITY'; diff --git a/prisma/migrations/20240422181356_added_cash_to_asset_sub_class/migration.sql b/prisma/migrations/20240422181356_added_cash_to_asset_sub_class/migration.sql new file mode 100644 index 000000000..7aeaf5abd --- /dev/null +++ b/prisma/migrations/20240422181356_added_cash_to_asset_sub_class/migration.sql @@ -0,0 +1,2 @@ +-- AlterEnum +ALTER TYPE "AssetSubClass" ADD VALUE 'CASH'; diff --git a/prisma/migrations/20240422181835_changed_cash_to_liquidity_in_asset_sub_class/migration.sql b/prisma/migrations/20240422181835_changed_cash_to_liquidity_in_asset_sub_class/migration.sql new file mode 100644 index 000000000..f0b260a09 --- /dev/null +++ b/prisma/migrations/20240422181835_changed_cash_to_liquidity_in_asset_sub_class/migration.sql @@ -0,0 +1,7 @@ +UPDATE "SymbolProfile" +SET "assetClass" = 'LIQUIDITY' +WHERE "assetClass" = 'CASH'; + +UPDATE "SymbolProfileOverrides" +SET "assetClass" = 'LIQUIDITY' +WHERE "assetClass" = 'CASH'; diff --git a/prisma/migrations/20240422182643_removed_cash_from_asset_class/migration.sql b/prisma/migrations/20240422182643_removed_cash_from_asset_class/migration.sql new file mode 100644 index 000000000..6a08aee78 --- /dev/null +++ b/prisma/migrations/20240422182643_removed_cash_from_asset_class/migration.sql @@ -0,0 +1,9 @@ +-- AlterEnum +BEGIN; +CREATE TYPE "AssetClass_new" AS ENUM ('COMMODITY', 'EQUITY', 'FIXED_INCOME', 'LIQUIDITY', 'REAL_ESTATE'); +ALTER TABLE "SymbolProfile" ALTER COLUMN "assetClass" TYPE "AssetClass_new" USING ("assetClass"::text::"AssetClass_new"); +ALTER TABLE "SymbolProfileOverrides" ALTER COLUMN "assetClass" TYPE "AssetClass_new" USING ("assetClass"::text::"AssetClass_new"); +ALTER TYPE "AssetClass" RENAME TO "AssetClass_old"; +ALTER TYPE "AssetClass_new" RENAME TO "AssetClass"; +DROP TYPE "AssetClass_old"; +COMMIT; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index af7ad1845..43052de11 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -248,15 +248,16 @@ enum AccessPermission { } enum AssetClass { - CASH COMMODITY EQUITY FIXED_INCOME + LIQUIDITY REAL_ESTATE } enum AssetSubClass { BOND + CASH COMMODITY CRYPTOCURRENCY ETF diff --git a/yarn.lock b/yarn.lock index c7297d6cf..f8ffac690 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5442,46 +5442,46 @@ resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.25.tgz#f077fdc0b5d0078d30893396ff4827a13f99e817" integrity sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ== -"@prisma/client@5.12.1": - version "5.12.1" - resolved "https://registry.yarnpkg.com/@prisma/client/-/client-5.12.1.tgz#c26a674fea76754b3a9e8b90a11e617f90212f76" - integrity sha512-6/JnizEdlSBxDIdiLbrBdMW5NqDxOmhXAJaNXiPpgzAPr/nLZResT6MMpbOHLo5yAbQ1Vv5UU8PTPRzb0WIxdA== - -"@prisma/debug@5.12.1": - version "5.12.1" - resolved "https://registry.yarnpkg.com/@prisma/debug/-/debug-5.12.1.tgz#007c8ad2e466d565bcd0671b8846c27f8700c722" - integrity sha512-kd/wNsR0klrv79o1ITsbWxYyh4QWuBidvxsXSParPsYSu0ircUmNk3q4ojsgNc3/81b0ozg76iastOG43tbf8A== - -"@prisma/engines-version@5.12.0-21.473ed3124229e22d881cb7addf559799debae1ab": - version "5.12.0-21.473ed3124229e22d881cb7addf559799debae1ab" - resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-5.12.0-21.473ed3124229e22d881cb7addf559799debae1ab.tgz#c78d099a3fe86d446db7442e64e56987e39e7f32" - integrity sha512-6yvO8s80Tym61aB4QNtYZfWVmE3pwqe807jEtzm8C5VDe7nw8O1FGX3TXUaXmWV0fQTIAfRbeL2Gwrndabp/0g== - -"@prisma/engines@5.12.1": - version "5.12.1" - resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-5.12.1.tgz#a50649427d627a9af962a188a84c65d61c6e2b3f" - integrity sha512-HQDdglLw2bZR/TXD2Y+YfDMvi5Q8H+acbswqOsWyq9pPjBLYJ6gzM+ptlTU/AV6tl0XSZLU1/7F4qaWa8bqpJA== - dependencies: - "@prisma/debug" "5.12.1" - "@prisma/engines-version" "5.12.0-21.473ed3124229e22d881cb7addf559799debae1ab" - "@prisma/fetch-engine" "5.12.1" - "@prisma/get-platform" "5.12.1" - -"@prisma/fetch-engine@5.12.1": - version "5.12.1" - resolved "https://registry.yarnpkg.com/@prisma/fetch-engine/-/fetch-engine-5.12.1.tgz#c38e9fa17fdc535b4c83cbb7645569ad0a511fa9" - integrity sha512-qSs3KcX1HKcea1A+hlJVK/ljj0PNIUHDxAayGMvgJBqmaN32P9tCidlKz1EGv6WoRFICYnk3Dd/YFLBwnFIozA== - dependencies: - "@prisma/debug" "5.12.1" - "@prisma/engines-version" "5.12.0-21.473ed3124229e22d881cb7addf559799debae1ab" - "@prisma/get-platform" "5.12.1" - -"@prisma/get-platform@5.12.1": - version "5.12.1" - resolved "https://registry.yarnpkg.com/@prisma/get-platform/-/get-platform-5.12.1.tgz#33f427f6d744dee62a9e06858889691d78b50804" - integrity sha512-pgIR+pSvhYHiUcqXVEZS31NrFOTENC9yFUdEAcx7cdQBoZPmHVjtjN4Ss6NzVDMYPrKJJ51U14EhEoeuBlMioQ== - dependencies: - "@prisma/debug" "5.12.1" +"@prisma/client@5.13.0": + version "5.13.0" + resolved "https://registry.yarnpkg.com/@prisma/client/-/client-5.13.0.tgz#b9f1d0983d714e982675201d8222a9ecb4bdad4a" + integrity sha512-uYdfpPncbZ/syJyiYBwGZS8Gt1PTNoErNYMuqHDa2r30rNSFtgTA/LXsSk55R7pdRTMi5pHkeP9B14K6nHmwkg== + +"@prisma/debug@5.13.0": + version "5.13.0" + resolved "https://registry.yarnpkg.com/@prisma/debug/-/debug-5.13.0.tgz#d88b0f6fafa0c216e20e284ed9fc30f1cbe45786" + integrity sha512-699iqlEvzyCj9ETrXhs8o8wQc/eVW+FigSsHpiskSFydhjVuwTJEfj/nIYqTaWFYuxiWQRfm3r01meuW97SZaQ== + +"@prisma/engines-version@5.13.0-23.b9a39a7ee606c28e3455d0fd60e78c3ba82b1a2b": + version "5.13.0-23.b9a39a7ee606c28e3455d0fd60e78c3ba82b1a2b" + resolved "https://registry.yarnpkg.com/@prisma/engines-version/-/engines-version-5.13.0-23.b9a39a7ee606c28e3455d0fd60e78c3ba82b1a2b.tgz#a72a4fb83ba1fd01ad45f795aa55168f60d34723" + integrity sha512-AyUuhahTINGn8auyqYdmxsN+qn0mw3eg+uhkp8zwknXYIqoT3bChG4RqNY/nfDkPvzWAPBa9mrDyBeOnWSgO6A== + +"@prisma/engines@5.13.0": + version "5.13.0" + resolved "https://registry.yarnpkg.com/@prisma/engines/-/engines-5.13.0.tgz#8994ebf7b4e35aee7746a8465ec22738379bcab6" + integrity sha512-hIFLm4H1boj6CBZx55P4xKby9jgDTeDG0Jj3iXtwaaHmlD5JmiDkZhh8+DYWkTGchu+rRF36AVROLnk0oaqhHw== + dependencies: + "@prisma/debug" "5.13.0" + "@prisma/engines-version" "5.13.0-23.b9a39a7ee606c28e3455d0fd60e78c3ba82b1a2b" + "@prisma/fetch-engine" "5.13.0" + "@prisma/get-platform" "5.13.0" + +"@prisma/fetch-engine@5.13.0": + version "5.13.0" + resolved "https://registry.yarnpkg.com/@prisma/fetch-engine/-/fetch-engine-5.13.0.tgz#9b6945c7b38bb59e840f8905b20ea7a3d059ca55" + integrity sha512-Yh4W+t6YKyqgcSEB3odBXt7QyVSm0OQlBSldQF2SNXtmOgMX8D7PF/fvH6E6qBCpjB/yeJLy/FfwfFijoHI6sA== + dependencies: + "@prisma/debug" "5.13.0" + "@prisma/engines-version" "5.13.0-23.b9a39a7ee606c28e3455d0fd60e78c3ba82b1a2b" + "@prisma/get-platform" "5.13.0" + +"@prisma/get-platform@5.13.0": + version "5.13.0" + resolved "https://registry.yarnpkg.com/@prisma/get-platform/-/get-platform-5.13.0.tgz#99ef909a52b9d79b64d72d2d3d8210c4892b6572" + integrity sha512-B/WrQwYTzwr7qCLifQzYOmQhZcFmIFhR81xC45gweInSUn2hTEbfKUPd2keAog+y5WI5xLAFNJ3wkXplvSVkSw== + dependencies: + "@prisma/debug" "5.13.0" "@radix-ui/number@1.0.1": version "1.0.1" @@ -16696,12 +16696,12 @@ pretty-hrtime@^1.0.3: resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" integrity sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A== -prisma@5.12.1: - version "5.12.1" - resolved "https://registry.yarnpkg.com/prisma/-/prisma-5.12.1.tgz#db4596253bb066afc9f08744642f200a398d8d51" - integrity sha512-SkMnb6wyIxTv9ACqiHBI2u9gD6y98qXRoCoLEnZsF6yee5Qg828G+ARrESN+lQHdw4maSZFFSBPPDpvSiVTo0Q== +prisma@5.13.0: + version "5.13.0" + resolved "https://registry.yarnpkg.com/prisma/-/prisma-5.13.0.tgz#1f06e20ccfb6038ad68869e6eacd3b346f9d0851" + integrity sha512-kGtcJaElNRAdAGsCNykFSZ7dBKpL14Cbs+VaQ8cECxQlRPDjBlMHNFYeYt0SKovAVy2Y65JXQwB3A5+zIQwnTg== dependencies: - "@prisma/engines" "5.12.1" + "@prisma/engines" "5.13.0" prismjs@^1.28.0: version "1.29.0"