Browse Source

Merge branch 'main' into feat/node-18

pull/1595/head
Thomas Kaul 3 years ago
committed by GitHub
parent
commit
9a873ed41d
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 55
      CHANGELOG.md
  2. 2
      README.md
  3. 61
      apps/api/src/app/account/account.controller.ts
  4. 7
      apps/api/src/app/frontend.middleware.ts
  5. 2
      apps/api/src/app/portfolio/portfolio-calculator.ts
  6. 38
      apps/api/src/app/portfolio/portfolio.controller.ts
  7. 268
      apps/api/src/app/portfolio/portfolio.service.ts
  8. 18
      apps/api/src/helper/object.helper.ts
  9. 82
      apps/api/src/interceptors/redact-values-in-response.interceptor.ts
  10. 4
      apps/api/src/services/cron.service.ts
  11. 7
      apps/client/src/app/app-routing.module.ts
  12. 4
      apps/client/src/app/components/admin-overview/admin-overview.component.ts
  13. 9
      apps/client/src/app/components/home-overview/home-overview.component.ts
  14. 1
      apps/client/src/app/components/home-overview/home-overview.html
  15. 23
      apps/client/src/app/components/investment-chart/investment-chart.component.ts
  16. 4
      apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html
  17. 1
      apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts
  18. 7
      apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.component.ts
  19. 2
      apps/client/src/app/pages/about/about-page.html
  20. 18
      apps/client/src/app/pages/account/account-page.html
  21. 2
      apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html
  22. 20
      apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page-routing.module.ts
  23. 9
      apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.component.ts
  24. 150
      apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.html
  25. 17
      apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.module.ts
  26. 3
      apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.scss
  27. 26
      apps/client/src/app/pages/blog/blog-page.html
  28. 2
      apps/client/src/app/pages/features/features-page.html
  29. 20
      apps/client/src/app/pages/landing/landing-page.html
  30. 5
      apps/client/src/app/pages/landing/landing-page.scss
  31. 2
      apps/client/src/app/pages/portfolio/activities/activities-page.component.ts
  32. 16
      apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts
  33. 72
      apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts
  34. 48
      apps/client/src/app/pages/portfolio/allocations/allocations-page.html
  35. 2
      apps/client/src/app/pages/portfolio/allocations/allocations-page.module.ts
  36. 2
      apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
  37. 2
      apps/client/src/app/pages/portfolio/holdings/holdings-page.component.ts
  38. 2
      apps/client/src/app/pages/public/public-page.component.ts
  39. BIN
      apps/client/src/assets/images/blog/ghostfolio-x-sackgeld.png
  40. BIN
      apps/client/src/assets/images/logo-sackgeld.png
  41. 44
      apps/client/src/assets/sitemap.xml
  42. 190
      apps/client/src/locales/messages.de.xlf
  43. 190
      apps/client/src/locales/messages.es.xlf
  44. 198
      apps/client/src/locales/messages.fr.xlf
  45. 190
      apps/client/src/locales/messages.it.xlf
  46. 194
      apps/client/src/locales/messages.nl.xlf
  47. 190
      apps/client/src/locales/messages.pt.xlf
  48. 177
      apps/client/src/locales/messages.xlf
  49. 40
      libs/common/src/lib/chart-helper.ts
  50. 4
      libs/common/src/lib/config.ts
  51. 6
      libs/common/src/lib/helper.ts
  52. 5
      libs/common/src/lib/interfaces/portfolio-position.interface.ts
  53. 2
      libs/common/src/lib/interfaces/portfolio-public-details.interface.ts
  54. 6
      libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
  55. 6
      libs/ui/src/lib/holdings-table/holdings-table.component.html
  56. 8
      libs/ui/src/lib/holdings-table/holdings-table.component.ts
  57. 6
      libs/ui/src/lib/i18n.ts
  58. 1
      libs/ui/src/lib/logo/logo.component.scss
  59. 2
      package.json
  60. 10
      prisma/seed.js

55
CHANGELOG.md

@ -11,6 +11,61 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Upgraded `Node.js` from version `16` to `18` (`Dockerfile`)
## 1.229.0 - 2023-01-21
### Added
- Added a blog post: _Ghostfolio auf Sackgeld.com vorgestellt_
- Added _Sackgeld.com_ to the _As seen in_ section on the landing page
### Changed
- Removed the toggle _Original Shares_ vs. _Current Shares_ on the allocations page
- Hid error messages related to no current investment in the client
- Refactored the value redaction interceptor for the impersonation mode
### Fixed
- Fixed the value of the active (emergency fund) filter in percentage on the allocations page
## 1.228.1 - 2023-01-18
### Added
- Extended the hints in user settings
### Changed
- Improved the date formatting in the tooltip of the dividend timeline grouped by month / year
- Improved the date formatting in the tooltip of the investment timeline grouped by month / year
- Reduced the execution interval of the data gathering to every 4 hours
- Removed emergency fund as an asset class
## 1.227.1 - 2023-01-14
### Changed
- Improved the language localization for German (`de`)
### Fixed
- Fixed the create or edit activity dialog
## 1.227.0 - 2023-01-14
### Added
- Added support for assets other than cash in emergency fund (affecting buying power)
- Added support for translated tags
### Changed
- Improved the logo alignment
### Fixed
- Fixed the grouping by month / year of the dividend and investment timeline
## 1.226.0 - 2023-01-11
### Added

2
README.md

@ -269,7 +269,7 @@ You can get the _Bearer Token_ via `GET http://localhost:3333/api/v1/auth/anonym
Ghostfolio is **100% free** and **open source**. We encourage and support an active and healthy community that accepts contributions from the public - including you.
Not sure what to work on? We have got some ideas. Please join the Ghostfolio [Slack channel](https://join.slack.com/t/ghostfolio/shared_invite/zt-vsaan64h-F_I0fEo5M0P88lP9ibCxFg), tweet to [@ghostfolio\_](https://twitter.com/ghostfolio_) or send an e-mail to hi@ghostfol.io. We would love to hear from you.
Not sure what to work on? We have got some ideas. Please join the Ghostfolio [Slack channel](https://join.slack.com/t/ghostfolio/shared_invite/zt-vsaan64h-F_I0fEo5M0P88lP9ibCxFg) or tweet to [@ghostfolio\_](https://twitter.com/ghostfolio_). We would love to hear from you.
If you like to support this project, get [**Ghostfolio Premium**](https://ghostfol.io/en/pricing) or [**Buy me a coffee**](https://www.buymeacoffee.com/ghostfolio).

61
apps/api/src/app/account/account.controller.ts

@ -1,9 +1,6 @@
import { PortfolioService } from '@ghostfolio/api/app/portfolio/portfolio.service';
import { UserService } from '@ghostfolio/api/app/user/user.service';
import {
nullifyValuesInObject,
nullifyValuesInObjects
} from '@ghostfolio/api/helper/object.helper';
import { RedactValuesInResponseInterceptor } from '@ghostfolio/api/interceptors/redact-values-in-response.interceptor';
import { ImpersonationService } from '@ghostfolio/api/services/impersonation.service';
import { Accounts } from '@ghostfolio/common/interfaces';
import { hasPermission, permissions } from '@ghostfolio/common/permissions';
@ -22,7 +19,8 @@ import {
Param,
Post,
Put,
UseGuards
UseGuards,
UseInterceptors
} from '@nestjs/common';
import { REQUEST } from '@nestjs/core';
import { AuthGuard } from '@nestjs/passport';
@ -85,6 +83,7 @@ export class AccountController {
@Get()
@UseGuards(AuthGuard('jwt'))
@UseInterceptors(RedactValuesInResponseInterceptor)
public async getAllAccounts(
@Headers('impersonation-id') impersonationId
): Promise<Accounts> {
@ -94,39 +93,15 @@ export class AccountController {
this.request.user.id
);
let accountsWithAggregations =
await this.portfolioService.getAccountsWithAggregations({
return this.portfolioService.getAccountsWithAggregations({
userId: impersonationUserId || this.request.user.id,
withExcludedAccounts: true
});
if (
impersonationUserId ||
this.userService.isRestrictedView(this.request.user)
) {
accountsWithAggregations = {
...nullifyValuesInObject(accountsWithAggregations, [
'totalBalanceInBaseCurrency',
'totalValueInBaseCurrency'
]),
accounts: nullifyValuesInObjects(accountsWithAggregations.accounts, [
'balance',
'balanceInBaseCurrency',
'convertedBalance',
'fee',
'quantity',
'unitPrice',
'value',
'valueInBaseCurrency'
])
};
}
return accountsWithAggregations;
}
@Get(':id')
@UseGuards(AuthGuard('jwt'))
@UseInterceptors(RedactValuesInResponseInterceptor)
public async getAccountById(
@Headers('impersonation-id') impersonationId,
@Param('id') id: string
@ -137,35 +112,13 @@ export class AccountController {
this.request.user.id
);
let accountsWithAggregations =
const accountsWithAggregations =
await this.portfolioService.getAccountsWithAggregations({
filters: [{ id, type: 'ACCOUNT' }],
userId: impersonationUserId || this.request.user.id,
withExcludedAccounts: true
});
if (
impersonationUserId ||
this.userService.isRestrictedView(this.request.user)
) {
accountsWithAggregations = {
...nullifyValuesInObject(accountsWithAggregations, [
'totalBalanceInBaseCurrency',
'totalValueInBaseCurrency'
]),
accounts: nullifyValuesInObjects(accountsWithAggregations.accounts, [
'balance',
'balanceInBaseCurrency',
'convertedBalance',
'fee',
'quantity',
'unitPrice',
'value',
'valueInBaseCurrency'
])
};
}
return accountsWithAggregations.accounts[0];
}

7
apps/api/src/app/frontend.middleware.ts

@ -83,6 +83,13 @@ export class FrontendMiddleware implements NestMiddleware {
) {
featureGraphicPath = 'assets/images/blog/20221226.jpg';
title = `The importance of tracking your personal finances - ${title}`;
} else if (
request.path.startsWith(
'/de/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt'
)
) {
featureGraphicPath = 'assets/images/blog/ghostfolio-x-sackgeld.png';
title = `Ghostfolio auf Sackgeld.com vorgestellt - ${title}`;
}
if (

2
apps/api/src/app/portfolio/portfolio-calculator.ts

@ -447,7 +447,7 @@ export class PortfolioCalculator {
transactionCount: item.transactionCount
});
if (hasErrors) {
if (hasErrors && item.investment.gt(0)) {
errors.push({ dataSource: item.dataSource, symbol: item.symbol });
}
}

38
apps/api/src/app/portfolio/portfolio.controller.ts

@ -356,6 +356,7 @@ export class PortfolioController {
@Get('positions')
@UseGuards(AuthGuard('jwt'))
@UseInterceptors(RedactValuesInResponseInterceptor)
@UseInterceptors(TransformDataSourceInResponseInterceptor)
public async getPositions(
@Headers('impersonation-id') impersonationId: string,
@ -370,27 +371,11 @@ export class PortfolioController {
filterByTags
});
const result = await this.portfolioService.getPositions({
return this.portfolioService.getPositions({
dateRange,
filters,
impersonationId
});
if (
impersonationId ||
this.userService.isRestrictedView(this.request.user)
) {
result.positions = result.positions.map((position) => {
return nullifyValuesInObject(position, [
'grossPerformance',
'investment',
'netPerformance',
'quantity'
]);
});
}
return result;
}
@Get('public/:accessId')
@ -441,7 +426,7 @@ export class PortfolioController {
for (const [symbol, portfolioPosition] of Object.entries(holdings)) {
portfolioPublicDetails.holdings[symbol] = {
allocationCurrent: portfolioPosition.value / totalValue,
allocationInPercentage: portfolioPosition.value / totalValue,
countries: hasDetails ? portfolioPosition.countries : [],
currency: hasDetails ? portfolioPosition.currency : undefined,
dataSource: portfolioPosition.dataSource,
@ -460,6 +445,7 @@ export class PortfolioController {
}
@Get('position/:dataSource/:symbol')
@UseInterceptors(RedactValuesInResponseInterceptor)
@UseInterceptors(TransformDataSourceInRequestInterceptor)
@UseInterceptors(TransformDataSourceInResponseInterceptor)
@UseGuards(AuthGuard('jwt'))
@ -468,27 +454,13 @@ export class PortfolioController {
@Param('dataSource') dataSource,
@Param('symbol') symbol
): Promise<PortfolioPositionDetail> {
let position = await this.portfolioService.getPosition(
const position = await this.portfolioService.getPosition(
dataSource,
impersonationId,
symbol
);
if (position) {
if (
impersonationId ||
this.userService.isRestrictedView(this.request.user)
) {
position = nullifyValuesInObject(position, [
'grossPerformance',
'investment',
'netPerformance',
'orders',
'quantity',
'value'
]);
}
return position;
}

268
apps/api/src/app/portfolio/portfolio.service.ts

@ -1,5 +1,6 @@
import { AccountService } from '@ghostfolio/api/app/account/account.service';
import { CashDetails } from '@ghostfolio/api/app/account/interfaces/cash-details.interface';
import { Activity } from '@ghostfolio/api/app/order/interfaces/activities.interface';
import { OrderService } from '@ghostfolio/api/app/order/order.service';
import { CurrentRateService } from '@ghostfolio/api/app/portfolio/current-rate.service';
import { PortfolioOrder } from '@ghostfolio/api/app/portfolio/interfaces/portfolio-order.interface';
@ -19,7 +20,7 @@ import { ExchangeRateDataService } from '@ghostfolio/api/services/exchange-rate-
import { ImpersonationService } from '@ghostfolio/api/services/impersonation.service';
import { SymbolProfileService } from '@ghostfolio/api/services/symbol-profile.service';
import {
ASSET_SUB_CLASS_EMERGENCY_FUND,
EMERGENCY_FUND_TAG_ID,
MAX_CHART_ITEMS,
UNKNOWN_KEY
} from '@ghostfolio/common/config';
@ -536,12 +537,9 @@ export class PortfolioService {
holdings[item.symbol] = {
markets,
allocationCurrent: filteredValueInBaseCurrency.eq(0)
allocationInPercentage: filteredValueInBaseCurrency.eq(0)
? 0
: value.div(filteredValueInBaseCurrency).toNumber(),
allocationInvestment: item.investment
.div(totalInvestmentInBaseCurrency)
.toNumber(),
assetClass: symbolProfile.assetClass,
assetSubClass: symbolProfile.assetSubClass,
countries: symbolProfile.countries,
@ -574,7 +572,6 @@ export class PortfolioService {
) {
const cashPositions = await this.getCashPositions({
cashDetails,
emergencyFund,
userCurrency,
investment: totalInvestmentInBaseCurrency,
value: filteredValueInBaseCurrency
@ -594,10 +591,52 @@ export class PortfolioService {
withExcludedAccounts
});
if (
filters?.length === 1 &&
filters[0].id === EMERGENCY_FUND_TAG_ID &&
filters[0].type === 'TAG'
) {
const cashPositions = await this.getCashPositions({
cashDetails,
userCurrency,
investment: totalInvestmentInBaseCurrency,
value: filteredValueInBaseCurrency
});
const emergencyFundInCash = emergencyFund
.minus(
this.getEmergencyFundPositionsValueInBaseCurrency({
activities: orders
})
)
.toNumber();
filteredValueInBaseCurrency = emergencyFund;
accounts[UNKNOWN_KEY] = {
balance: 0,
currency: userCurrency,
current: emergencyFundInCash,
name: UNKNOWN_KEY,
original: emergencyFundInCash
};
holdings[userCurrency] = {
...cashPositions[userCurrency],
investment: emergencyFundInCash,
value: emergencyFundInCash
};
}
const summary = await this.getSummary({
impersonationId,
userCurrency,
userId
userId,
balanceInBaseCurrency: cashDetails.balanceInBaseCurrency,
emergencyFundPositionsValueInBaseCurrency:
this.getEmergencyFundPositionsValueInBaseCurrency({
activities: orders
})
});
return {
@ -1000,29 +1039,21 @@ export class PortfolioService {
const portfolioStart = parseDate(transactionPoints[0].date);
const startDate = this.getStartDate(dateRange, portfolioStart);
const currentPositions = await portfolioCalculator.getCurrentPositions(
startDate
);
const {
currentValue,
errors,
grossPerformance,
grossPerformancePercentage,
hasErrors,
netPerformance,
netPerformancePercentage,
totalInvestment
} = await portfolioCalculator.getCurrentPositions(startDate);
const hasErrors = currentPositions.hasErrors;
const currentValue = currentPositions.currentValue.toNumber();
const currentGrossPerformance = currentPositions.grossPerformance;
const currentGrossPerformancePercent =
currentPositions.grossPerformancePercentage;
let currentNetPerformance = currentPositions.netPerformance;
let currentNetPerformancePercent =
currentPositions.netPerformancePercentage;
const totalInvestment = currentPositions.totalInvestment;
// if (currentGrossPerformance.mul(currentGrossPerformancePercent).lt(0)) {
// // If algebraic sign is different, harmonize it
// currentGrossPerformancePercent = currentGrossPerformancePercent.mul(-1);
// }
// if (currentNetPerformance.mul(currentNetPerformancePercent).lt(0)) {
// // If algebraic sign is different, harmonize it
// currentNetPerformancePercent = currentNetPerformancePercent.mul(-1);
// }
const currentGrossPerformance = grossPerformance;
const currentGrossPerformancePercent = grossPerformancePercentage;
let currentNetPerformance = netPerformance;
let currentNetPerformancePercent = netPerformancePercentage;
const historicalDataContainer = await this.getChart({
dateRange,
@ -1044,28 +1075,28 @@ export class PortfolioService {
}
return {
errors,
hasErrors,
chart: historicalDataContainer.items.map(
({
date,
netPerformance,
netPerformance: netPerformanceOfItem,
netPerformanceInPercentage,
totalInvestment,
totalInvestment: totalInvestmentOfItem,
value
}) => {
return {
date,
netPerformance,
netPerformanceInPercentage,
totalInvestment,
value
value,
netPerformance: netPerformanceOfItem,
totalInvestment: totalInvestmentOfItem
};
}
),
errors: currentPositions.errors,
firstOrderDate: parseDate(historicalDataContainer.items[0]?.date),
hasErrors: currentPositions.hasErrors || hasErrors,
performance: {
currentValue,
currentValue: currentValue.toNumber(),
currentGrossPerformance: currentGrossPerformance.toNumber(),
currentGrossPerformancePercent:
currentGrossPerformancePercent.toNumber(),
@ -1167,7 +1198,7 @@ export class PortfolioService {
new FeeRatioInitialInvestment(
this.exchangeRateDataService,
currentPositions.totalInvestment.toNumber(),
this.getFees({ orders, userCurrency }).toNumber()
this.getFees({ userCurrency, activities: orders }).toNumber()
)
],
<UserSettings>this.request.user.Settings.settings
@ -1178,16 +1209,14 @@ export class PortfolioService {
private async getCashPositions({
cashDetails,
emergencyFund,
investment,
userCurrency,
value
}: {
cashDetails: CashDetails;
emergencyFund: Big;
investment: Big;
value: Big;
userCurrency: string;
value: Big;
}) {
const cashPositions: PortfolioDetails['holdings'] = {
[userCurrency]: this.getInitialCashPosition({
@ -1218,62 +1247,38 @@ export class PortfolioService {
}
}
if (emergencyFund.gt(0)) {
cashPositions[ASSET_SUB_CLASS_EMERGENCY_FUND] = {
...cashPositions[userCurrency],
assetSubClass: ASSET_SUB_CLASS_EMERGENCY_FUND,
investment: emergencyFund.toNumber(),
name: ASSET_SUB_CLASS_EMERGENCY_FUND,
symbol: ASSET_SUB_CLASS_EMERGENCY_FUND,
value: emergencyFund.toNumber()
};
cashPositions[userCurrency].investment = new Big(
cashPositions[userCurrency].investment
)
.minus(emergencyFund)
.toNumber();
cashPositions[userCurrency].value = new Big(
cashPositions[userCurrency].value
)
.minus(emergencyFund)
.toNumber();
}
for (const symbol of Object.keys(cashPositions)) {
// Calculate allocations for each currency
cashPositions[symbol].allocationCurrent = value.gt(0)
cashPositions[symbol].allocationInPercentage = value.gt(0)
? new Big(cashPositions[symbol].value).div(value).toNumber()
: 0;
cashPositions[symbol].allocationInvestment = investment.gt(0)
? new Big(cashPositions[symbol].investment).div(investment).toNumber()
: 0;
}
return cashPositions;
}
private getDividend({
activities,
date = new Date(0),
orders,
userCurrency
}: {
activities: OrderWithAccount[];
date?: Date;
orders: OrderWithAccount[];
userCurrency: string;
}) {
return orders
.filter((order) => {
// Filter out all orders before given date and type dividend
return activities
.filter((activity) => {
// Filter out all activities before given date and type dividend
return (
isBefore(date, new Date(order.date)) &&
order.type === TypeOfOrder.DIVIDEND
isBefore(date, new Date(activity.date)) &&
activity.type === TypeOfOrder.DIVIDEND
);
})
.map((order) => {
.map(({ quantity, SymbolProfile, unitPrice }) => {
return this.exchangeRateDataService.toCurrency(
new Big(order.quantity).mul(order.unitPrice).toNumber(),
order.SymbolProfile.currency,
new Big(quantity).mul(unitPrice).toNumber(),
SymbolProfile.currency,
userCurrency
);
})
@ -1345,24 +1350,56 @@ export class PortfolioService {
return dividendsByGroup;
}
private getEmergencyFundPositionsValueInBaseCurrency({
activities
}: {
activities: Activity[];
}) {
const emergencyFundOrders = activities.filter((activity) => {
return (
activity.tags?.some(({ id }) => {
return id === EMERGENCY_FUND_TAG_ID;
}) ?? false
);
});
let valueInBaseCurrencyOfEmergencyFundPositions = new Big(0);
for (const order of emergencyFundOrders) {
if (order.type === 'BUY') {
valueInBaseCurrencyOfEmergencyFundPositions =
valueInBaseCurrencyOfEmergencyFundPositions.plus(
order.valueInBaseCurrency
);
} else if (order.type === 'SELL') {
valueInBaseCurrencyOfEmergencyFundPositions =
valueInBaseCurrencyOfEmergencyFundPositions.minus(
order.valueInBaseCurrency
);
}
}
return valueInBaseCurrencyOfEmergencyFundPositions.toNumber();
}
private getFees({
activities,
date = new Date(0),
orders,
userCurrency
}: {
activities: OrderWithAccount[];
date?: Date;
orders: OrderWithAccount[];
userCurrency: string;
}) {
return orders
.filter((order) => {
// Filter out all orders before given date
return isBefore(date, new Date(order.date));
return activities
.filter((activity) => {
// Filter out all activities before given date
return isBefore(date, new Date(activity.date));
})
.map((order) => {
.map(({ fee, SymbolProfile }) => {
return this.exchangeRateDataService.toCurrency(
order.fee,
order.SymbolProfile.currency,
fee,
SymbolProfile.currency,
userCurrency
);
})
@ -1381,8 +1418,7 @@ export class PortfolioService {
}): PortfolioPosition {
return {
currency,
allocationCurrent: 0,
allocationInvestment: 0,
allocationInPercentage: 0,
assetClass: AssetClass.CASH,
assetSubClass: AssetClass.CASH,
countries: [],
@ -1429,26 +1465,42 @@ export class PortfolioService {
private getStartDate(aDateRange: DateRange, portfolioStart: Date) {
switch (aDateRange) {
case '1d':
portfolioStart = max([portfolioStart, subDays(new Date(), 1)]);
portfolioStart = max([
portfolioStart,
subDays(new Date().setHours(0, 0, 0, 0), 1)
]);
break;
case 'ytd':
portfolioStart = max([portfolioStart, setDayOfYear(new Date(), 1)]);
portfolioStart = max([
portfolioStart,
setDayOfYear(new Date().setHours(0, 0, 0, 0), 1)
]);
break;
case '1y':
portfolioStart = max([portfolioStart, subYears(new Date(), 1)]);
portfolioStart = max([
portfolioStart,
subYears(new Date().setHours(0, 0, 0, 0), 1)
]);
break;
case '5y':
portfolioStart = max([portfolioStart, subYears(new Date(), 5)]);
portfolioStart = max([
portfolioStart,
subYears(new Date().setHours(0, 0, 0, 0), 5)
]);
break;
}
return portfolioStart;
}
private async getSummary({
balanceInBaseCurrency,
emergencyFundPositionsValueInBaseCurrency,
impersonationId,
userCurrency,
userId
}: {
balanceInBaseCurrency: number;
emergencyFundPositionsValueInBaseCurrency: number;
impersonationId: string;
userCurrency: string;
userId: string;
@ -1461,11 +1513,7 @@ export class PortfolioService {
userId
});
const { balanceInBaseCurrency } = await this.accountService.getCashDetails({
userId,
currency: userCurrency
});
const orders = await this.orderService.getOrders({
const activities = await this.orderService.getOrders({
userCurrency,
userId
});
@ -1480,18 +1528,24 @@ export class PortfolioService {
return account?.isExcluded ?? false;
});
const dividend = this.getDividend({ orders, userCurrency }).toNumber();
const dividend = this.getDividend({
activities,
userCurrency
}).toNumber();
const emergencyFund = new Big(
(user.Settings?.settings as UserSettings)?.emergencyFund ?? 0
);
const fees = this.getFees({ orders, userCurrency }).toNumber();
const firstOrderDate = orders[0]?.date;
const items = this.getItems(orders).toNumber();
const fees = this.getFees({ activities, userCurrency }).toNumber();
const firstOrderDate = activities[0]?.date;
const items = this.getItems(activities).toNumber();
const totalBuy = this.getTotalByType(orders, userCurrency, 'BUY');
const totalSell = this.getTotalByType(orders, userCurrency, 'SELL');
const totalBuy = this.getTotalByType(activities, userCurrency, 'BUY');
const totalSell = this.getTotalByType(activities, userCurrency, 'SELL');
const cash = new Big(balanceInBaseCurrency).minus(emergencyFund).toNumber();
const cash = new Big(balanceInBaseCurrency)
.minus(emergencyFund)
.plus(emergencyFundPositionsValueInBaseCurrency)
.toNumber();
const committedFunds = new Big(totalBuy).minus(totalSell);
const totalOfExcludedActivities = new Big(
this.getTotalByType(excludedActivities, userCurrency, 'BUY')
@ -1547,8 +1601,8 @@ export class PortfolioService {
totalSell,
committedFunds: committedFunds.toNumber(),
emergencyFund: emergencyFund.toNumber(),
ordersCount: orders.filter((order) => {
return order.type === 'BUY' || order.type === 'SELL';
ordersCount: activities.filter(({ type }) => {
return type === 'BUY' || type === 'SELL';
}).length
};
}
@ -1565,7 +1619,7 @@ export class PortfolioService {
withExcludedAccounts?: boolean;
}): Promise<{
transactionPoints: TransactionPoint[];
orders: OrderWithAccount[];
orders: Activity[];
portfolioOrders: PortfolioOrder[];
}> {
const userCurrency =

18
apps/api/src/helper/object.helper.ts

@ -1,4 +1,4 @@
import { cloneDeep, isObject } from 'lodash';
import { cloneDeep, isArray, isObject } from 'lodash';
export function hasNotDefinedValuesInObject(aObject: Object): boolean {
for (const key in aObject) {
@ -43,15 +43,23 @@ export function redactAttributes({
for (const option of options) {
if (redactedObject.hasOwnProperty(option.attribute)) {
if (option.valueMap['*'] || option.valueMap['*'] === null) {
redactedObject[option.attribute] = option.valueMap['*'];
} else if (option.valueMap[redactedObject[option.attribute]]) {
redactedObject[option.attribute] =
option.valueMap[redactedObject[option.attribute]] ??
option.valueMap['*'] ??
redactedObject[option.attribute];
option.valueMap[redactedObject[option.attribute]];
}
} else {
// If the attribute is not present on the current object,
// check if it exists on any nested objects
for (const property in redactedObject) {
if (typeof redactedObject[property] === 'object') {
if (isArray(redactedObject[property])) {
redactedObject[property] = redactedObject[property].map(
(currentObject) => {
return redactAttributes({ options, object: currentObject });
}
);
} else if (isObject(redactedObject[property])) {
// Recursively call the function on the nested object
redactedObject[property] = redactAttributes({
options,

82
apps/api/src/interceptors/redact-values-in-response.interceptor.ts

@ -1,5 +1,5 @@
import { Activity } from '@ghostfolio/api/app/order/interfaces/activities.interface';
import { UserService } from '@ghostfolio/api/app/user/user.service';
import { redactAttributes } from '@ghostfolio/api/helper/object.helper';
import {
CallHandler,
ExecutionContext,
@ -28,61 +28,37 @@ export class RedactValuesInResponseInterceptor<T>
hasImpersonationId ||
this.userService.isRestrictedView(request.user)
) {
if (data.accounts) {
for (const accountId of Object.keys(data.accounts)) {
if (data.accounts[accountId]?.balance !== undefined) {
data.accounts[accountId].balance = null;
}
}
}
if (data.activities) {
data.activities = data.activities.map((activity: Activity) => {
if (activity.Account?.balance !== undefined) {
activity.Account.balance = null;
}
if (activity.comment !== undefined) {
activity.comment = null;
}
if (activity.fee !== undefined) {
activity.fee = null;
}
if (activity.feeInBaseCurrency !== undefined) {
activity.feeInBaseCurrency = null;
}
if (activity.quantity !== undefined) {
activity.quantity = null;
}
if (activity.unitPrice !== undefined) {
activity.unitPrice = null;
}
if (activity.value !== undefined) {
activity.value = null;
}
if (activity.valueInBaseCurrency !== undefined) {
activity.valueInBaseCurrency = null;
}
return activity;
data = redactAttributes({
object: data,
options: [
'balance',
'balanceInBaseCurrency',
'comment',
'convertedBalance',
'fee',
'feeInBaseCurrency',
'filteredValueInBaseCurrency',
'grossPerformance',
'investment',
'netPerformance',
'quantity',
'symbolMapping',
'totalBalanceInBaseCurrency',
'totalValueInBaseCurrency',
'unitPrice',
'value',
'valueInBaseCurrency'
].map((attribute) => {
return {
attribute,
valueMap: {
'*': null
}
};
})
});
}
if (data.filteredValueInBaseCurrency) {
data.filteredValueInBaseCurrency = null;
}
if (data.totalValueInBaseCurrency) {
data.totalValueInBaseCurrency = null;
}
}
return data;
})
);

4
apps/api/src/services/cron.service.ts

@ -19,8 +19,8 @@ export class CronService {
private readonly twitterBotService: TwitterBotService
) {}
@Cron(CronExpression.EVERY_HOUR)
public async runEveryHour() {
@Cron(CronExpression.EVERY_4_HOURS)
public async runEveryFourHours() {
await this.dataGatheringService.gather7Days();
}

7
apps/client/src/app/app-routing.module.ts

@ -116,6 +116,13 @@ const routes: Routes = [
'./pages/blog/2022/12/the-importance-of-tracking-your-personal-finances/the-importance-of-tracking-your-personal-finances-page.module'
).then((m) => m.TheImportanceOfTrackingYourPersonalFinancesPageModule)
},
{
path: 'blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt',
loadChildren: () =>
import(
'./pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.module'
).then((m) => m.GhostfolioAufSackgeldVorgestelltPageModule)
},
{
path: 'demo',
loadChildren: () =>

4
apps/client/src/app/components/admin-overview/admin-overview.component.ts

@ -4,12 +4,12 @@ import { CacheService } from '@ghostfolio/client/services/cache.service';
import { DataService } from '@ghostfolio/client/services/data.service';
import { UserService } from '@ghostfolio/client/services/user/user.service';
import {
ghostfolioPrefix,
PROPERTY_COUPONS,
PROPERTY_CURRENCIES,
PROPERTY_IS_READ_ONLY_MODE,
PROPERTY_IS_USER_SIGNUP_ENABLED,
PROPERTY_SYSTEM_MESSAGE
PROPERTY_SYSTEM_MESSAGE,
ghostfolioPrefix
} from '@ghostfolio/common/config';
import { Coupon, InfoItem, User } from '@ghostfolio/common/interfaces';
import { hasPermission, permissions } from '@ghostfolio/common/permissions';

9
apps/client/src/app/components/home-overview/home-overview.component.ts

@ -110,13 +110,12 @@ export class HomeOverviewComponent implements OnDestroy, OnInit {
range: this.user?.settings?.dateRange
})
.pipe(takeUntil(this.unsubscribeSubject))
.subscribe((response) => {
this.errors = response.errors;
this.hasError = response.hasErrors;
this.performance = response.performance;
.subscribe(({ chart, errors, performance }) => {
this.errors = errors;
this.performance = performance;
this.isLoadingPerformance = false;
this.historicalDataItems = response.chart.map(
this.historicalDataItems = chart.map(
({ date, netPerformanceInPercentage }) => {
return {
date,

1
apps/client/src/app/components/home-overview/home-overview.html

@ -37,7 +37,6 @@
[baseCurrency]="user?.settings?.baseCurrency"
[deviceType]="deviceType"
[errors]="errors"
[hasError]="hasError"
[isAllTimeHigh]="isAllTimeHigh"
[isAllTimeLow]="isAllTimeLow"
[isLoading]="isLoadingPerformance"

23
apps/client/src/app/components/investment-chart/investment-chart.component.ts

@ -11,7 +11,8 @@ import {
import {
getTooltipOptions,
getTooltipPositionerMapTop,
getVerticalHoverLinePlugin
getVerticalHoverLinePlugin,
transformTickToAbbreviation
} from '@ghostfolio/common/chart-helper';
import { primaryColorRgb, secondaryColorRgb } from '@ghostfolio/common/config';
import {
@ -19,8 +20,7 @@ import {
getBackgroundColor,
getDateFormatString,
getTextColor,
parseDate,
transformTickToAbbreviation
parseDate
} from '@ghostfolio/common/helper';
import { LineChartItem } from '@ghostfolio/common/interfaces';
import { InvestmentItem } from '@ghostfolio/common/interfaces/investment-item.interface';
@ -136,10 +136,13 @@ export class InvestmentChartComponent implements OnChanges, OnDestroy {
date,
investment: last(this.investments).investment
});
this.values.push({ date, value: last(this.values).value });
this.values.push({
date,
value: last(this.values).value
});
}
const data = {
const chartData = {
labels: this.historicalDataItems.map(({ date }) => {
return parseDate(date);
}),
@ -191,12 +194,15 @@ export class InvestmentChartComponent implements OnChanges, OnDestroy {
if (this.chartCanvas) {
if (this.chart) {
this.chart.data = data;
this.chart.data = chartData;
this.chart.options.plugins.tooltip = <unknown>(
this.getTooltipPluginConfiguration()
);
this.chart.options.scales.x.min = this.daysInMarket
? subDays(new Date(), this.daysInMarket).toISOString()
? subDays(
new Date().setHours(0, 0, 0, 0),
this.daysInMarket
).toISOString()
: undefined;
if (
@ -210,7 +216,7 @@ export class InvestmentChartComponent implements OnChanges, OnDestroy {
this.chart.update();
} else {
this.chart = new Chart(this.chartCanvas.nativeElement, {
data,
data: chartData,
options: {
animation: false,
elements: {
@ -325,6 +331,7 @@ export class InvestmentChartComponent implements OnChanges, OnDestroy {
...getTooltipOptions({
colorScheme: this.colorScheme,
currency: this.isInPercent ? undefined : this.currency,
groupBy: this.groupBy,
locale: this.isInPercent ? undefined : this.locale,
unit: this.isInPercent ? '%' : undefined
}),

4
apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html

@ -3,14 +3,14 @@
<div
class="flex-grow-1 status text-muted text-right"
[title]="
hasError && !isLoading
errors?.length > 0 && !isLoading
? 'Sorry! Our data provider partner is experiencing the hiccups.'
: ''
"
(click)="errors?.length > 0 && onShowErrors()"
>
<ion-icon
*ngIf="hasError && !isLoading"
*ngIf="errors?.length > 0 && !isLoading"
name="alert-circle-outline"
></ion-icon>
</div>

1
apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts

@ -28,7 +28,6 @@ export class PortfolioPerformanceComponent implements OnChanges, OnInit {
@Input() baseCurrency: string;
@Input() deviceType: string;
@Input() errors: ResponseError['errors'];
@Input() hasError: boolean;
@Input() isAllTimeHigh: boolean;
@Input() isAllTimeLow: boolean;
@Input() isLoading: boolean;

7
apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.component.ts

@ -125,7 +125,12 @@ export class PositionDetailDialog implements OnDestroy, OnInit {
this.quantity = quantity;
this.sectors = {};
this.SymbolProfile = SymbolProfile;
this.tags = tags;
this.tags = tags.map(({ id, name }) => {
return {
id,
name: translate(name)
};
});
this.transactionCount = transactionCount;
this.value = value;

2
apps/client/src/app/pages/about/about-page.html

@ -42,9 +42,11 @@
href="https://twitter.com/ghostfolio_"
title="Tweet to Ghostfolio on Twitter"
>@ghostfolio_</a
><ng-container *ngIf="hasPermissionForSubscription"
>, send an e-mail to
<a href="mailto:hi@ghostfol.io" title="Send an e-mail"
>hi@ghostfol.io</a
></ng-container
>
or open an issue at
<a

18
apps/client/src/app/pages/account/account-page.html

@ -24,8 +24,8 @@
></gf-premium-indicator>
</div>
<div *ngIf="user?.subscription?.type === 'Premium'">
Valid until {{ user?.subscription?.expiresAt | date:
defaultDateFormat }}
<ng-container i18n>Valid until</ng-container> {{
user?.subscription?.expiresAt | date: defaultDateFormat }}
</div>
<div *ngIf="user?.subscription?.type === 'Basic'">
<ng-container *ngIf="hasPermissionForSubscription">
@ -74,8 +74,8 @@
<div class="pr-1 w-50">
<div i18n>Presenter View</div>
<div class="hint-text text-muted" i18n>
Hides sensitive values such as absolute performances and
quantities.
Protection for sensitive information like absolute performances
and quantity values
</div>
</div>
<div class="pl-1 w-50">
@ -210,8 +210,11 @@
</form>
</div>
<div class="d-flex mt-4 py-1">
<div class="align-items-center d-flex pr-1 pt-1 w-50">
<ng-container i18n>Zen Mode</ng-container>
<div class="pr-1 w-50">
<div i18n>Zen Mode</div>
<div class="hint-text text-muted" i18n>
Distraction-free experience for turbulent times
</div>
</div>
<div class="pl-1 w-50">
<mat-slide-toggle
@ -239,6 +242,9 @@
>
<div class="pr-1 w-50">
<div i18n>Experimental Features</div>
<div class="hint-text text-muted" i18n>
Sneak peek at upcoming functionality
</div>
</div>
<div class="pl-1 w-50">
<mat-slide-toggle

2
apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html

@ -7,7 +7,7 @@
<div class="mb-3 text-muted"><small>2022-07-23</small></div>
<img
alt="Ghostfolio meets Internet Identity Teaser"
class="rounded w-100"
class="border rounded w-100"
src="../assets/images/blog/ghostfolio-meets-internet-identity.png"
title="Ghostfolio meets Internet Identity"
/>

20
apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page-routing.module.ts

@ -0,0 +1,20 @@
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { AuthGuard } from '@ghostfolio/client/core/auth.guard';
import { GhostfolioAufSackgeldVorgestelltPageComponent } from './ghostfolio-auf-sackgeld-vorgestellt-page.component';
const routes: Routes = [
{
canActivate: [AuthGuard],
component: GhostfolioAufSackgeldVorgestelltPageComponent,
path: '',
title: 'Ghostfolio auf Sackgeld.com vorgestellt'
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class GhostfolioAufSackgeldVorgestelltPageRoutingModule {}

9
apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.component.ts

@ -0,0 +1,9 @@
import { Component } from '@angular/core';
@Component({
host: { class: 'page' },
selector: 'gf-ghostfolio-auf-sackgeld-vorgestellt-page',
styleUrls: ['./ghostfolio-auf-sackgeld-vorgestellt-page.scss'],
templateUrl: './ghostfolio-auf-sackgeld-vorgestellt-page.html'
})
export class GhostfolioAufSackgeldVorgestelltPageComponent {}

150
apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.html

@ -0,0 +1,150 @@
<div class="blog container">
<div class="row">
<div class="col-md-8 offset-md-2">
<article>
<div class="mb-4 text-center">
<h1 class="mb-1">Ghostfolio auf Sackgeld.com vorgestellt</h1>
<div class="text-muted"><small>2023-01-21</small></div>
<img
alt="Ghostfolio auf Sackgeld.com vorgestellt Teaser"
class="border rounded w-100"
src="../assets/images/blog/ghostfolio-x-sackgeld.png"
title="Ghostfolio auf Sackgeld.com vorgestellt"
/>
</div>
<section class="mb-4">
<p>
Wir freuen uns darüber, dass unsere Open Source Portfolio Tracking
Software <a href="https://ghostfol.io">Ghostfolio</a> auf dem
Fintech News Portal <i>Sackgeld.com</i> vorgestellt wurde.
</p>
</section>
<section class="mb-4">
<h2 class="h4">
Ghostfolio – Open Source Wealth Management Software
</h2>
<p>
Ghostfolio ermöglicht es dir, deine Portfolio-Performance einfach zu
verfolgen und zu analysieren. Es bietet dir detaillierte
Informationen über deine Positionen, historische Entwicklung und die
Zusammenstellung deines Portfolios. Durch die Open Source-Lizenz (<a
href="https://github.com/ghostfolio/ghostfolio/blob/main/LICENSE"
target="_blank"
>GNU Affero General Public License v3.0</a
>) wird die Software ständig weiterentwickelt und verbessert und du
hast sogar die Möglichkeit, dich selbst daran zu beteiligen. Wir
sind davon überzeugt, mit dem Open-Source-Ansatz von Ghostfolio das
Finanzwissen und Investieren für alle zugänglicher zu machen.
</p>
</section>
<section class="mb-4">
<h2 class="h4">Sackgeld.com – App für ein höheres Sackgeld</h2>
<p>
Das Schweizer Fintech News Portal
<a href="https://www.sackgeld.com" target="_blank">Sackgeld.com</a>
informiert über die neuesten Entwicklungen und Innovationen im
Bereich FinTech. Dazu gehören News, Artikel und persönliche
Erfahrungen aus der Welt der digitalen Finanz Apps, Säule 3a, P2P
und Immobilien.
</p>
</section>
<section class="mb-4">
<p>
Wenn du mehr über Ghostfolio erfahren möchtest, kannst du hier den
ganzen Artikel "<a
href="https://www.sackgeld.com/was-taugt-ghostfolio-als-portfolio-performance-tracking-tool"
target="_blank"
>Was taugt Ghostfolio als Portfolio Performance Tracking-Tool?</a
>" nachlesen.
</p>
<p>
Wir freuen uns auf dein Feedback.<br />
Thomas von Ghostfolio
</p>
</section>
<section class="mb-4">
<ul class="list-inline">
<li class="list-inline-item">
<span class="badge badge-light">AGPL-3.0</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Aktie</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Altersvorsorge</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Anlage</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">App</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Feedback</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Finanzwissen</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Fintech</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Ghostfolio</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Immobilien</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Innovation</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Investieren</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Lizenz</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Open Source</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">OSS</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">P2P</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Performance</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Portfolio</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Sackgeld</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Säule 3a</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Schweiz</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Software</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Taschengeld</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Tool</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Vermögen</span>
</li>
<li class="list-inline-item">
<span class="badge badge-light">Wealth Management</span>
</li>
</ul>
</section>
</article>
</div>
</div>
</div>

17
apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.module.ts

@ -0,0 +1,17 @@
import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';
import { GhostfolioAufSackgeldVorgestelltPageRoutingModule } from './ghostfolio-auf-sackgeld-vorgestellt-page-routing.module';
import { GhostfolioAufSackgeldVorgestelltPageComponent } from './ghostfolio-auf-sackgeld-vorgestellt-page.component';
@NgModule({
declarations: [GhostfolioAufSackgeldVorgestelltPageComponent],
imports: [
CommonModule,
GhostfolioAufSackgeldVorgestelltPageRoutingModule,
RouterModule
],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
export class GhostfolioAufSackgeldVorgestelltPageModule {}

3
apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.scss

@ -0,0 +1,3 @@
:host {
display: block;
}

26
apps/client/src/app/pages/blog/blog-page.html

@ -2,6 +2,32 @@
<div class="mb-5 row">
<div class="col">
<h3 class="d-none d-sm-block mb-3 text-center" i18n>Blog</h3>
<mat-card class="mb-3">
<mat-card-content>
<div class="container p-0">
<div class="flex-nowrap no-gutters row">
<a
class="d-flex overflow-hidden w-100"
href="../de/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt"
>
<div class="flex-grow-1 overflow-hidden">
<div class="h6 m-0 text-truncate">
Ghostfolio auf Sackgeld.com vorgestellt
</div>
<div class="d-flex text-muted">2023-01-21</div>
</div>
<div class="align-items-center d-flex">
<ion-icon
class="chevron text-muted"
name="chevron-forward-outline"
size="small"
></ion-icon>
</div>
</a>
</div>
</div>
</mat-card-content>
</mat-card>
<mat-card class="mb-3">
<mat-card-content>
<div class="container p-0">

2
apps/client/src/app/pages/features/features-page.html

@ -197,7 +197,7 @@
<div class="flex-grow-1">
<h4>Multi-Language</h4>
<p class="m-0">
Use Ghostfolio in multiple languages: English, Dutch, Français,
Use Ghostfolio in multiple languages: English, Dutch, French,
German, Italian<ng-container *ngIf="false"
>, Portuguese</ng-container
>

20
apps/client/src/app/pages/landing/landing-page.html

@ -106,7 +106,7 @@
<div class="row mb-5">
<div class="col-12 text-center text-muted"><small>As seen in</small></div>
<div class="col-md-2 d-flex justify-content-center my-1">
<div class="col-md-3 d-flex justify-content-center my-1">
<a
class="d-block logo logo-alternative-to mask"
href="https://alternativeto.net"
@ -114,7 +114,7 @@
title="AlternativeTo - Crowdsourced software recommendations"
></a>
</div>
<div class="col-md-2 d-flex justify-content-center my-1">
<div class="col-md-3 d-flex justify-content-center my-1">
<a
class="d-block logo logo-awesome"
href="https://github.com/awesome-selfhosted/awesome-selfhosted"
@ -122,7 +122,7 @@
title="Awesome-Selfhosted: A list of Free Software network services and web applications which can be hosted on your own servers"
></a>
</div>
<div class="col-md-2 d-flex justify-content-center my-1">
<div class="col-md-3 d-flex justify-content-center my-1">
<a
class="d-block logo logo-openstartup"
href="https://openstartup.tm"
@ -130,7 +130,7 @@
title="Open Startup: The most complete list of open startups"
></a>
</div>
<div class="col-md-2 d-flex justify-content-center my-1">
<div class="col-md-3 d-flex justify-content-center my-1">
<a
class="d-block logo logo-privacy-tools mask"
href="https://www.privacytools.io"
@ -138,7 +138,7 @@
title="Privacy Tools: Software Alternatives and Encryption"
></a>
</div>
<div class="col-md-2 d-flex justify-content-center my-1">
<div class="col-md-3 d-flex justify-content-center my-1">
<a
class="d-block logo logo-product-hunt"
href="https://www.producthunt.com"
@ -146,7 +146,15 @@
title="Product Hunt – The best new products in tech."
></a>
</div>
<div class="col-md-2 d-flex justify-content-center my-1">
<div class="col-md-3 d-flex justify-content-center my-1">
<a
class="d-block logo logo-sackgeld mask"
href="https://www.sackgeld.com"
target="_blank"
title="Sackgeld.com – Apps für ein höheres Sackgeld"
></a>
</div>
<div class="col-md-3 d-flex justify-content-center my-1">
<a
class="d-block logo logo-unraid mask"
href="https://unraid.net"

5
apps/client/src/app/pages/landing/landing-page.scss

@ -75,6 +75,10 @@
filter: grayscale(1);
}
&.logo-sackgeld {
mask-image: url('/assets/images/logo-sackgeld.png');
}
&.logo-unraid {
mask-image: url('/assets/images/logo-unraid.svg');
}
@ -112,6 +116,7 @@
&.logo-agplv3,
&.logo-alternative-to,
&.logo-privacy-tools,
&.logo-sackgeld,
&.logo-unraid {
background-color: rgba(var(--light-primary-text));
}

2
apps/client/src/app/pages/portfolio/activities/activities-page.component.ts

@ -11,7 +11,7 @@ import { IcsService } from '@ghostfolio/client/services/ics/ics.service';
import { ImpersonationStorageService } from '@ghostfolio/client/services/impersonation-storage.service';
import { UserService } from '@ghostfolio/client/services/user/user.service';
import { downloadAsFile } from '@ghostfolio/common/helper';
import { UniqueAsset, User } from '@ghostfolio/common/interfaces';
import { User } from '@ghostfolio/common/interfaces';
import { hasPermission, permissions } from '@ghostfolio/common/permissions';
import { DataSource, Order as OrderModel } from '@prisma/client';
import { format, parseISO } from 'date-fns';

16
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts

@ -83,7 +83,12 @@ export class CreateOrUpdateActivityDialog implements OnDestroy {
this.currencies = currencies;
this.platforms = platforms;
this.tags = tags;
this.tags = tags.map(({ id, name }) => {
return {
id,
name: translate(name)
};
});
this.activityForm = this.formBuilder.group({
accountId: [this.data.activity?.accountId, Validators.required],
@ -114,7 +119,14 @@ export class CreateOrUpdateActivityDialog implements OnDestroy {
},
Validators.required
],
tags: [this.data.activity?.tags],
tags: [
this.data.activity?.tags?.map(({ id, name }) => {
return {
id,
name: translate(name)
};
})
],
type: [undefined, Validators.required], // Set after value changes subscription
unitPrice: [this.data.activity?.unitPrice, Validators.required]
});

72
apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts

@ -18,7 +18,7 @@ import {
User
} from '@ghostfolio/common/interfaces';
import { hasPermission, permissions } from '@ghostfolio/common/permissions';
import { Market, ToggleOption } from '@ghostfolio/common/types';
import { Market } from '@ghostfolio/common/types';
import { translate } from '@ghostfolio/ui/i18n';
import { Account, AssetClass, DataSource } from '@prisma/client';
import { DeviceDetectorService } from 'ngx-device-detector';
@ -53,11 +53,6 @@ export class AllocationsPageComponent implements OnDestroy, OnInit {
public markets: {
[key in Market]: { name: string; value: number };
};
public period = 'current';
public periodOptions: ToggleOption[] = [
{ label: $localize`Initial`, value: 'original' },
{ label: $localize`Current`, value: 'current' }
];
public placeholder = '';
public portfolioDetails: PortfolioDetails;
public positions: {
@ -146,7 +141,7 @@ export class AllocationsPageComponent implements OnDestroy, OnInit {
.subscribe((portfolioDetails) => {
this.portfolioDetails = portfolioDetails;
this.initializeAnalysisData(this.period);
this.initializeAnalysisData();
this.isLoading = false;
@ -183,7 +178,7 @@ export class AllocationsPageComponent implements OnDestroy, OnInit {
const tagFilters: Filter[] = this.user.tags.map(({ id, name }) => {
return {
id,
label: name,
label: translate(name),
type: 'TAG'
};
});
@ -248,7 +243,7 @@ export class AllocationsPageComponent implements OnDestroy, OnInit {
};
}
public initializeAnalysisData(aPeriod: string) {
public initializeAnalysisData() {
this.initialize();
for (const [id, { current, name, original }] of Object.entries(
@ -257,7 +252,7 @@ export class AllocationsPageComponent implements OnDestroy, OnInit {
this.accounts[id] = {
id,
name,
value: aPeriod === 'original' ? original : current
value: current
};
}
@ -266,19 +261,11 @@ export class AllocationsPageComponent implements OnDestroy, OnInit {
)) {
let value = 0;
if (aPeriod === 'original') {
if (this.hasImpersonationId) {
value = position.allocationInvestment;
} else {
value = position.investment;
}
} else {
if (this.hasImpersonationId) {
value = position.allocationCurrent;
value = position.allocationInPercentage;
} else {
value = position.value;
}
}
this.positions[symbol] = {
value,
@ -294,14 +281,11 @@ export class AllocationsPageComponent implements OnDestroy, OnInit {
if (position.countries.length > 0) {
this.markets.developedMarkets.value +=
position.markets.developedMarkets *
(aPeriod === 'original' ? position.investment : position.value);
position.markets.developedMarkets * position.value;
this.markets.emergingMarkets.value +=
position.markets.emergingMarkets *
(aPeriod === 'original' ? position.investment : position.value);
position.markets.emergingMarkets * position.value;
this.markets.otherMarkets.value +=
position.markets.otherMarkets *
(aPeriod === 'original' ? position.investment : position.value);
position.markets.otherMarkets * position.value;
for (const country of position.countries) {
const { code, continent, name, weight } = country;
@ -311,11 +295,7 @@ export class AllocationsPageComponent implements OnDestroy, OnInit {
} else {
this.continents[continent] = {
name: continent,
value:
weight *
(aPeriod === 'original'
? this.portfolioDetails.holdings[symbol].investment
: this.portfolioDetails.holdings[symbol].value)
value: weight * this.portfolioDetails.holdings[symbol].value
};
}
@ -324,24 +304,16 @@ export class AllocationsPageComponent implements OnDestroy, OnInit {
} else {
this.countries[code] = {
name,
value:
weight *
(aPeriod === 'original'
? this.portfolioDetails.holdings[symbol].investment
: this.portfolioDetails.holdings[symbol].value)
value: weight * this.portfolioDetails.holdings[symbol].value
};
}
}
} else {
this.continents[UNKNOWN_KEY].value +=
aPeriod === 'original'
? this.portfolioDetails.holdings[symbol].investment
: this.portfolioDetails.holdings[symbol].value;
this.portfolioDetails.holdings[symbol].value;
this.countries[UNKNOWN_KEY].value +=
aPeriod === 'original'
? this.portfolioDetails.holdings[symbol].investment
: this.portfolioDetails.holdings[symbol].value;
this.portfolioDetails.holdings[symbol].value;
}
if (position.sectors.length > 0) {
@ -353,19 +325,13 @@ export class AllocationsPageComponent implements OnDestroy, OnInit {
} else {
this.sectors[name] = {
name,
value:
weight *
(aPeriod === 'original'
? this.portfolioDetails.holdings[symbol].investment
: this.portfolioDetails.holdings[symbol].value)
value: weight * this.portfolioDetails.holdings[symbol].value
};
}
}
} else {
this.sectors[UNKNOWN_KEY].value +=
aPeriod === 'original'
? this.portfolioDetails.holdings[symbol].investment
: this.portfolioDetails.holdings[symbol].value;
this.portfolioDetails.holdings[symbol].value;
}
}
@ -373,7 +339,7 @@ export class AllocationsPageComponent implements OnDestroy, OnInit {
dataSource: position.dataSource,
name: position.name,
symbol: prettifySymbol(symbol),
value: aPeriod === 'original' ? position.investment : position.value
value: position.value
};
}
@ -398,12 +364,6 @@ export class AllocationsPageComponent implements OnDestroy, OnInit {
}
}
public onChangePeriod(aValue: string) {
this.period = aValue;
this.initializeAnalysisData(this.period);
}
public onSymbolChartClicked({ dataSource, symbol }: UniqueAsset) {
if (dataSource && symbol) {
this.router.navigate([], {

48
apps/client/src/app/pages/portfolio/allocations/allocations-page.html

@ -39,12 +39,6 @@
<mat-card class="mb-3">
<mat-card-header class="overflow-hidden w-100">
<mat-card-title class="text-truncate" i18n>By Account</mat-card-title>
<gf-toggle
[defaultValue]="period"
[isLoading]="false"
[options]="periodOptions"
(change)="onChangePeriod($event.value)"
></gf-toggle>
</mat-card-header>
<mat-card-content>
<gf-portfolio-proportion-chart
@ -70,12 +64,6 @@
class="ml-1"
></gf-premium-indicator
></mat-card-title>
<gf-toggle
[defaultValue]="period"
[isLoading]="false"
[options]="periodOptions"
(change)="onChangePeriod($event.value)"
></gf-toggle>
</mat-card-header>
<mat-card-content>
<gf-portfolio-proportion-chart
@ -99,12 +87,6 @@
class="ml-1"
></gf-premium-indicator
></mat-card-title>
<gf-toggle
[defaultValue]="period"
[isLoading]="false"
[options]="periodOptions"
(change)="onChangePeriod($event.value)"
></gf-toggle>
</mat-card-header>
<mat-card-content>
<gf-portfolio-proportion-chart
@ -124,12 +106,6 @@
<mat-card-title class="align-items-center d-flex text-truncate">
<ng-container i18n>By Holding</ng-container></mat-card-title
>
<gf-toggle
[defaultValue]="period"
[isLoading]="false"
[options]="periodOptions"
(change)="onChangePeriod($event.value)"
></gf-toggle>
</mat-card-header>
<mat-card-content>
<gf-portfolio-proportion-chart
@ -157,12 +133,6 @@
class="ml-1"
></gf-premium-indicator
></mat-card-title>
<gf-toggle
[defaultValue]="period"
[isLoading]="false"
[options]="periodOptions"
(change)="onChangePeriod($event.value)"
></gf-toggle>
</mat-card-header>
<mat-card-content>
<gf-portfolio-proportion-chart
@ -187,12 +157,6 @@
class="ml-1"
></gf-premium-indicator
></mat-card-title>
<gf-toggle
[defaultValue]="period"
[isLoading]="false"
[options]="periodOptions"
(change)="onChangePeriod($event.value)"
></gf-toggle>
</mat-card-header>
<mat-card-content>
<gf-portfolio-proportion-chart
@ -216,12 +180,6 @@
class="ml-1"
></gf-premium-indicator
></mat-card-title>
<gf-toggle
[defaultValue]="period"
[isLoading]="false"
[options]="periodOptions"
(change)="onChangePeriod($event.value)"
></gf-toggle>
</mat-card-header>
<mat-card-content>
<gf-portfolio-proportion-chart
@ -248,12 +206,6 @@
class="ml-1"
></gf-premium-indicator
></mat-card-title>
<gf-toggle
[defaultValue]="period"
[isLoading]="false"
[options]="periodOptions"
(change)="onChangePeriod($event.value)"
></gf-toggle>
</mat-card-header>
<mat-card-content>
<gf-world-map-chart

2
apps/client/src/app/pages/portfolio/allocations/allocations-page.module.ts

@ -3,7 +3,6 @@ import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { MatCardModule } from '@angular/material/card';
import { MatDialogModule } from '@angular/material/dialog';
import { MatProgressBarModule } from '@angular/material/progress-bar';
import { GfToggleModule } from '@ghostfolio/client/components/toggle/toggle.module';
import { GfWorldMapChartModule } from '@ghostfolio/client/components/world-map-chart/world-map-chart.module';
import { GfActivitiesFilterModule } from '@ghostfolio/ui/activities-filter/activities-filter.module';
import { GfPortfolioProportionChartModule } from '@ghostfolio/ui/portfolio-proportion-chart/portfolio-proportion-chart.module';
@ -21,7 +20,6 @@ import { AllocationsPageComponent } from './allocations-page.component';
GfActivitiesFilterModule,
GfPortfolioProportionChartModule,
GfPremiumIndicatorModule,
GfToggleModule,
GfWorldMapChartModule,
GfValueModule,
MatCardModule,

2
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts

@ -159,7 +159,7 @@ export class AnalysisPageComponent implements OnDestroy, OnInit {
const tagFilters: Filter[] = this.user.tags.map(({ id, name }) => {
return {
id,
label: name,
label: translate(name),
type: 'TAG'
};
});

2
apps/client/src/app/pages/portfolio/holdings/holdings-page.component.ts

@ -138,7 +138,7 @@ export class HoldingsPageComponent implements OnDestroy, OnInit {
const tagFilters: Filter[] = this.user.tags.map(({ id, name }) => {
return {
id,
label: name,
label: translate(name),
type: 'TAG'
};
});

2
apps/client/src/app/pages/public/public-page.component.ts

@ -131,7 +131,7 @@ export class PublicPageComponent implements OnInit {
for (const [symbol, position] of Object.entries(
this.portfolioPublicDetails.holdings
)) {
const value = position.allocationCurrent;
const value = position.allocationInPercentage;
this.positions[symbol] = {
value,

BIN
apps/client/src/assets/images/blog/ghostfolio-x-sackgeld.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
apps/client/src/assets/images/logo-sackgeld.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

44
apps/client/src/assets/sitemap.xml

@ -6,82 +6,86 @@
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<url>
<loc>https://ghostfol.io</loc>
<lastmod>2023-01-05T00:00:00+00:00</lastmod>
<lastmod>2023-01-23T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/de/blog/2021/07/hallo-ghostfolio</loc>
<lastmod>2023-01-05T00:00:00+00:00</lastmod>
<lastmod>2023-01-23T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/de/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt</loc>
<lastmod>2023-01-23T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/en/about</loc>
<lastmod>2023-01-05T00:00:00+00:00</lastmod>
<lastmod>2023-01-23T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/en/about/changelog</loc>
<lastmod>2023-01-05T00:00:00+00:00</lastmod>
<lastmod>2023-01-23T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/en/blog</loc>
<lastmod>2023-01-05T00:00:00+00:00</lastmod>
<lastmod>2023-01-23T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/en/blog/2021/07/hello-ghostfolio</loc>
<lastmod>2023-01-05T00:00:00+00:00</lastmod>
<lastmod>2023-01-23T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/en/blog/2022/01/ghostfolio-first-months-in-open-source</loc>
<lastmod>2023-01-05T00:00:00+00:00</lastmod>
<lastmod>2023-01-23T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/en/blog/2022/07/ghostfolio-meets-internet-identity</loc>
<lastmod>2023-01-05T00:00:00+00:00</lastmod>
<lastmod>2023-01-23T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/en/blog/2022/07/how-do-i-get-my-finances-in-order</loc>
<lastmod>2023-01-05T00:00:00+00:00</lastmod>
<lastmod>2023-01-23T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/en/blog/2022/08/500-stars-on-github</loc>
<lastmod>2023-01-05T00:00:00+00:00</lastmod>
<lastmod>2023-01-23T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/en/blog/2022/10/hacktoberfest-2022</loc>
<lastmod>2023-01-05T00:00:00+00:00</lastmod>
<lastmod>2023-01-23T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/en/blog/2022/11/black-friday-2022</loc>
<lastmod>2023-01-05T00:00:00+00:00</lastmod>
<lastmod>2023-01-23T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/en/blog/2022/12/the-importance-of-tracking-your-personal-finances</loc>
<lastmod>2023-01-05T00:00:00+00:00</lastmod>
<lastmod>2023-01-23T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/en/demo</loc>
<lastmod>2023-01-05T00:00:00+00:00</lastmod>
<lastmod>2023-01-23T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/en/faq</loc>
<lastmod>2023-01-05T00:00:00+00:00</lastmod>
<lastmod>2023-01-23T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/en/features</loc>
<lastmod>2023-01-05T00:00:00+00:00</lastmod>
<lastmod>2023-01-23T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/en/markets</loc>
<lastmod>2023-01-05T00:00:00+00:00</lastmod>
<lastmod>2023-01-23T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/en/pricing</loc>
<lastmod>2023-01-05T00:00:00+00:00</lastmod>
<lastmod>2023-01-23T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/en/register</loc>
<lastmod>2023-01-05T00:00:00+00:00</lastmod>
<lastmod>2023-01-23T00:00:00+00:00</lastmod>
</url>
<url>
<loc>https://ghostfol.io/en/resources</loc>
<lastmod>2023-01-05T00:00:00+00:00</lastmod>
<lastmod>2023-01-23T00:00:00+00:00</lastmod>
</url>
</urlset>

190
apps/client/src/locales/messages.de.xlf

@ -1433,14 +1433,6 @@
<context context-type="linenumber">75</context>
</context-group>
</trans-unit>
<trans-unit id="31b2f7072bfeddc35fec6b3f731fc47d44eba155" datatype="html">
<source> Hides sensitive values such as absolute performances and quantities. </source>
<target state="new"/>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">76,79</context>
</context-group>
</trans-unit>
<trans-unit id="68baf7bff1f9242d0f6e4c0952dafefa6553cecd" datatype="html">
<source>Base Currency</source>
<target state="translated">Basiswährung</target>
@ -1478,7 +1470,7 @@
<target state="translated">Einloggen mit Fingerabdruck</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">226</context>
<context context-type="linenumber">229</context>
</context-group>
</trans-unit>
<trans-unit id="83c4d4d764d2e2725ab8e919ec16ac400e1f290a" datatype="html">
@ -1486,7 +1478,7 @@
<target state="translated">Benutzer ID</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">253</context>
<context context-type="linenumber">259</context>
</context-group>
</trans-unit>
<trans-unit id="9021c579c084e68d9db06a569d76f024111c6c54" datatype="html">
@ -1494,7 +1486,7 @@
<target state="translated">Zugangsberechtigung</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">262</context>
<context context-type="linenumber">268</context>
</context-group>
</trans-unit>
<trans-unit id="5e41f1b4c46ad9e0a9bc83fa36445483aa5cc324" datatype="html">
@ -1702,7 +1694,7 @@
<target state="translated">Nach Währung</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">67</context>
<context context-type="linenumber">61</context>
</context-group>
</trans-unit>
<trans-unit id="8288ff761f2d259625d2e5a3d96db727926d9cd4" datatype="html">
@ -1710,7 +1702,7 @@
<target state="translated">Nach Anlageklasse</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">96</context>
<context context-type="linenumber">84</context>
</context-group>
</trans-unit>
<trans-unit id="b64539bb7815eb3275b55ad723d3897fc6ba8d23" datatype="html">
@ -1718,7 +1710,7 @@
<target state="translated">Nach Position</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">125</context>
<context context-type="linenumber">107</context>
</context-group>
</trans-unit>
<trans-unit id="9f86714c9a6b74e13c96ab02102ce40c34fe13b9" datatype="html">
@ -1726,7 +1718,7 @@
<target state="translated">Nach Sektor</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">154</context>
<context context-type="linenumber">130</context>
</context-group>
</trans-unit>
<trans-unit id="7017e0e26b53ef322c3e3bbf95f06a85487a12b2" datatype="html">
@ -1734,7 +1726,7 @@
<target state="translated">Nach Kontinent</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">184</context>
<context context-type="linenumber">154</context>
</context-group>
</trans-unit>
<trans-unit id="f27e9dd8de80176286e02312e694cb8d1e485a5d" datatype="html">
@ -1742,7 +1734,7 @@
<target state="translated">Nach Land</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">213</context>
<context context-type="linenumber">177</context>
</context-group>
</trans-unit>
<trans-unit id="85780db87ac6c9f202615ac63754551c061e7236" datatype="html">
@ -1750,7 +1742,7 @@
<target state="translated">Regionen</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">245</context>
<context context-type="linenumber">203</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -2378,7 +2370,7 @@
<target state="translated">Entwickelte Länder</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">272</context>
<context context-type="linenumber">224</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -2390,7 +2382,7 @@
<target state="translated">Schwellenländer</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">281</context>
<context context-type="linenumber">233</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -2402,7 +2394,7 @@
<target state="translated">Andere Länder</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">290</context>
<context context-type="linenumber">242</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -2425,22 +2417,6 @@
<context context-type="linenumber">44</context>
</context-group>
</trans-unit>
<trans-unit id="2937311350146031865" datatype="html">
<source>Initial</source>
<target state="translated">Beginn</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts</context>
<context context-type="linenumber">58</context>
</context-group>
</trans-unit>
<trans-unit id="6603000223840533819" datatype="html">
<source>Current</source>
<target state="translated">Aktuell</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts</context>
<context context-type="linenumber">59</context>
</context-group>
</trans-unit>
<trans-unit id="6762743264882388498" datatype="html">
<source>Monthly</source>
<target state="translated">Monatlich</target>
@ -2462,7 +2438,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.ts</context>
<context context-type="linenumber">281</context>
<context context-type="linenumber">283</context>
</context-group>
</trans-unit>
<trans-unit id="3441715041566940420" datatype="html">
@ -2470,7 +2446,7 @@
<target state="translated">Verzinsung</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.ts</context>
<context context-type="linenumber">291</context>
<context context-type="linenumber">293</context>
</context-group>
</trans-unit>
<trans-unit id="1054498214311181686" datatype="html">
@ -2478,7 +2454,7 @@
<target state="translated">Ersparnisse</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.ts</context>
<context context-type="linenumber">301</context>
<context context-type="linenumber">303</context>
</context-group>
</trans-unit>
<trans-unit id="aad5320acd7453f912bc8714e72c2fa71e8ab18e" datatype="html">
@ -2526,7 +2502,7 @@
<target state="translated">Filtern nach Konto oder Tag...</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts</context>
<context context-type="linenumber">137</context>
<context context-type="linenumber">132</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
@ -2570,7 +2546,7 @@
<target state="translated">Experimentelle Funktionen</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">241</context>
<context context-type="linenumber">244</context>
</context-group>
</trans-unit>
<trans-unit id="1b25c6e22f822e07a3e4d5aae4edc5b41fe083c2" datatype="html">
@ -2674,7 +2650,7 @@
<target state="translated">Gesamtbetrag</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/investment-chart/investment-chart.component.ts</context>
<context context-type="linenumber">178</context>
<context context-type="linenumber">181</context>
</context-group>
</trans-unit>
<trans-unit id="f1a355a1af2e818050a3af693ac8b521fa7edc5f" datatype="html">
@ -2690,7 +2666,7 @@
<target state="translated">Sparrate</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/investment-chart/investment-chart.component.ts</context>
<context context-type="linenumber">239</context>
<context context-type="linenumber">245</context>
</context-group>
</trans-unit>
<trans-unit id="4086606389696938932" datatype="html">
@ -2714,7 +2690,7 @@
<target state="translated">Symbol</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">10</context>
<context context-type="linenumber">16</context>
</context-group>
</trans-unit>
<trans-unit id="1825829511397926879" datatype="html">
@ -2722,7 +2698,7 @@
<target state="translated">Tag</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">11</context>
<context context-type="linenumber">17</context>
</context-group>
</trans-unit>
<trans-unit id="787798817533231355" datatype="html">
@ -2730,7 +2706,7 @@
<target state="translated">Bargeld</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">14</context>
<context context-type="linenumber">20</context>
</context-group>
</trans-unit>
<trans-unit id="8431989971855844965" datatype="html">
@ -2738,7 +2714,7 @@
<target state="translated">Rohstoff</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">15</context>
<context context-type="linenumber">21</context>
</context-group>
</trans-unit>
<trans-unit id="1983771552391474467" datatype="html">
@ -2746,7 +2722,7 @@
<target state="translated">Anteilskapital</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">16</context>
<context context-type="linenumber">22</context>
</context-group>
</trans-unit>
<trans-unit id="6124744839836623630" datatype="html">
@ -2754,7 +2730,7 @@
<target state="translated">Feste Einkünfte</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">17</context>
<context context-type="linenumber">23</context>
</context-group>
</trans-unit>
<trans-unit id="8432027249343784512" datatype="html">
@ -2762,7 +2738,7 @@
<target state="translated">Immobilien</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">18</context>
<context context-type="linenumber">24</context>
</context-group>
</trans-unit>
<trans-unit id="8977365084844053365" datatype="html">
@ -2770,7 +2746,7 @@
<target state="translated">Anleihe</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">21</context>
<context context-type="linenumber">27</context>
</context-group>
</trans-unit>
<trans-unit id="2893204435511484886" datatype="html">
@ -2778,7 +2754,7 @@
<target state="translated">Kryptowährung</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">22</context>
<context context-type="linenumber">28</context>
</context-group>
</trans-unit>
<trans-unit id="9071695492820527473" datatype="html">
@ -2786,7 +2762,7 @@
<target state="translated">ETF</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">23</context>
<context context-type="linenumber">29</context>
</context-group>
</trans-unit>
<trans-unit id="5734784563242233466" datatype="html">
@ -2794,7 +2770,7 @@
<target state="translated">Investmentfonds</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">24</context>
<context context-type="linenumber">30</context>
</context-group>
</trans-unit>
<trans-unit id="1270654249046226808" datatype="html">
@ -2802,7 +2778,7 @@
<target state="translated">Edelmetall</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">25</context>
<context context-type="linenumber">31</context>
</context-group>
</trans-unit>
<trans-unit id="1346519036036997811" datatype="html">
@ -2810,7 +2786,7 @@
<target state="translated">Privates Beteiligungskapital</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">26</context>
<context context-type="linenumber">32</context>
</context-group>
</trans-unit>
<trans-unit id="4613338085351943838" datatype="html">
@ -2818,7 +2794,7 @@
<target state="translated">Aktie</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">27</context>
<context context-type="linenumber">33</context>
</context-group>
</trans-unit>
<trans-unit id="6268646680388419543" datatype="html">
@ -2826,7 +2802,7 @@
<target state="translated">Notfallfonds</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">7</context>
<context context-type="linenumber">8</context>
</context-group>
</trans-unit>
<trans-unit id="8693603235657020323" datatype="html">
@ -2834,7 +2810,7 @@
<target state="translated">Andere</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">8</context>
<context context-type="linenumber">12</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts</context>
@ -2858,7 +2834,7 @@
<target state="translated">Nordamerika</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">33</context>
<context context-type="linenumber">39</context>
</context-group>
</trans-unit>
<trans-unit id="1413778527796351850" datatype="html">
@ -2866,7 +2842,7 @@
<target state="translated">Afrika</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">30</context>
<context context-type="linenumber">36</context>
</context-group>
</trans-unit>
<trans-unit id="3345512471687795386" datatype="html">
@ -2874,7 +2850,7 @@
<target state="translated">Asien</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">31</context>
<context context-type="linenumber">37</context>
</context-group>
</trans-unit>
<trans-unit id="8350109327144196614" datatype="html">
@ -2882,7 +2858,7 @@
<target state="translated">Europa</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">32</context>
<context context-type="linenumber">38</context>
</context-group>
</trans-unit>
<trans-unit id="3228811828827738441" datatype="html">
@ -2890,7 +2866,7 @@
<target state="translated">Ozeanien</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">34</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="5957846001261659229" datatype="html">
@ -2898,7 +2874,7 @@
<target state="translated">Südamerika</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">35</context>
<context context-type="linenumber">41</context>
</context-group>
</trans-unit>
<trans-unit id="73f8489a3ae4d805787b8350d3d91e03e830115b" datatype="html">
@ -3022,7 +2998,7 @@
<target state="translated">Wertschriften</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">9</context>
<context context-type="linenumber">15</context>
</context-group>
</trans-unit>
<trans-unit id="3229595422546554334" datatype="html">
@ -3089,6 +3065,86 @@
<context context-type="linenumber">397</context>
</context-group>
</trans-unit>
<trans-unit id="d82473cef3cd2258eab20223ffcdd5af0c0025cc" datatype="html">
<source>Valid until</source>
<target state="translated">Gültig bis</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">27</context>
</context-group>
</trans-unit>
<trans-unit id="7027401708987643293" datatype="html">
<source>Core</source>
<target state="translated">Kern</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
<trans-unit id="5036857680734170026" datatype="html">
<source>Grant</source>
<target state="translated">Zuwendung</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">9</context>
</context-group>
</trans-unit>
<trans-unit id="2963674907100579427" datatype="html">
<source>Higher Risk</source>
<target state="translated">Höheres Risiko</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">10</context>
</context-group>
</trans-unit>
<trans-unit id="4152514811781104574" datatype="html">
<source>Lower Risk</source>
<target state="new">Geringeres Risiko</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">11</context>
</context-group>
</trans-unit>
<trans-unit id="9219851060664514927" datatype="html">
<source>Retirement Provision</source>
<target state="translated">Altersvorsorge</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">13</context>
</context-group>
</trans-unit>
<trans-unit id="8050244774979733855" datatype="html">
<source>Satellite</source>
<target state="translated">Satellit</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">14</context>
</context-group>
</trans-unit>
<trans-unit id="36f3a413e742253688f48766189344d6f52611d8" datatype="html">
<source> Protection for sensitive information like absolute performances and quantity values </source>
<target state="translated"> Ausblenden von sensiblen Informationen wie absoluter Performance und Stückzahl </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">76,79</context>
</context-group>
</trans-unit>
<trans-unit id="2e744a88d8fa3204bb7cf407e7e3f3680f9e67a4" datatype="html">
<source> Distraction-free experience for turbulent times </source>
<target state="translated"> Unbeschwertes Erlebnis für turbulente Zeiten </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">215,217</context>
</context-group>
</trans-unit>
<trans-unit id="b706a0f7740f8180094b8f6144462d121da49aa4" datatype="html">
<source> Sneak peek at upcoming functionality </source>
<target state="translated"> Vorschau auf kommende Funktionalität </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">245,247</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

190
apps/client/src/locales/messages.es.xlf

@ -1434,14 +1434,6 @@
<context context-type="linenumber">75</context>
</context-group>
</trans-unit>
<trans-unit id="31b2f7072bfeddc35fec6b3f731fc47d44eba155" datatype="html">
<source> Hides sensitive values such as absolute performances and quantities. </source>
<target state="translated">Esconde valores sensibles como los rendimientos absolutos y las cantidades.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">76,79</context>
</context-group>
</trans-unit>
<trans-unit id="68baf7bff1f9242d0f6e4c0952dafefa6553cecd" datatype="html">
<source>Base Currency</source>
<target state="translated">Divisa base</target>
@ -1479,7 +1471,7 @@
<target state="translated">Accede con huella digital</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">226</context>
<context context-type="linenumber">229</context>
</context-group>
</trans-unit>
<trans-unit id="83c4d4d764d2e2725ab8e919ec16ac400e1f290a" datatype="html">
@ -1487,7 +1479,7 @@
<target state="translated">ID usuario</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">253</context>
<context context-type="linenumber">259</context>
</context-group>
</trans-unit>
<trans-unit id="9021c579c084e68d9db06a569d76f024111c6c54" datatype="html">
@ -1495,7 +1487,7 @@
<target state="translated">Acceso concedido</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">262</context>
<context context-type="linenumber">268</context>
</context-group>
</trans-unit>
<trans-unit id="5e41f1b4c46ad9e0a9bc83fa36445483aa5cc324" datatype="html">
@ -1703,7 +1695,7 @@
<target state="translated">Por divisa</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">67</context>
<context context-type="linenumber">61</context>
</context-group>
</trans-unit>
<trans-unit id="8288ff761f2d259625d2e5a3d96db727926d9cd4" datatype="html">
@ -1711,7 +1703,7 @@
<target state="translated">Por tipo de activo</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">96</context>
<context context-type="linenumber">84</context>
</context-group>
</trans-unit>
<trans-unit id="b64539bb7815eb3275b55ad723d3897fc6ba8d23" datatype="html">
@ -1719,7 +1711,7 @@
<target state="translated">Por participación</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">125</context>
<context context-type="linenumber">107</context>
</context-group>
</trans-unit>
<trans-unit id="9f86714c9a6b74e13c96ab02102ce40c34fe13b9" datatype="html">
@ -1727,7 +1719,7 @@
<target state="translated">Por sector</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">154</context>
<context context-type="linenumber">130</context>
</context-group>
</trans-unit>
<trans-unit id="7017e0e26b53ef322c3e3bbf95f06a85487a12b2" datatype="html">
@ -1735,7 +1727,7 @@
<target state="translated">Por continente</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">184</context>
<context context-type="linenumber">154</context>
</context-group>
</trans-unit>
<trans-unit id="f27e9dd8de80176286e02312e694cb8d1e485a5d" datatype="html">
@ -1743,7 +1735,7 @@
<target state="translated">Por país</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">213</context>
<context context-type="linenumber">177</context>
</context-group>
</trans-unit>
<trans-unit id="85780db87ac6c9f202615ac63754551c061e7236" datatype="html">
@ -1751,7 +1743,7 @@
<target state="translated">Regiones</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">245</context>
<context context-type="linenumber">203</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -2303,7 +2295,7 @@
<target state="translated">Mercados desarrollados</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">272</context>
<context context-type="linenumber">224</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -2351,7 +2343,7 @@
<target state="translated">Otros mercados</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">290</context>
<context context-type="linenumber">242</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -2363,7 +2355,7 @@
<target state="translated">Mercados emergentes</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">281</context>
<context context-type="linenumber">233</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -2431,15 +2423,7 @@
<target state="translated">Ahorros</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.ts</context>
<context context-type="linenumber">301</context>
</context-group>
</trans-unit>
<trans-unit id="2937311350146031865" datatype="html">
<source>Initial</source>
<target state="translated">Inicial</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts</context>
<context context-type="linenumber">58</context>
<context context-type="linenumber">303</context>
</context-group>
</trans-unit>
<trans-unit id="3441715041566940420" datatype="html">
@ -2447,7 +2431,7 @@
<target state="translated">Interés</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.ts</context>
<context context-type="linenumber">291</context>
<context context-type="linenumber">293</context>
</context-group>
</trans-unit>
<trans-unit id="5213771062241898526" datatype="html">
@ -2463,15 +2447,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.ts</context>
<context context-type="linenumber">281</context>
</context-group>
</trans-unit>
<trans-unit id="6603000223840533819" datatype="html">
<source>Current</source>
<target state="translated">Actual</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts</context>
<context context-type="linenumber">59</context>
<context context-type="linenumber">283</context>
</context-group>
</trans-unit>
<trans-unit id="6762743264882388498" datatype="html">
@ -2519,7 +2495,7 @@
<target state="translated">Filtrar por cuenta o etiqueta...</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts</context>
<context context-type="linenumber">137</context>
<context context-type="linenumber">132</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
@ -2571,7 +2547,7 @@
<target state="translated">Funcionalidades experimentales</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">241</context>
<context context-type="linenumber">244</context>
</context-group>
</trans-unit>
<trans-unit id="1931353503905413384" datatype="html">
@ -2675,7 +2651,7 @@
<target state="translated">Importe total</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/investment-chart/investment-chart.component.ts</context>
<context context-type="linenumber">178</context>
<context context-type="linenumber">181</context>
</context-group>
</trans-unit>
<trans-unit id="f1a355a1af2e818050a3af693ac8b521fa7edc5f" datatype="html">
@ -2691,7 +2667,7 @@
<target state="translated">Tasa de ahorro</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/investment-chart/investment-chart.component.ts</context>
<context context-type="linenumber">239</context>
<context context-type="linenumber">245</context>
</context-group>
</trans-unit>
<trans-unit id="4086606389696938932" datatype="html">
@ -2715,7 +2691,7 @@
<target state="translated">Símbolo</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">10</context>
<context context-type="linenumber">16</context>
</context-group>
</trans-unit>
<trans-unit id="1825829511397926879" datatype="html">
@ -2723,7 +2699,7 @@
<target state="translated">Etiqueta</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">11</context>
<context context-type="linenumber">17</context>
</context-group>
</trans-unit>
<trans-unit id="787798817533231355" datatype="html">
@ -2731,7 +2707,7 @@
<target state="translated">Efectivo</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">14</context>
<context context-type="linenumber">20</context>
</context-group>
</trans-unit>
<trans-unit id="8431989971855844965" datatype="html">
@ -2739,7 +2715,7 @@
<target state="translated">Bien</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">15</context>
<context context-type="linenumber">21</context>
</context-group>
</trans-unit>
<trans-unit id="1983771552391474467" datatype="html">
@ -2747,7 +2723,7 @@
<target state="translated">Capital</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">16</context>
<context context-type="linenumber">22</context>
</context-group>
</trans-unit>
<trans-unit id="6124744839836623630" datatype="html">
@ -2755,7 +2731,7 @@
<target state="translated">Renta fija</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">17</context>
<context context-type="linenumber">23</context>
</context-group>
</trans-unit>
<trans-unit id="8432027249343784512" datatype="html">
@ -2763,7 +2739,7 @@
<target state="translated">Propiedad inmobiliaria</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">18</context>
<context context-type="linenumber">24</context>
</context-group>
</trans-unit>
<trans-unit id="8977365084844053365" datatype="html">
@ -2771,7 +2747,7 @@
<target state="translated">Bono</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">21</context>
<context context-type="linenumber">27</context>
</context-group>
</trans-unit>
<trans-unit id="2893204435511484886" datatype="html">
@ -2779,7 +2755,7 @@
<target state="translated">Criptomoneda</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">22</context>
<context context-type="linenumber">28</context>
</context-group>
</trans-unit>
<trans-unit id="9071695492820527473" datatype="html">
@ -2787,7 +2763,7 @@
<target state="translated">ETF</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">23</context>
<context context-type="linenumber">29</context>
</context-group>
</trans-unit>
<trans-unit id="5734784563242233466" datatype="html">
@ -2795,7 +2771,7 @@
<target state="translated">Fondo de inversión</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">24</context>
<context context-type="linenumber">30</context>
</context-group>
</trans-unit>
<trans-unit id="1270654249046226808" datatype="html">
@ -2803,7 +2779,7 @@
<target state="translated">Metal precioso</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">25</context>
<context context-type="linenumber">31</context>
</context-group>
</trans-unit>
<trans-unit id="1346519036036997811" datatype="html">
@ -2811,7 +2787,7 @@
<target state="translated">Capital riesgo</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">26</context>
<context context-type="linenumber">32</context>
</context-group>
</trans-unit>
<trans-unit id="4613338085351943838" datatype="html">
@ -2819,7 +2795,7 @@
<target state="translated">Acción</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">27</context>
<context context-type="linenumber">33</context>
</context-group>
</trans-unit>
<trans-unit id="6268646680388419543" datatype="html">
@ -2827,7 +2803,7 @@
<target state="translated">Fondo de emergencia</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">7</context>
<context context-type="linenumber">8</context>
</context-group>
</trans-unit>
<trans-unit id="8693603235657020323" datatype="html">
@ -2835,7 +2811,7 @@
<target state="translated">Otros</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">8</context>
<context context-type="linenumber">12</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts</context>
@ -2859,7 +2835,7 @@
<target state="translated">América del Norte</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">33</context>
<context context-type="linenumber">39</context>
</context-group>
</trans-unit>
<trans-unit id="1413778527796351850" datatype="html">
@ -2867,7 +2843,7 @@
<target state="translated">África</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">30</context>
<context context-type="linenumber">36</context>
</context-group>
</trans-unit>
<trans-unit id="3345512471687795386" datatype="html">
@ -2875,7 +2851,7 @@
<target state="translated">Asia</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">31</context>
<context context-type="linenumber">37</context>
</context-group>
</trans-unit>
<trans-unit id="8350109327144196614" datatype="html">
@ -2883,7 +2859,7 @@
<target state="translated">Europa</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">32</context>
<context context-type="linenumber">38</context>
</context-group>
</trans-unit>
<trans-unit id="3228811828827738441" datatype="html">
@ -2891,7 +2867,7 @@
<target state="translated">Oceanía</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">34</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="5957846001261659229" datatype="html">
@ -2899,7 +2875,7 @@
<target state="translated">América del Sur</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">35</context>
<context context-type="linenumber">41</context>
</context-group>
</trans-unit>
<trans-unit id="73f8489a3ae4d805787b8350d3d91e03e830115b" datatype="html">
@ -3023,7 +2999,7 @@
<target state="new">Securities</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">9</context>
<context context-type="linenumber">15</context>
</context-group>
</trans-unit>
<trans-unit id="3229595422546554334" datatype="html">
@ -3090,6 +3066,86 @@
<context context-type="linenumber">397</context>
</context-group>
</trans-unit>
<trans-unit id="d82473cef3cd2258eab20223ffcdd5af0c0025cc" datatype="html">
<source>Valid until</source>
<target state="new">Valid until</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">27</context>
</context-group>
</trans-unit>
<trans-unit id="7027401708987643293" datatype="html">
<source>Core</source>
<target state="new">Core</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
<trans-unit id="5036857680734170026" datatype="html">
<source>Grant</source>
<target state="new">Grant</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">9</context>
</context-group>
</trans-unit>
<trans-unit id="2963674907100579427" datatype="html">
<source>Higher Risk</source>
<target state="new">Higher Risk</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">10</context>
</context-group>
</trans-unit>
<trans-unit id="4152514811781104574" datatype="html">
<source>Lower Risk</source>
<target state="new">Lower Risk</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">11</context>
</context-group>
</trans-unit>
<trans-unit id="9219851060664514927" datatype="html">
<source>Retirement Provision</source>
<target state="new">Retirement Provision</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">13</context>
</context-group>
</trans-unit>
<trans-unit id="8050244774979733855" datatype="html">
<source>Satellite</source>
<target state="new">Satellite</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">14</context>
</context-group>
</trans-unit>
<trans-unit id="36f3a413e742253688f48766189344d6f52611d8" datatype="html">
<source> Protection for sensitive information like absolute performances and quantity values </source>
<target state="new"> Protection for sensitive information like absolute performances and quantity values </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">76,79</context>
</context-group>
</trans-unit>
<trans-unit id="2e744a88d8fa3204bb7cf407e7e3f3680f9e67a4" datatype="html">
<source> Distraction-free experience for turbulent times </source>
<target state="new"> Distraction-free experience for turbulent times </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">215,217</context>
</context-group>
</trans-unit>
<trans-unit id="b706a0f7740f8180094b8f6144462d121da49aa4" datatype="html">
<source> Sneak peek at upcoming functionality </source>
<target state="new"> Sneak peek at upcoming functionality </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">245,247</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

198
apps/client/src/locales/messages.fr.xlf

@ -1218,7 +1218,7 @@
<target state="translated">Montant Total</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/investment-chart/investment-chart.component.ts</context>
<context context-type="linenumber">178</context>
<context context-type="linenumber">181</context>
</context-group>
</trans-unit>
<trans-unit id="8192718423057883427" datatype="html">
@ -1226,7 +1226,7 @@
<target state="translated">Taux d&apos;Épargne</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/investment-chart/investment-chart.component.ts</context>
<context context-type="linenumber">239</context>
<context context-type="linenumber">245</context>
</context-group>
</trans-unit>
<trans-unit id="6a95e051c4fd80012488effb15d2842b2155ae5e" datatype="html">
@ -1785,14 +1785,6 @@
<context context-type="linenumber">75</context>
</context-group>
</trans-unit>
<trans-unit id="31b2f7072bfeddc35fec6b3f731fc47d44eba155" datatype="html">
<source> Hides sensitive values such as absolute performances and quantities. </source>
<target state="translated"> Masque les données sensibles telles que la performance absolue et les quantités. </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">76,79</context>
</context-group>
</trans-unit>
<trans-unit id="68baf7bff1f9242d0f6e4c0952dafefa6553cecd" datatype="html">
<source>Base Currency</source>
<target state="translated">Devise de Base</target>
@ -1890,7 +1882,7 @@
<target state="translated">Se connecter avec empreinte</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">226</context>
<context context-type="linenumber">229</context>
</context-group>
</trans-unit>
<trans-unit id="03b120b05e0922e5e830c3466fda9ee0bfbf59e9" datatype="html">
@ -1898,7 +1890,7 @@
<target state="translated">Fonctionnalités expérimentales</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">241</context>
<context context-type="linenumber">244</context>
</context-group>
</trans-unit>
<trans-unit id="83c4d4d764d2e2725ab8e919ec16ac400e1f290a" datatype="html">
@ -1906,7 +1898,7 @@
<target state="translated">ID d&apos;utilisateur</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">253</context>
<context context-type="linenumber">259</context>
</context-group>
</trans-unit>
<trans-unit id="9021c579c084e68d9db06a569d76f024111c6c54" datatype="html">
@ -1914,7 +1906,7 @@
<target state="translated">Accès donné</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">262</context>
<context context-type="linenumber">268</context>
</context-group>
</trans-unit>
<trans-unit id="5e41f1b4c46ad9e0a9bc83fa36445483aa5cc324" datatype="html">
@ -2217,28 +2209,12 @@
<context context-type="linenumber">12</context>
</context-group>
</trans-unit>
<trans-unit id="2937311350146031865" datatype="html">
<source>Initial</source>
<target state="translated">Initial</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts</context>
<context context-type="linenumber">58</context>
</context-group>
</trans-unit>
<trans-unit id="6603000223840533819" datatype="html">
<source>Current</source>
<target state="translated">Actuel</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts</context>
<context context-type="linenumber">59</context>
</context-group>
</trans-unit>
<trans-unit id="2078421919111943467" datatype="html">
<source>Filter by account or tag...</source>
<target state="translated">Filtrer par compte ou étiquette...</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts</context>
<context context-type="linenumber">137</context>
<context context-type="linenumber">132</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
@ -2278,7 +2254,7 @@
<target state="translated">Par Devise</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">67</context>
<context context-type="linenumber">61</context>
</context-group>
</trans-unit>
<trans-unit id="8288ff761f2d259625d2e5a3d96db727926d9cd4" datatype="html">
@ -2286,7 +2262,7 @@
<target state="translated">Par Classe d&apos;Actifs</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">96</context>
<context context-type="linenumber">84</context>
</context-group>
</trans-unit>
<trans-unit id="b64539bb7815eb3275b55ad723d3897fc6ba8d23" datatype="html">
@ -2294,7 +2270,7 @@
<target state="translated">Par Position</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">125</context>
<context context-type="linenumber">107</context>
</context-group>
</trans-unit>
<trans-unit id="9f86714c9a6b74e13c96ab02102ce40c34fe13b9" datatype="html">
@ -2302,7 +2278,7 @@
<target state="translated">Par Secteur</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">154</context>
<context context-type="linenumber">130</context>
</context-group>
</trans-unit>
<trans-unit id="7017e0e26b53ef322c3e3bbf95f06a85487a12b2" datatype="html">
@ -2310,7 +2286,7 @@
<target state="translated">Par Continent</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">184</context>
<context context-type="linenumber">154</context>
</context-group>
</trans-unit>
<trans-unit id="f27e9dd8de80176286e02312e694cb8d1e485a5d" datatype="html">
@ -2318,7 +2294,7 @@
<target state="translated">Par Pays</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">213</context>
<context context-type="linenumber">177</context>
</context-group>
</trans-unit>
<trans-unit id="85780db87ac6c9f202615ac63754551c061e7236" datatype="html">
@ -2326,7 +2302,7 @@
<target state="translated">Régions</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">245</context>
<context context-type="linenumber">203</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -2338,7 +2314,7 @@
<target state="translated">Marchés Développés</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">272</context>
<context context-type="linenumber">224</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -2350,7 +2326,7 @@
<target state="translated">Marchés Émergents</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">281</context>
<context context-type="linenumber">233</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -2362,7 +2338,7 @@
<target state="translated">Autres marchés</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">290</context>
<context context-type="linenumber">242</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -2398,7 +2374,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.ts</context>
<context context-type="linenumber">281</context>
<context context-type="linenumber">283</context>
</context-group>
</trans-unit>
<trans-unit id="6762743264882388498" datatype="html">
@ -2798,7 +2774,7 @@
<target state="translated">Intérêt</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.ts</context>
<context context-type="linenumber">291</context>
<context context-type="linenumber">293</context>
</context-group>
</trans-unit>
<trans-unit id="1054498214311181686" datatype="html">
@ -2806,7 +2782,7 @@
<target state="translated">Épargne</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.ts</context>
<context context-type="linenumber">301</context>
<context context-type="linenumber">303</context>
</context-group>
</trans-unit>
<trans-unit id="2ee26d58f2707416e636887111d5603b35346c4a" datatype="html">
@ -2853,7 +2829,7 @@
<source>Emergency Fund</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">7</context>
<context context-type="linenumber">8</context>
</context-group>
</trans-unit>
<trans-unit id="8693603235657020323" datatype="html">
@ -2861,7 +2837,7 @@
<target state="translated">Autre</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">8</context>
<context context-type="linenumber">12</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts</context>
@ -2873,7 +2849,7 @@
<target state="translated">Titres</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">9</context>
<context context-type="linenumber">15</context>
</context-group>
</trans-unit>
<trans-unit id="8106025670158480144" datatype="html">
@ -2881,7 +2857,7 @@
<target state="translated">Symbole</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">10</context>
<context context-type="linenumber">16</context>
</context-group>
</trans-unit>
<trans-unit id="1825829511397926879" datatype="html">
@ -2889,7 +2865,7 @@
<target state="translated">Étiquette</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">11</context>
<context context-type="linenumber">17</context>
</context-group>
</trans-unit>
<trans-unit id="787798817533231355" datatype="html">
@ -2897,7 +2873,7 @@
<target state="translated">Cash</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">14</context>
<context context-type="linenumber">20</context>
</context-group>
</trans-unit>
<trans-unit id="8431989971855844965" datatype="html">
@ -2905,7 +2881,7 @@
<target state="translated">Marchandise</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">15</context>
<context context-type="linenumber">21</context>
</context-group>
</trans-unit>
<trans-unit id="1983771552391474467" datatype="html">
@ -2913,7 +2889,7 @@
<target state="translated">Capital</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">16</context>
<context context-type="linenumber">22</context>
</context-group>
</trans-unit>
<trans-unit id="6124744839836623630" datatype="html">
@ -2921,7 +2897,7 @@
<target state="translated">Revenu Fixe</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">17</context>
<context context-type="linenumber">23</context>
</context-group>
</trans-unit>
<trans-unit id="8432027249343784512" datatype="html">
@ -2929,7 +2905,7 @@
<target state="translated">Immobilier</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">18</context>
<context context-type="linenumber">24</context>
</context-group>
</trans-unit>
<trans-unit id="8977365084844053365" datatype="html">
@ -2937,7 +2913,7 @@
<target state="translated">Obligation</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">21</context>
<context context-type="linenumber">27</context>
</context-group>
</trans-unit>
<trans-unit id="2893204435511484886" datatype="html">
@ -2945,7 +2921,7 @@
<target state="translated">Cryptomonnaie</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">22</context>
<context context-type="linenumber">28</context>
</context-group>
</trans-unit>
<trans-unit id="9071695492820527473" datatype="html">
@ -2953,7 +2929,7 @@
<target state="translated">ETF</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">23</context>
<context context-type="linenumber">29</context>
</context-group>
</trans-unit>
<trans-unit id="5734784563242233466" datatype="html">
@ -2961,7 +2937,7 @@
<target state="translated">SICAV</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">24</context>
<context context-type="linenumber">30</context>
</context-group>
</trans-unit>
<trans-unit id="1270654249046226808" datatype="html">
@ -2969,7 +2945,7 @@
<target state="translated">Métal Précieux</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">25</context>
<context context-type="linenumber">31</context>
</context-group>
</trans-unit>
<trans-unit id="1346519036036997811" datatype="html">
@ -2977,7 +2953,7 @@
<target state="translated">Capital Propre</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">26</context>
<context context-type="linenumber">32</context>
</context-group>
</trans-unit>
<trans-unit id="4613338085351943838" datatype="html">
@ -2985,7 +2961,7 @@
<target state="translated">Action</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">27</context>
<context context-type="linenumber">33</context>
</context-group>
</trans-unit>
<trans-unit id="1413778527796351850" datatype="html">
@ -2993,7 +2969,7 @@
<target state="translated">Afrique</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">30</context>
<context context-type="linenumber">36</context>
</context-group>
</trans-unit>
<trans-unit id="3345512471687795386" datatype="html">
@ -3001,7 +2977,7 @@
<target state="translated">Asie</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">31</context>
<context context-type="linenumber">37</context>
</context-group>
</trans-unit>
<trans-unit id="8350109327144196614" datatype="html">
@ -3009,7 +2985,7 @@
<target state="translated">Europe</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">32</context>
<context context-type="linenumber">38</context>
</context-group>
</trans-unit>
<trans-unit id="1228771048078164312" datatype="html">
@ -3017,7 +2993,7 @@
<target state="translated">Amérique du Nord</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">33</context>
<context context-type="linenumber">39</context>
</context-group>
</trans-unit>
<trans-unit id="3228811828827738441" datatype="html">
@ -3025,7 +3001,7 @@
<target state="translated">Océanie</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">34</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="5957846001261659229" datatype="html">
@ -3033,7 +3009,7 @@
<target state="translated">Amérique du Sud</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">35</context>
<context context-type="linenumber">41</context>
</context-group>
</trans-unit>
<trans-unit id="c004f99bac91f7dc28e87d458f80e5035ae99884" datatype="html">
@ -3058,7 +3034,7 @@
</trans-unit>
<trans-unit id="0f845001c88b82c18535e6d44f5597061f506e42" datatype="html">
<source>Holding</source>
<target state="new">Holding</target>
<target state="translated">Position</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html</context>
<context context-type="linenumber">13,15</context>
@ -3066,7 +3042,7 @@
</trans-unit>
<trans-unit id="050be0e7937dec05c8c8ded71cebc0bb027b38f6" datatype="html">
<source>Load Dividends</source>
<target state="new">Load Dividends</target>
<target state="translated">Charger Dividendes</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html</context>
<context context-type="linenumber">29,33</context>
@ -3074,7 +3050,7 @@
</trans-unit>
<trans-unit id="8036977202721714375" datatype="html">
<source>Yearly</source>
<target state="new">Yearly</target>
<target state="translated">Annuel</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">55</context>
@ -3082,12 +3058,92 @@
</trans-unit>
<trans-unit id="c849bfcd57f5d4a2cb0a1fb3359b687f13878637" datatype="html">
<source>Import Dividends</source>
<target state="new">Import Dividends</target>
<target state="translated">Importer Dividendes</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">397</context>
</context-group>
</trans-unit>
<trans-unit id="d82473cef3cd2258eab20223ffcdd5af0c0025cc" datatype="html">
<source>Valid until</source>
<target state="new">Valid until</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">27</context>
</context-group>
</trans-unit>
<trans-unit id="7027401708987643293" datatype="html">
<source>Core</source>
<target state="new">Core</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
<trans-unit id="5036857680734170026" datatype="html">
<source>Grant</source>
<target state="new">Grant</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">9</context>
</context-group>
</trans-unit>
<trans-unit id="2963674907100579427" datatype="html">
<source>Higher Risk</source>
<target state="new">Higher Risk</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">10</context>
</context-group>
</trans-unit>
<trans-unit id="4152514811781104574" datatype="html">
<source>Lower Risk</source>
<target state="new">Lower Risk</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">11</context>
</context-group>
</trans-unit>
<trans-unit id="9219851060664514927" datatype="html">
<source>Retirement Provision</source>
<target state="new">Retirement Provision</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">13</context>
</context-group>
</trans-unit>
<trans-unit id="8050244774979733855" datatype="html">
<source>Satellite</source>
<target state="new">Satellite</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">14</context>
</context-group>
</trans-unit>
<trans-unit id="36f3a413e742253688f48766189344d6f52611d8" datatype="html">
<source> Protection for sensitive information like absolute performances and quantity values </source>
<target state="new"> Protection for sensitive information like absolute performances and quantity values </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">76,79</context>
</context-group>
</trans-unit>
<trans-unit id="2e744a88d8fa3204bb7cf407e7e3f3680f9e67a4" datatype="html">
<source> Distraction-free experience for turbulent times </source>
<target state="new"> Distraction-free experience for turbulent times </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">215,217</context>
</context-group>
</trans-unit>
<trans-unit id="b706a0f7740f8180094b8f6144462d121da49aa4" datatype="html">
<source> Sneak peek at upcoming functionality </source>
<target state="new"> Sneak peek at upcoming functionality </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">245,247</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

190
apps/client/src/locales/messages.it.xlf

@ -1434,14 +1434,6 @@
<context context-type="linenumber">75</context>
</context-group>
</trans-unit>
<trans-unit id="31b2f7072bfeddc35fec6b3f731fc47d44eba155" datatype="html">
<source> Hides sensitive values such as absolute performances and quantities. </source>
<target state="translated">Nasconde valori sensibili come le prestazioni e le quantità assolute. </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">76,79</context>
</context-group>
</trans-unit>
<trans-unit id="68baf7bff1f9242d0f6e4c0952dafefa6553cecd" datatype="html">
<source>Base Currency</source>
<target state="translated">Valuta base</target>
@ -1479,7 +1471,7 @@
<target state="translated">Accesso con impronta digitale</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">226</context>
<context context-type="linenumber">229</context>
</context-group>
</trans-unit>
<trans-unit id="83c4d4d764d2e2725ab8e919ec16ac400e1f290a" datatype="html">
@ -1487,7 +1479,7 @@
<target state="translated">ID utente</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">253</context>
<context context-type="linenumber">259</context>
</context-group>
</trans-unit>
<trans-unit id="9021c579c084e68d9db06a569d76f024111c6c54" datatype="html">
@ -1495,7 +1487,7 @@
<target state="translated">Accesso concesso</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">262</context>
<context context-type="linenumber">268</context>
</context-group>
</trans-unit>
<trans-unit id="5e41f1b4c46ad9e0a9bc83fa36445483aa5cc324" datatype="html">
@ -1703,7 +1695,7 @@
<target state="translated">Per valuta</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">67</context>
<context context-type="linenumber">61</context>
</context-group>
</trans-unit>
<trans-unit id="8288ff761f2d259625d2e5a3d96db727926d9cd4" datatype="html">
@ -1711,7 +1703,7 @@
<target state="translated">Per asset class</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">96</context>
<context context-type="linenumber">84</context>
</context-group>
</trans-unit>
<trans-unit id="b64539bb7815eb3275b55ad723d3897fc6ba8d23" datatype="html">
@ -1719,7 +1711,7 @@
<target state="translated">Per partecipazione</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">125</context>
<context context-type="linenumber">107</context>
</context-group>
</trans-unit>
<trans-unit id="9f86714c9a6b74e13c96ab02102ce40c34fe13b9" datatype="html">
@ -1727,7 +1719,7 @@
<target state="translated">Per settore</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">154</context>
<context context-type="linenumber">130</context>
</context-group>
</trans-unit>
<trans-unit id="7017e0e26b53ef322c3e3bbf95f06a85487a12b2" datatype="html">
@ -1735,7 +1727,7 @@
<target state="translated">Per continente</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">184</context>
<context context-type="linenumber">154</context>
</context-group>
</trans-unit>
<trans-unit id="f27e9dd8de80176286e02312e694cb8d1e485a5d" datatype="html">
@ -1743,7 +1735,7 @@
<target state="translated">Per paese</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">213</context>
<context context-type="linenumber">177</context>
</context-group>
</trans-unit>
<trans-unit id="85780db87ac6c9f202615ac63754551c061e7236" datatype="html">
@ -1751,7 +1743,7 @@
<target state="translated">Regioni</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">245</context>
<context context-type="linenumber">203</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -2303,7 +2295,7 @@
<target state="translated">Mercati sviluppati</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">272</context>
<context context-type="linenumber">224</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -2351,7 +2343,7 @@
<target state="translated">Altri mercati</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">290</context>
<context context-type="linenumber">242</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -2363,7 +2355,7 @@
<target state="translated">Mercati emergenti</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">281</context>
<context context-type="linenumber">233</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -2431,15 +2423,7 @@
<target state="translated">Risparmio</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.ts</context>
<context context-type="linenumber">301</context>
</context-group>
</trans-unit>
<trans-unit id="2937311350146031865" datatype="html">
<source>Initial</source>
<target state="translated">Iniziale</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts</context>
<context context-type="linenumber">58</context>
<context context-type="linenumber">303</context>
</context-group>
</trans-unit>
<trans-unit id="3441715041566940420" datatype="html">
@ -2447,7 +2431,7 @@
<target state="translated">Interesse</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.ts</context>
<context context-type="linenumber">291</context>
<context context-type="linenumber">293</context>
</context-group>
</trans-unit>
<trans-unit id="5213771062241898526" datatype="html">
@ -2463,15 +2447,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.ts</context>
<context context-type="linenumber">281</context>
</context-group>
</trans-unit>
<trans-unit id="6603000223840533819" datatype="html">
<source>Current</source>
<target state="translated">Attuale</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts</context>
<context context-type="linenumber">59</context>
<context context-type="linenumber">283</context>
</context-group>
</trans-unit>
<trans-unit id="6762743264882388498" datatype="html">
@ -2519,7 +2495,7 @@
<target state="translated">Filtra per account o tag...</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts</context>
<context context-type="linenumber">137</context>
<context context-type="linenumber">132</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
@ -2571,7 +2547,7 @@
<target state="translated">Funzionalità sperimentali</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">241</context>
<context context-type="linenumber">244</context>
</context-group>
</trans-unit>
<trans-unit id="1931353503905413384" datatype="html">
@ -2675,7 +2651,7 @@
<target state="new">Total Amount</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/investment-chart/investment-chart.component.ts</context>
<context context-type="linenumber">178</context>
<context context-type="linenumber">181</context>
</context-group>
</trans-unit>
<trans-unit id="f1a355a1af2e818050a3af693ac8b521fa7edc5f" datatype="html">
@ -2691,7 +2667,7 @@
<target state="translated">Tasso di risparmio</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/investment-chart/investment-chart.component.ts</context>
<context context-type="linenumber">239</context>
<context context-type="linenumber">245</context>
</context-group>
</trans-unit>
<trans-unit id="4086606389696938932" datatype="html">
@ -2715,7 +2691,7 @@
<target state="new">Symbol</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">10</context>
<context context-type="linenumber">16</context>
</context-group>
</trans-unit>
<trans-unit id="1825829511397926879" datatype="html">
@ -2723,7 +2699,7 @@
<target state="new">Tag</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">11</context>
<context context-type="linenumber">17</context>
</context-group>
</trans-unit>
<trans-unit id="787798817533231355" datatype="html">
@ -2731,7 +2707,7 @@
<target state="new">Cash</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">14</context>
<context context-type="linenumber">20</context>
</context-group>
</trans-unit>
<trans-unit id="8431989971855844965" datatype="html">
@ -2739,7 +2715,7 @@
<target state="new">Commodity</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">15</context>
<context context-type="linenumber">21</context>
</context-group>
</trans-unit>
<trans-unit id="1983771552391474467" datatype="html">
@ -2747,7 +2723,7 @@
<target state="new">Equity</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">16</context>
<context context-type="linenumber">22</context>
</context-group>
</trans-unit>
<trans-unit id="6124744839836623630" datatype="html">
@ -2755,7 +2731,7 @@
<target state="new">Fixed Income</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">17</context>
<context context-type="linenumber">23</context>
</context-group>
</trans-unit>
<trans-unit id="8432027249343784512" datatype="html">
@ -2763,7 +2739,7 @@
<target state="new">Real Estate</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">18</context>
<context context-type="linenumber">24</context>
</context-group>
</trans-unit>
<trans-unit id="8977365084844053365" datatype="html">
@ -2771,7 +2747,7 @@
<target state="new">Bond</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">21</context>
<context context-type="linenumber">27</context>
</context-group>
</trans-unit>
<trans-unit id="2893204435511484886" datatype="html">
@ -2779,7 +2755,7 @@
<target state="new">Cryptocurrency</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">22</context>
<context context-type="linenumber">28</context>
</context-group>
</trans-unit>
<trans-unit id="9071695492820527473" datatype="html">
@ -2787,7 +2763,7 @@
<target state="new">ETF</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">23</context>
<context context-type="linenumber">29</context>
</context-group>
</trans-unit>
<trans-unit id="5734784563242233466" datatype="html">
@ -2795,7 +2771,7 @@
<target state="new">Mutual Fund</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">24</context>
<context context-type="linenumber">30</context>
</context-group>
</trans-unit>
<trans-unit id="1270654249046226808" datatype="html">
@ -2803,7 +2779,7 @@
<target state="new">Precious Metal</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">25</context>
<context context-type="linenumber">31</context>
</context-group>
</trans-unit>
<trans-unit id="1346519036036997811" datatype="html">
@ -2811,7 +2787,7 @@
<target state="new">Private Equity</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">26</context>
<context context-type="linenumber">32</context>
</context-group>
</trans-unit>
<trans-unit id="4613338085351943838" datatype="html">
@ -2819,7 +2795,7 @@
<target state="new">Stock</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">27</context>
<context context-type="linenumber">33</context>
</context-group>
</trans-unit>
<trans-unit id="6268646680388419543" datatype="html">
@ -2827,7 +2803,7 @@
<target state="new">Emergency Fund</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">7</context>
<context context-type="linenumber">8</context>
</context-group>
</trans-unit>
<trans-unit id="8693603235657020323" datatype="html">
@ -2835,7 +2811,7 @@
<target state="new">Other</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">8</context>
<context context-type="linenumber">12</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts</context>
@ -2859,7 +2835,7 @@
<target state="new">North America</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">33</context>
<context context-type="linenumber">39</context>
</context-group>
</trans-unit>
<trans-unit id="1413778527796351850" datatype="html">
@ -2867,7 +2843,7 @@
<target state="new">Africa</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">30</context>
<context context-type="linenumber">36</context>
</context-group>
</trans-unit>
<trans-unit id="3345512471687795386" datatype="html">
@ -2875,7 +2851,7 @@
<target state="new">Asia</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">31</context>
<context context-type="linenumber">37</context>
</context-group>
</trans-unit>
<trans-unit id="8350109327144196614" datatype="html">
@ -2883,7 +2859,7 @@
<target state="new">Europe</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">32</context>
<context context-type="linenumber">38</context>
</context-group>
</trans-unit>
<trans-unit id="3228811828827738441" datatype="html">
@ -2891,7 +2867,7 @@
<target state="new">Oceania</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">34</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="5957846001261659229" datatype="html">
@ -2899,7 +2875,7 @@
<target state="new">South America</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">35</context>
<context context-type="linenumber">41</context>
</context-group>
</trans-unit>
<trans-unit id="73f8489a3ae4d805787b8350d3d91e03e830115b" datatype="html">
@ -3023,7 +2999,7 @@
<target state="new">Securities</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">9</context>
<context context-type="linenumber">15</context>
</context-group>
</trans-unit>
<trans-unit id="3229595422546554334" datatype="html">
@ -3090,6 +3066,86 @@
<context context-type="linenumber">397</context>
</context-group>
</trans-unit>
<trans-unit id="d82473cef3cd2258eab20223ffcdd5af0c0025cc" datatype="html">
<source>Valid until</source>
<target state="new">Valid until</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">27</context>
</context-group>
</trans-unit>
<trans-unit id="7027401708987643293" datatype="html">
<source>Core</source>
<target state="new">Core</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
<trans-unit id="5036857680734170026" datatype="html">
<source>Grant</source>
<target state="new">Grant</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">9</context>
</context-group>
</trans-unit>
<trans-unit id="2963674907100579427" datatype="html">
<source>Higher Risk</source>
<target state="new">Higher Risk</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">10</context>
</context-group>
</trans-unit>
<trans-unit id="4152514811781104574" datatype="html">
<source>Lower Risk</source>
<target state="new">Lower Risk</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">11</context>
</context-group>
</trans-unit>
<trans-unit id="9219851060664514927" datatype="html">
<source>Retirement Provision</source>
<target state="new">Retirement Provision</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">13</context>
</context-group>
</trans-unit>
<trans-unit id="8050244774979733855" datatype="html">
<source>Satellite</source>
<target state="new">Satellite</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">14</context>
</context-group>
</trans-unit>
<trans-unit id="36f3a413e742253688f48766189344d6f52611d8" datatype="html">
<source> Protection for sensitive information like absolute performances and quantity values </source>
<target state="new"> Protection for sensitive information like absolute performances and quantity values </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">76,79</context>
</context-group>
</trans-unit>
<trans-unit id="2e744a88d8fa3204bb7cf407e7e3f3680f9e67a4" datatype="html">
<source> Distraction-free experience for turbulent times </source>
<target state="new"> Distraction-free experience for turbulent times </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">215,217</context>
</context-group>
</trans-unit>
<trans-unit id="b706a0f7740f8180094b8f6144462d121da49aa4" datatype="html">
<source> Sneak peek at upcoming functionality </source>
<target state="new"> Sneak peek at upcoming functionality </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">245,247</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

194
apps/client/src/locales/messages.nl.xlf

@ -1433,14 +1433,6 @@
<context context-type="linenumber">75</context>
</context-group>
</trans-unit>
<trans-unit id="31b2f7072bfeddc35fec6b3f731fc47d44eba155" datatype="html">
<source> Hides sensitive values such as absolute performances and quantities. </source>
<target state="translated">Verbergt gevoelige waarden zoals absolute prestaties en hoeveelheden. </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">76,79</context>
</context-group>
</trans-unit>
<trans-unit id="68baf7bff1f9242d0f6e4c0952dafefa6553cecd" datatype="html">
<source>Base Currency</source>
<target state="translated">Basisvaluta</target>
@ -1478,7 +1470,7 @@
<target state="translated">Aanmelden met vingerafdruk</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">226</context>
<context context-type="linenumber">229</context>
</context-group>
</trans-unit>
<trans-unit id="83c4d4d764d2e2725ab8e919ec16ac400e1f290a" datatype="html">
@ -1486,7 +1478,7 @@
<target state="translated">Gebruikers-ID</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">253</context>
<context context-type="linenumber">259</context>
</context-group>
</trans-unit>
<trans-unit id="9021c579c084e68d9db06a569d76f024111c6c54" datatype="html">
@ -1494,7 +1486,7 @@
<target state="translated">Verleende toegang</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">262</context>
<context context-type="linenumber">268</context>
</context-group>
</trans-unit>
<trans-unit id="5e41f1b4c46ad9e0a9bc83fa36445483aa5cc324" datatype="html">
@ -1702,7 +1694,7 @@
<target state="translated">Per valuta</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">67</context>
<context context-type="linenumber">61</context>
</context-group>
</trans-unit>
<trans-unit id="8288ff761f2d259625d2e5a3d96db727926d9cd4" datatype="html">
@ -1710,7 +1702,7 @@
<target state="translated">Per activaklasse</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">96</context>
<context context-type="linenumber">84</context>
</context-group>
</trans-unit>
<trans-unit id="b64539bb7815eb3275b55ad723d3897fc6ba8d23" datatype="html">
@ -1718,7 +1710,7 @@
<target state="translated">Per participatie</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">125</context>
<context context-type="linenumber">107</context>
</context-group>
</trans-unit>
<trans-unit id="9f86714c9a6b74e13c96ab02102ce40c34fe13b9" datatype="html">
@ -1726,7 +1718,7 @@
<target state="translated">Per Sector</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">154</context>
<context context-type="linenumber">130</context>
</context-group>
</trans-unit>
<trans-unit id="7017e0e26b53ef322c3e3bbf95f06a85487a12b2" datatype="html">
@ -1734,7 +1726,7 @@
<target state="translated">Per continent</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">184</context>
<context context-type="linenumber">154</context>
</context-group>
</trans-unit>
<trans-unit id="f27e9dd8de80176286e02312e694cb8d1e485a5d" datatype="html">
@ -1742,7 +1734,7 @@
<target state="translated">Per land</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">213</context>
<context context-type="linenumber">177</context>
</context-group>
</trans-unit>
<trans-unit id="85780db87ac6c9f202615ac63754551c061e7236" datatype="html">
@ -1750,7 +1742,7 @@
<target state="translated">Regio&apos;s</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">245</context>
<context context-type="linenumber">203</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -2302,7 +2294,7 @@
<target state="translated">Ontwikkelde markten</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">272</context>
<context context-type="linenumber">224</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -2350,7 +2342,7 @@
<target state="translated">Andere markten</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">290</context>
<context context-type="linenumber">242</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -2362,7 +2354,7 @@
<target state="translated">Opkomende markten</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">281</context>
<context context-type="linenumber">233</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -2430,15 +2422,7 @@
<target state="translated">Besparingen</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.ts</context>
<context context-type="linenumber">301</context>
</context-group>
</trans-unit>
<trans-unit id="2937311350146031865" datatype="html">
<source>Initial</source>
<target state="translated">Aanvankelijk</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts</context>
<context context-type="linenumber">58</context>
<context context-type="linenumber">303</context>
</context-group>
</trans-unit>
<trans-unit id="3441715041566940420" datatype="html">
@ -2446,7 +2430,7 @@
<target state="translated">Rente</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.ts</context>
<context context-type="linenumber">291</context>
<context context-type="linenumber">293</context>
</context-group>
</trans-unit>
<trans-unit id="5213771062241898526" datatype="html">
@ -2462,15 +2446,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.ts</context>
<context context-type="linenumber">281</context>
</context-group>
</trans-unit>
<trans-unit id="6603000223840533819" datatype="html">
<source>Current</source>
<target state="translated">Huidige</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts</context>
<context context-type="linenumber">59</context>
<context context-type="linenumber">283</context>
</context-group>
</trans-unit>
<trans-unit id="6762743264882388498" datatype="html">
@ -2518,7 +2494,7 @@
<target state="translated">Filter op account of tag...</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts</context>
<context context-type="linenumber">137</context>
<context context-type="linenumber">132</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
@ -2570,7 +2546,7 @@
<target state="translated">Experimentele functies</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">241</context>
<context context-type="linenumber">244</context>
</context-group>
</trans-unit>
<trans-unit id="1931353503905413384" datatype="html">
@ -2674,7 +2650,7 @@
<target state="translated">Totaalbedrag</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/investment-chart/investment-chart.component.ts</context>
<context context-type="linenumber">178</context>
<context context-type="linenumber">181</context>
</context-group>
</trans-unit>
<trans-unit id="f1a355a1af2e818050a3af693ac8b521fa7edc5f" datatype="html">
@ -2690,7 +2666,7 @@
<target state="translated">Spaarquote</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/investment-chart/investment-chart.component.ts</context>
<context context-type="linenumber">239</context>
<context context-type="linenumber">245</context>
</context-group>
</trans-unit>
<trans-unit id="4086606389696938932" datatype="html">
@ -2714,7 +2690,7 @@
<target state="translated">Symbool</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">10</context>
<context context-type="linenumber">16</context>
</context-group>
</trans-unit>
<trans-unit id="1825829511397926879" datatype="html">
@ -2722,7 +2698,7 @@
<target state="translated">Label</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">11</context>
<context context-type="linenumber">17</context>
</context-group>
</trans-unit>
<trans-unit id="787798817533231355" datatype="html">
@ -2730,7 +2706,7 @@
<target state="translated">Contant geld</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">14</context>
<context context-type="linenumber">20</context>
</context-group>
</trans-unit>
<trans-unit id="8431989971855844965" datatype="html">
@ -2738,7 +2714,7 @@
<target state="translated">Commodity</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">15</context>
<context context-type="linenumber">21</context>
</context-group>
</trans-unit>
<trans-unit id="1983771552391474467" datatype="html">
@ -2746,7 +2722,7 @@
<target state="translated">Equity</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">16</context>
<context context-type="linenumber">22</context>
</context-group>
</trans-unit>
<trans-unit id="6124744839836623630" datatype="html">
@ -2754,7 +2730,7 @@
<target state="translated">Vast inkomen</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">17</context>
<context context-type="linenumber">23</context>
</context-group>
</trans-unit>
<trans-unit id="8432027249343784512" datatype="html">
@ -2762,7 +2738,7 @@
<target state="translated">Vastgoed</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">18</context>
<context context-type="linenumber">24</context>
</context-group>
</trans-unit>
<trans-unit id="8977365084844053365" datatype="html">
@ -2770,7 +2746,7 @@
<target state="translated">Obligatie</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">21</context>
<context context-type="linenumber">27</context>
</context-group>
</trans-unit>
<trans-unit id="2893204435511484886" datatype="html">
@ -2778,7 +2754,7 @@
<target state="translated">Cryptovaluta</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">22</context>
<context context-type="linenumber">28</context>
</context-group>
</trans-unit>
<trans-unit id="9071695492820527473" datatype="html">
@ -2786,7 +2762,7 @@
<target state="translated">ETF</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">23</context>
<context context-type="linenumber">29</context>
</context-group>
</trans-unit>
<trans-unit id="5734784563242233466" datatype="html">
@ -2794,7 +2770,7 @@
<target state="translated">Beleggingsfonds</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">24</context>
<context context-type="linenumber">30</context>
</context-group>
</trans-unit>
<trans-unit id="1270654249046226808" datatype="html">
@ -2802,7 +2778,7 @@
<target state="translated">Edel metaal</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">25</context>
<context context-type="linenumber">31</context>
</context-group>
</trans-unit>
<trans-unit id="1346519036036997811" datatype="html">
@ -2810,7 +2786,7 @@
<target state="translated">Private equity</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">26</context>
<context context-type="linenumber">32</context>
</context-group>
</trans-unit>
<trans-unit id="4613338085351943838" datatype="html">
@ -2818,7 +2794,7 @@
<target state="translated">Aandeel</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">27</context>
<context context-type="linenumber">33</context>
</context-group>
</trans-unit>
<trans-unit id="6268646680388419543" datatype="html">
@ -2826,7 +2802,7 @@
<target state="translated">Noodfonds</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">7</context>
<context context-type="linenumber">8</context>
</context-group>
</trans-unit>
<trans-unit id="8693603235657020323" datatype="html">
@ -2834,7 +2810,7 @@
<target state="translated">Anders</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">8</context>
<context context-type="linenumber">12</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts</context>
@ -2858,7 +2834,7 @@
<target state="translated">Noord Amerika</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">33</context>
<context context-type="linenumber">39</context>
</context-group>
</trans-unit>
<trans-unit id="1413778527796351850" datatype="html">
@ -2866,7 +2842,7 @@
<target state="translated">Afrika</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">30</context>
<context context-type="linenumber">36</context>
</context-group>
</trans-unit>
<trans-unit id="3345512471687795386" datatype="html">
@ -2874,7 +2850,7 @@
<target state="translated">Azië</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">31</context>
<context context-type="linenumber">37</context>
</context-group>
</trans-unit>
<trans-unit id="8350109327144196614" datatype="html">
@ -2882,7 +2858,7 @@
<target state="translated">Europa</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">32</context>
<context context-type="linenumber">38</context>
</context-group>
</trans-unit>
<trans-unit id="3228811828827738441" datatype="html">
@ -2890,7 +2866,7 @@
<target state="translated">Oceanië</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">34</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="5957846001261659229" datatype="html">
@ -2898,7 +2874,7 @@
<target state="translated">Zuid Amerika</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">35</context>
<context context-type="linenumber">41</context>
</context-group>
</trans-unit>
<trans-unit id="73f8489a3ae4d805787b8350d3d91e03e830115b" datatype="html">
@ -3022,7 +2998,7 @@
<target state="translated">Effecten</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">9</context>
<context context-type="linenumber">15</context>
</context-group>
</trans-unit>
<trans-unit id="3229595422546554334" datatype="html">
@ -3059,7 +3035,7 @@
</trans-unit>
<trans-unit id="0f845001c88b82c18535e6d44f5597061f506e42" datatype="html">
<source>Holding</source>
<target state="new">Holding</target>
<target state="translated">Participatie</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html</context>
<context context-type="linenumber">13,15</context>
@ -3075,7 +3051,7 @@
</trans-unit>
<trans-unit id="8036977202721714375" datatype="html">
<source>Yearly</source>
<target state="new">Yearly</target>
<target state="translated">Jaarlijks</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
<context context-type="linenumber">55</context>
@ -3089,6 +3065,86 @@
<context context-type="linenumber">397</context>
</context-group>
</trans-unit>
<trans-unit id="d82473cef3cd2258eab20223ffcdd5af0c0025cc" datatype="html">
<source>Valid until</source>
<target state="new">Valid until</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">27</context>
</context-group>
</trans-unit>
<trans-unit id="7027401708987643293" datatype="html">
<source>Core</source>
<target state="new">Core</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
<trans-unit id="5036857680734170026" datatype="html">
<source>Grant</source>
<target state="new">Grant</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">9</context>
</context-group>
</trans-unit>
<trans-unit id="2963674907100579427" datatype="html">
<source>Higher Risk</source>
<target state="new">Higher Risk</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">10</context>
</context-group>
</trans-unit>
<trans-unit id="4152514811781104574" datatype="html">
<source>Lower Risk</source>
<target state="new">Lower Risk</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">11</context>
</context-group>
</trans-unit>
<trans-unit id="9219851060664514927" datatype="html">
<source>Retirement Provision</source>
<target state="new">Retirement Provision</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">13</context>
</context-group>
</trans-unit>
<trans-unit id="8050244774979733855" datatype="html">
<source>Satellite</source>
<target state="new">Satellite</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">14</context>
</context-group>
</trans-unit>
<trans-unit id="36f3a413e742253688f48766189344d6f52611d8" datatype="html">
<source> Protection for sensitive information like absolute performances and quantity values </source>
<target state="new"> Protection for sensitive information like absolute performances and quantity values </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">76,79</context>
</context-group>
</trans-unit>
<trans-unit id="2e744a88d8fa3204bb7cf407e7e3f3680f9e67a4" datatype="html">
<source> Distraction-free experience for turbulent times </source>
<target state="new"> Distraction-free experience for turbulent times </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">215,217</context>
</context-group>
</trans-unit>
<trans-unit id="b706a0f7740f8180094b8f6144462d121da49aa4" datatype="html">
<source> Sneak peek at upcoming functionality </source>
<target state="new"> Sneak peek at upcoming functionality </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">245,247</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

190
apps/client/src/locales/messages.pt.xlf

@ -1114,7 +1114,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.ts</context>
<context context-type="linenumber">281</context>
<context context-type="linenumber">283</context>
</context-group>
</trans-unit>
<trans-unit id="112783260724635106" datatype="html">
@ -1122,7 +1122,7 @@
<target state="new">Total Amount</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/investment-chart/investment-chart.component.ts</context>
<context context-type="linenumber">178</context>
<context context-type="linenumber">181</context>
</context-group>
</trans-unit>
<trans-unit id="8192718423057883427" datatype="html">
@ -1130,7 +1130,7 @@
<target state="new">Savings Rate</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/investment-chart/investment-chart.component.ts</context>
<context context-type="linenumber">239</context>
<context context-type="linenumber">245</context>
</context-group>
</trans-unit>
<trans-unit id="6a95e051c4fd80012488effb15d2842b2155ae5e" datatype="html">
@ -1773,14 +1773,6 @@
<context context-type="linenumber">75</context>
</context-group>
</trans-unit>
<trans-unit id="31b2f7072bfeddc35fec6b3f731fc47d44eba155" datatype="html">
<source> Hides sensitive values such as absolute performances and quantities. </source>
<target state="new"> Hides sensitive values such as absolute performances and quantities. </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">76,79</context>
</context-group>
</trans-unit>
<trans-unit id="68baf7bff1f9242d0f6e4c0952dafefa6553cecd" datatype="html">
<source>Base Currency</source>
<target state="new">Base Currency</target>
@ -1866,7 +1858,7 @@
<target state="new">Sign in with fingerprint</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">226</context>
<context context-type="linenumber">229</context>
</context-group>
</trans-unit>
<trans-unit id="03b120b05e0922e5e830c3466fda9ee0bfbf59e9" datatype="html">
@ -1874,7 +1866,7 @@
<target state="new">Experimental Features</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">241</context>
<context context-type="linenumber">244</context>
</context-group>
</trans-unit>
<trans-unit id="83c4d4d764d2e2725ab8e919ec16ac400e1f290a" datatype="html">
@ -1882,7 +1874,7 @@
<target state="new">User ID</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">253</context>
<context context-type="linenumber">259</context>
</context-group>
</trans-unit>
<trans-unit id="9021c579c084e68d9db06a569d76f024111c6c54" datatype="html">
@ -1890,7 +1882,7 @@
<target state="new">Granted Access</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">262</context>
<context context-type="linenumber">268</context>
</context-group>
</trans-unit>
<trans-unit id="5e41f1b4c46ad9e0a9bc83fa36445483aa5cc324" datatype="html">
@ -2161,28 +2153,12 @@
<context context-type="linenumber">12</context>
</context-group>
</trans-unit>
<trans-unit id="2937311350146031865" datatype="html">
<source>Initial</source>
<target state="new">Initial</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts</context>
<context context-type="linenumber">58</context>
</context-group>
</trans-unit>
<trans-unit id="6603000223840533819" datatype="html">
<source>Current</source>
<target state="new">Current</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts</context>
<context context-type="linenumber">59</context>
</context-group>
</trans-unit>
<trans-unit id="2078421919111943467" datatype="html">
<source>Filter by account or tag...</source>
<target state="new">Filter by account or tag...</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts</context>
<context context-type="linenumber">137</context>
<context context-type="linenumber">132</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
@ -2222,7 +2198,7 @@
<target state="new">By Currency</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">67</context>
<context context-type="linenumber">61</context>
</context-group>
</trans-unit>
<trans-unit id="8288ff761f2d259625d2e5a3d96db727926d9cd4" datatype="html">
@ -2230,7 +2206,7 @@
<target state="new">By Asset Class</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">96</context>
<context context-type="linenumber">84</context>
</context-group>
</trans-unit>
<trans-unit id="b64539bb7815eb3275b55ad723d3897fc6ba8d23" datatype="html">
@ -2238,7 +2214,7 @@
<target state="new">By Holding</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">125</context>
<context context-type="linenumber">107</context>
</context-group>
</trans-unit>
<trans-unit id="9f86714c9a6b74e13c96ab02102ce40c34fe13b9" datatype="html">
@ -2246,7 +2222,7 @@
<target state="new">By Sector</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">154</context>
<context context-type="linenumber">130</context>
</context-group>
</trans-unit>
<trans-unit id="7017e0e26b53ef322c3e3bbf95f06a85487a12b2" datatype="html">
@ -2254,7 +2230,7 @@
<target state="new">By Continent</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">184</context>
<context context-type="linenumber">154</context>
</context-group>
</trans-unit>
<trans-unit id="f27e9dd8de80176286e02312e694cb8d1e485a5d" datatype="html">
@ -2262,7 +2238,7 @@
<target state="new">By Country</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">213</context>
<context context-type="linenumber">177</context>
</context-group>
</trans-unit>
<trans-unit id="85780db87ac6c9f202615ac63754551c061e7236" datatype="html">
@ -2270,7 +2246,7 @@
<target state="new">Regions</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">245</context>
<context context-type="linenumber">203</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -2282,7 +2258,7 @@
<target state="new">Developed Markets</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">272</context>
<context context-type="linenumber">224</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -2294,7 +2270,7 @@
<target state="new">Emerging Markets</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">281</context>
<context context-type="linenumber">233</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -2306,7 +2282,7 @@
<target state="new">Other Markets</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">290</context>
<context context-type="linenumber">242</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -2714,7 +2690,7 @@
<target state="new">Interest</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.ts</context>
<context context-type="linenumber">291</context>
<context context-type="linenumber">293</context>
</context-group>
</trans-unit>
<trans-unit id="1054498214311181686" datatype="html">
@ -2722,7 +2698,7 @@
<target state="new">Savings</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.ts</context>
<context context-type="linenumber">301</context>
<context context-type="linenumber">303</context>
</context-group>
</trans-unit>
<trans-unit id="4086606389696938932" datatype="html">
@ -2746,7 +2722,7 @@
<target state="new">Emergency Fund</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">7</context>
<context context-type="linenumber">8</context>
</context-group>
</trans-unit>
<trans-unit id="8693603235657020323" datatype="html">
@ -2754,7 +2730,7 @@
<target state="new">Other</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">8</context>
<context context-type="linenumber">12</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts</context>
@ -2766,7 +2742,7 @@
<target state="new">Symbol</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">10</context>
<context context-type="linenumber">16</context>
</context-group>
</trans-unit>
<trans-unit id="1825829511397926879" datatype="html">
@ -2774,7 +2750,7 @@
<target state="new">Tag</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">11</context>
<context context-type="linenumber">17</context>
</context-group>
</trans-unit>
<trans-unit id="787798817533231355" datatype="html">
@ -2782,7 +2758,7 @@
<target state="new">Cash</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">14</context>
<context context-type="linenumber">20</context>
</context-group>
</trans-unit>
<trans-unit id="8431989971855844965" datatype="html">
@ -2790,7 +2766,7 @@
<target state="new">Commodity</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">15</context>
<context context-type="linenumber">21</context>
</context-group>
</trans-unit>
<trans-unit id="1983771552391474467" datatype="html">
@ -2798,7 +2774,7 @@
<target state="new">Equity</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">16</context>
<context context-type="linenumber">22</context>
</context-group>
</trans-unit>
<trans-unit id="6124744839836623630" datatype="html">
@ -2806,7 +2782,7 @@
<target state="new">Fixed Income</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">17</context>
<context context-type="linenumber">23</context>
</context-group>
</trans-unit>
<trans-unit id="8432027249343784512" datatype="html">
@ -2814,7 +2790,7 @@
<target state="new">Real Estate</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">18</context>
<context context-type="linenumber">24</context>
</context-group>
</trans-unit>
<trans-unit id="8977365084844053365" datatype="html">
@ -2822,7 +2798,7 @@
<target state="new">Bond</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">21</context>
<context context-type="linenumber">27</context>
</context-group>
</trans-unit>
<trans-unit id="2893204435511484886" datatype="html">
@ -2830,7 +2806,7 @@
<target state="new">Cryptocurrency</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">22</context>
<context context-type="linenumber">28</context>
</context-group>
</trans-unit>
<trans-unit id="9071695492820527473" datatype="html">
@ -2838,7 +2814,7 @@
<target state="new">ETF</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">23</context>
<context context-type="linenumber">29</context>
</context-group>
</trans-unit>
<trans-unit id="5734784563242233466" datatype="html">
@ -2846,7 +2822,7 @@
<target state="new">Mutual Fund</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">24</context>
<context context-type="linenumber">30</context>
</context-group>
</trans-unit>
<trans-unit id="1270654249046226808" datatype="html">
@ -2854,7 +2830,7 @@
<target state="new">Precious Metal</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">25</context>
<context context-type="linenumber">31</context>
</context-group>
</trans-unit>
<trans-unit id="1346519036036997811" datatype="html">
@ -2862,7 +2838,7 @@
<target state="new">Private Equity</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">26</context>
<context context-type="linenumber">32</context>
</context-group>
</trans-unit>
<trans-unit id="4613338085351943838" datatype="html">
@ -2870,7 +2846,7 @@
<target state="new">Stock</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">27</context>
<context context-type="linenumber">33</context>
</context-group>
</trans-unit>
<trans-unit id="1413778527796351850" datatype="html">
@ -2878,7 +2854,7 @@
<target state="new">Africa</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">30</context>
<context context-type="linenumber">36</context>
</context-group>
</trans-unit>
<trans-unit id="3345512471687795386" datatype="html">
@ -2886,7 +2862,7 @@
<target state="new">Asia</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">31</context>
<context context-type="linenumber">37</context>
</context-group>
</trans-unit>
<trans-unit id="8350109327144196614" datatype="html">
@ -2894,7 +2870,7 @@
<target state="new">Europe</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">32</context>
<context context-type="linenumber">38</context>
</context-group>
</trans-unit>
<trans-unit id="1228771048078164312" datatype="html">
@ -2902,7 +2878,7 @@
<target state="new">North America</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">33</context>
<context context-type="linenumber">39</context>
</context-group>
</trans-unit>
<trans-unit id="3228811828827738441" datatype="html">
@ -2910,7 +2886,7 @@
<target state="new">Oceania</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">34</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="5957846001261659229" datatype="html">
@ -2918,7 +2894,7 @@
<target state="new">South America</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">35</context>
<context context-type="linenumber">41</context>
</context-group>
</trans-unit>
<trans-unit id="c004f99bac91f7dc28e87d458f80e5035ae99884" datatype="html">
@ -3054,7 +3030,7 @@
<target state="new">Securities</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">9</context>
<context context-type="linenumber">15</context>
</context-group>
</trans-unit>
<trans-unit id="0f845001c88b82c18535e6d44f5597061f506e42" datatype="html">
@ -3089,6 +3065,86 @@
<context context-type="linenumber">397</context>
</context-group>
</trans-unit>
<trans-unit id="d82473cef3cd2258eab20223ffcdd5af0c0025cc" datatype="html">
<source>Valid until</source>
<target state="new">Valid until</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">27</context>
</context-group>
</trans-unit>
<trans-unit id="7027401708987643293" datatype="html">
<source>Core</source>
<target state="new">Core</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
<trans-unit id="5036857680734170026" datatype="html">
<source>Grant</source>
<target state="new">Grant</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">9</context>
</context-group>
</trans-unit>
<trans-unit id="2963674907100579427" datatype="html">
<source>Higher Risk</source>
<target state="new">Higher Risk</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">10</context>
</context-group>
</trans-unit>
<trans-unit id="4152514811781104574" datatype="html">
<source>Lower Risk</source>
<target state="new">Lower Risk</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">11</context>
</context-group>
</trans-unit>
<trans-unit id="9219851060664514927" datatype="html">
<source>Retirement Provision</source>
<target state="new">Retirement Provision</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">13</context>
</context-group>
</trans-unit>
<trans-unit id="8050244774979733855" datatype="html">
<source>Satellite</source>
<target state="new">Satellite</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">14</context>
</context-group>
</trans-unit>
<trans-unit id="36f3a413e742253688f48766189344d6f52611d8" datatype="html">
<source> Protection for sensitive information like absolute performances and quantity values </source>
<target state="new"> Protection for sensitive information like absolute performances and quantity values </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">76,79</context>
</context-group>
</trans-unit>
<trans-unit id="2e744a88d8fa3204bb7cf407e7e3f3680f9e67a4" datatype="html">
<source> Distraction-free experience for turbulent times </source>
<target state="new"> Distraction-free experience for turbulent times </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">215,217</context>
</context-group>
</trans-unit>
<trans-unit id="b706a0f7740f8180094b8f6144462d121da49aa4" datatype="html">
<source> Sneak peek at upcoming functionality </source>
<target state="new"> Sneak peek at upcoming functionality </target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">245,247</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

177
apps/client/src/locales/messages.xlf

@ -1297,13 +1297,6 @@
<context context-type="linenumber">75</context>
</context-group>
</trans-unit>
<trans-unit id="31b2f7072bfeddc35fec6b3f731fc47d44eba155" datatype="html">
<source> Hides sensitive values such as absolute performances and quantities. </source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">76,79</context>
</context-group>
</trans-unit>
<trans-unit id="68baf7bff1f9242d0f6e4c0952dafefa6553cecd" datatype="html">
<source>Base Currency</source>
<context-group purpose="location">
@ -1336,21 +1329,21 @@
<source>Sign in with fingerprint</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">226</context>
<context context-type="linenumber">229</context>
</context-group>
</trans-unit>
<trans-unit id="83c4d4d764d2e2725ab8e919ec16ac400e1f290a" datatype="html">
<source>User ID</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">253</context>
<context context-type="linenumber">259</context>
</context-group>
</trans-unit>
<trans-unit id="9021c579c084e68d9db06a569d76f024111c6c54" datatype="html">
<source>Granted Access</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">262</context>
<context context-type="linenumber">268</context>
</context-group>
</trans-unit>
<trans-unit id="5e41f1b4c46ad9e0a9bc83fa36445483aa5cc324" datatype="html">
@ -1536,49 +1529,49 @@
<source>By Currency</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">67</context>
<context context-type="linenumber">61</context>
</context-group>
</trans-unit>
<trans-unit id="8288ff761f2d259625d2e5a3d96db727926d9cd4" datatype="html">
<source>By Asset Class</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">96</context>
<context context-type="linenumber">84</context>
</context-group>
</trans-unit>
<trans-unit id="b64539bb7815eb3275b55ad723d3897fc6ba8d23" datatype="html">
<source>By Holding</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">125</context>
<context context-type="linenumber">107</context>
</context-group>
</trans-unit>
<trans-unit id="9f86714c9a6b74e13c96ab02102ce40c34fe13b9" datatype="html">
<source>By Sector</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">154</context>
<context context-type="linenumber">130</context>
</context-group>
</trans-unit>
<trans-unit id="7017e0e26b53ef322c3e3bbf95f06a85487a12b2" datatype="html">
<source>By Continent</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">184</context>
<context context-type="linenumber">154</context>
</context-group>
</trans-unit>
<trans-unit id="f27e9dd8de80176286e02312e694cb8d1e485a5d" datatype="html">
<source>By Country</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">213</context>
<context context-type="linenumber">177</context>
</context-group>
</trans-unit>
<trans-unit id="85780db87ac6c9f202615ac63754551c061e7236" datatype="html">
<source>Regions</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">245</context>
<context context-type="linenumber">203</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -2069,7 +2062,7 @@
<source>Developed Markets</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">272</context>
<context context-type="linenumber">224</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -2113,7 +2106,7 @@
<source>Other Markets</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">290</context>
<context context-type="linenumber">242</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -2124,7 +2117,7 @@
<source>Emerging Markets</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.html</context>
<context context-type="linenumber">281</context>
<context context-type="linenumber">233</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/public/public-page.html</context>
@ -2185,21 +2178,14 @@
<source>Savings</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.ts</context>
<context context-type="linenumber">301</context>
</context-group>
</trans-unit>
<trans-unit id="2937311350146031865" datatype="html">
<source>Initial</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts</context>
<context context-type="linenumber">58</context>
<context context-type="linenumber">303</context>
</context-group>
</trans-unit>
<trans-unit id="3441715041566940420" datatype="html">
<source>Interest</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.ts</context>
<context context-type="linenumber">291</context>
<context context-type="linenumber">293</context>
</context-group>
</trans-unit>
<trans-unit id="5213771062241898526" datatype="html">
@ -2214,14 +2200,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/fire-calculator/fire-calculator.component.ts</context>
<context context-type="linenumber">281</context>
</context-group>
</trans-unit>
<trans-unit id="6603000223840533819" datatype="html">
<source>Current</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts</context>
<context context-type="linenumber">59</context>
<context context-type="linenumber">283</context>
</context-group>
</trans-unit>
<trans-unit id="6762743264882388498" datatype="html">
@ -2263,7 +2242,7 @@
<source>Filter by account or tag...</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts</context>
<context context-type="linenumber">137</context>
<context context-type="linenumber">132</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts</context>
@ -2310,7 +2289,7 @@
<source>Experimental Features</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">241</context>
<context context-type="linenumber">244</context>
</context-group>
</trans-unit>
<trans-unit id="1931353503905413384" datatype="html">
@ -2401,7 +2380,7 @@
<source>Total Amount</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/investment-chart/investment-chart.component.ts</context>
<context context-type="linenumber">178</context>
<context context-type="linenumber">181</context>
</context-group>
</trans-unit>
<trans-unit id="f1a355a1af2e818050a3af693ac8b521fa7edc5f" datatype="html">
@ -2415,42 +2394,42 @@
<source>Savings Rate</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/investment-chart/investment-chart.component.ts</context>
<context context-type="linenumber">239</context>
<context context-type="linenumber">245</context>
</context-group>
</trans-unit>
<trans-unit id="1270654249046226808" datatype="html">
<source>Precious Metal</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">25</context>
<context context-type="linenumber">31</context>
</context-group>
</trans-unit>
<trans-unit id="1825829511397926879" datatype="html">
<source>Tag</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">11</context>
<context context-type="linenumber">17</context>
</context-group>
</trans-unit>
<trans-unit id="1983771552391474467" datatype="html">
<source>Equity</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">16</context>
<context context-type="linenumber">22</context>
</context-group>
</trans-unit>
<trans-unit id="8432027249343784512" datatype="html">
<source>Real Estate</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">18</context>
<context context-type="linenumber">24</context>
</context-group>
</trans-unit>
<trans-unit id="2893204435511484886" datatype="html">
<source>Cryptocurrency</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">22</context>
<context context-type="linenumber">28</context>
</context-group>
</trans-unit>
<trans-unit id="4086606389696938932" datatype="html">
@ -2464,14 +2443,14 @@
<source>Stock</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">27</context>
<context context-type="linenumber">33</context>
</context-group>
</trans-unit>
<trans-unit id="1346519036036997811" datatype="html">
<source>Private Equity</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">26</context>
<context context-type="linenumber">32</context>
</context-group>
</trans-unit>
<trans-unit id="4574987680940794089" datatype="html">
@ -2485,49 +2464,49 @@
<source>Mutual Fund</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">24</context>
<context context-type="linenumber">30</context>
</context-group>
</trans-unit>
<trans-unit id="787798817533231355" datatype="html">
<source>Cash</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">14</context>
<context context-type="linenumber">20</context>
</context-group>
</trans-unit>
<trans-unit id="8106025670158480144" datatype="html">
<source>Symbol</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">10</context>
<context context-type="linenumber">16</context>
</context-group>
</trans-unit>
<trans-unit id="8431989971855844965" datatype="html">
<source>Commodity</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">15</context>
<context context-type="linenumber">21</context>
</context-group>
</trans-unit>
<trans-unit id="8977365084844053365" datatype="html">
<source>Bond</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">21</context>
<context context-type="linenumber">27</context>
</context-group>
</trans-unit>
<trans-unit id="9071695492820527473" datatype="html">
<source>ETF</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">23</context>
<context context-type="linenumber">29</context>
</context-group>
</trans-unit>
<trans-unit id="6124744839836623630" datatype="html">
<source>Fixed Income</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">17</context>
<context context-type="linenumber">23</context>
</context-group>
</trans-unit>
<trans-unit id="4893616715766810081" datatype="html">
@ -2545,14 +2524,14 @@
<source>Emergency Fund</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">7</context>
<context context-type="linenumber">8</context>
</context-group>
</trans-unit>
<trans-unit id="8693603235657020323" datatype="html">
<source>Other</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">8</context>
<context context-type="linenumber">12</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts</context>
@ -2563,42 +2542,42 @@
<source>North America</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">33</context>
<context context-type="linenumber">39</context>
</context-group>
</trans-unit>
<trans-unit id="1413778527796351850" datatype="html">
<source>Africa</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">30</context>
<context context-type="linenumber">36</context>
</context-group>
</trans-unit>
<trans-unit id="3228811828827738441" datatype="html">
<source>Oceania</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">34</context>
<context context-type="linenumber">40</context>
</context-group>
</trans-unit>
<trans-unit id="3345512471687795386" datatype="html">
<source>Asia</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">31</context>
<context context-type="linenumber">37</context>
</context-group>
</trans-unit>
<trans-unit id="5957846001261659229" datatype="html">
<source>South America</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">35</context>
<context context-type="linenumber">41</context>
</context-group>
</trans-unit>
<trans-unit id="8350109327144196614" datatype="html">
<source>Europe</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">32</context>
<context context-type="linenumber">38</context>
</context-group>
</trans-unit>
<trans-unit id="6f9fd3da06dc9000eef0d4dcbb37747b303048e9" datatype="html">
@ -2694,7 +2673,7 @@
<source>Securities</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">9</context>
<context context-type="linenumber">15</context>
</context-group>
</trans-unit>
<trans-unit id="8763985977445247551" datatype="html">
@ -2767,6 +2746,76 @@
<context context-type="linenumber">397</context>
</context-group>
</trans-unit>
<trans-unit id="2963674907100579427" datatype="html">
<source>Higher Risk</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">10</context>
</context-group>
</trans-unit>
<trans-unit id="4152514811781104574" datatype="html">
<source>Lower Risk</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">11</context>
</context-group>
</trans-unit>
<trans-unit id="5036857680734170026" datatype="html">
<source>Grant</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">9</context>
</context-group>
</trans-unit>
<trans-unit id="7027401708987643293" datatype="html">
<source>Core</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">7</context>
</context-group>
</trans-unit>
<trans-unit id="8050244774979733855" datatype="html">
<source>Satellite</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">14</context>
</context-group>
</trans-unit>
<trans-unit id="9219851060664514927" datatype="html">
<source>Retirement Provision</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/i18n.ts</context>
<context context-type="linenumber">13</context>
</context-group>
</trans-unit>
<trans-unit id="d82473cef3cd2258eab20223ffcdd5af0c0025cc" datatype="html">
<source>Valid until</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">27</context>
</context-group>
</trans-unit>
<trans-unit id="2e744a88d8fa3204bb7cf407e7e3f3680f9e67a4" datatype="html">
<source> Distraction-free experience for turbulent times </source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">215,217</context>
</context-group>
</trans-unit>
<trans-unit id="36f3a413e742253688f48766189344d6f52611d8" datatype="html">
<source> Protection for sensitive information like absolute performances and quantity values </source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">76,79</context>
</context-group>
</trans-unit>
<trans-unit id="b706a0f7740f8180094b8f6144462d121da49aa4" datatype="html">
<source> Sneak peek at upcoming functionality </source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/account/account-page.html</context>
<context context-type="linenumber">245,247</context>
</context-group>
</trans-unit>
</body>
</file>
</xliff>

40
libs/common/src/lib/chart-helper.ts

@ -1,16 +1,41 @@
import { Chart, TooltipPosition } from 'chart.js';
import { format } from 'date-fns';
import { getBackgroundColor, getTextColor } from './helper';
import { ColorScheme } from './types';
import {
DATE_FORMAT,
DATE_FORMAT_MONTHLY,
DATE_FORMAT_YEARLY,
getBackgroundColor,
getTextColor
} from './helper';
import { ColorScheme, GroupBy } from './types';
export function formatGroupedDate({
date,
groupBy
}: {
date: Date;
groupBy: GroupBy;
}) {
if (groupBy === 'month') {
return format(date, DATE_FORMAT_MONTHLY);
} else if (groupBy === 'year') {
return format(date, DATE_FORMAT_YEARLY);
}
return format(date, DATE_FORMAT);
}
export function getTooltipOptions({
colorScheme,
currency = '',
groupBy,
locale = '',
unit = ''
}: {
colorScheme?: ColorScheme;
currency?: string;
groupBy?: GroupBy;
locale?: string;
unit?: string;
} = {}) {
@ -38,6 +63,13 @@ export function getTooltipOptions({
}
}
return label;
},
title: (contexts) => {
if (groupBy) {
return formatGroupedDate({ groupBy, date: contexts[0].parsed.x });
}
return contexts[0].label;
}
},
caretSize: 0,
@ -97,3 +129,7 @@ export function getVerticalHoverLinePlugin(
id: 'verticalHoverLine'
};
}
export function transformTickToAbbreviation(value: number) {
return value < 1000000 ? `${value / 1000}K` : `${value / 1000000}M`;
}

4
libs/common/src/lib/config.ts

@ -33,8 +33,6 @@ export const warnColorRgb = {
b: 69
};
export const ASSET_SUB_CLASS_EMERGENCY_FUND = 'EMERGENCY_FUND';
export const DATA_GATHERING_QUEUE = 'DATA_GATHERING_QUEUE';
export const DATA_GATHERING_QUEUE_PRIORITY_LOW = Number.MAX_SAFE_INTEGER;
export const DATA_GATHERING_QUEUE_PRIORITY_HIGH = 1;
@ -43,6 +41,8 @@ export const DEFAULT_DATE_FORMAT_MONTH_YEAR = 'MMM yyyy';
export const DEFAULT_LANGUAGE_CODE = 'en';
export const DEFAULT_PAGE_SIZE = 50;
export const EMERGENCY_FUND_TAG_ID = '4452656d-9fa4-4bd0-ba38-70492e31d180';
export const GATHER_ASSET_PROFILE_PROCESS = 'GATHER_ASSET_PROFILE';
export const GATHER_ASSET_PROFILE_PROCESS_OPTIONS: JobOptions = {
attempts: 10,

6
libs/common/src/lib/helper.ts

@ -233,6 +233,8 @@ export function resolveMarketCondition(
}
export const DATE_FORMAT = 'yyyy-MM-dd';
export const DATE_FORMAT_MONTHLY = 'MMMM yyyy';
export const DATE_FORMAT_YEARLY = 'yyyy';
export function parseDate(date: string) {
return parse(date, DATE_FORMAT, new Date());
@ -241,7 +243,3 @@ export function parseDate(date: string) {
export function prettifySymbol(aSymbol: string): string {
return aSymbol?.replace(ghostfolioScraperApiSymbolPrefix, '');
}
export function transformTickToAbbreviation(value: number) {
return value < 1000000 ? `${value / 1000}K` : `${value / 1000000}M`;
}

5
libs/common/src/lib/interfaces/portfolio-position.interface.ts

@ -5,10 +5,9 @@ import { Country } from './country.interface';
import { Sector } from './sector.interface';
export interface PortfolioPosition {
allocationCurrent: number;
allocationInvestment: number;
allocationInPercentage: number;
assetClass?: AssetClass;
assetSubClass?: AssetSubClass | 'CASH' | 'EMERGENCY_FUND';
assetSubClass?: AssetSubClass | 'CASH';
countries: Country[];
currency: string;
dataSource: DataSource;

2
libs/common/src/lib/interfaces/portfolio-public-details.interface.ts

@ -6,7 +6,7 @@ export interface PortfolioPublicDetails {
holdings: {
[symbol: string]: Pick<
PortfolioPosition,
| 'allocationCurrent'
| 'allocationInPercentage'
| 'countries'
| 'currency'
| 'dataSource'

6
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts

@ -13,9 +13,11 @@ import {
ViewChild
} from '@angular/core';
import { FormBuilder, FormControl } from '@angular/forms';
import { getTooltipOptions } from '@ghostfolio/common/chart-helper';
import {
getTooltipOptions,
transformTickToAbbreviation
} from '@ghostfolio/common/chart-helper';
import { primaryColorRgb } from '@ghostfolio/common/config';
import { transformTickToAbbreviation } from '@ghostfolio/common/helper';
import { ColorScheme } from '@ghostfolio/common/types';
import {
BarController,

6
libs/ui/src/lib/holdings-table/holdings-table.component.html

@ -3,7 +3,7 @@
class="gf-table w-100"
mat-table
matSort
matSortActive="allocationCurrent"
matSortActive="allocationInPercentage"
matSortDirection="desc"
[dataSource]="dataSource"
>
@ -85,7 +85,7 @@
</td>
</ng-container>
<ng-container matColumnDef="allocationCurrent">
<ng-container matColumnDef="allocationInPercentage">
<th
*matHeaderCellDef
class="justify-content-end px-1"
@ -99,7 +99,7 @@
<gf-value
[isPercent]="true"
[locale]="locale"
[value]="isLoading ? undefined : element.allocationCurrent"
[value]="isLoading ? undefined : element.allocationInPercentage"
></gf-value>
</div>
</td>

8
libs/ui/src/lib/holdings-table/holdings-table.component.ts

@ -13,7 +13,6 @@ import { MatPaginator } from '@angular/material/paginator';
import { MatSort } from '@angular/material/sort';
import { MatTableDataSource } from '@angular/material/table';
import { Router } from '@angular/router';
import { ASSET_SUB_CLASS_EMERGENCY_FUND } from '@ghostfolio/common/config';
import { PortfolioPosition, UniqueAsset } from '@ghostfolio/common/interfaces';
import { AssetClass, Order as OrderModel } from '@prisma/client';
import { Subject, Subscription } from 'rxjs';
@ -42,10 +41,7 @@ export class HoldingsTableComponent implements OnChanges, OnDestroy, OnInit {
public dataSource: MatTableDataSource<PortfolioPosition> =
new MatTableDataSource();
public displayedColumns = [];
public ignoreAssetSubClasses = [
AssetClass.CASH.toString(),
ASSET_SUB_CLASS_EMERGENCY_FUND
];
public ignoreAssetSubClasses = [AssetClass.CASH.toString()];
public isLoading = true;
public routeQueryParams: Subscription;
@ -62,7 +58,7 @@ export class HoldingsTableComponent implements OnChanges, OnDestroy, OnInit {
this.displayedColumns.push('value');
}
this.displayedColumns.push('allocationCurrent');
this.displayedColumns.push('allocationInPercentage');
this.displayedColumns.push('performance');
this.isLoading = true;

6
libs/ui/src/lib/i18n.ts

@ -4,8 +4,14 @@ const locales = {
ACCOUNT: $localize`Account`,
ASSET_CLASS: $localize`Asset Class`,
ASSET_SUB_CLASS: $localize`Asset Sub Class`,
CORE: $localize`Core`,
EMERGENCY_FUND: $localize`Emergency Fund`,
GRANT: $localize`Grant`,
HIGHER_RISK: $localize`Higher Risk`,
LOWER_RISK: $localize`Lower Risk`,
OTHER: $localize`Other`,
RETIREMENT_PROVISION: $localize`Retirement Provision`,
SATELLITE: $localize`Satellite`,
SECURITIES: $localize`Securities`,
SYMBOL: $localize`Symbol`,
TAG: $localize`Tag`,

1
libs/ui/src/lib/logo/logo.component.scss

@ -5,6 +5,7 @@
.logo {
background-color: rgba(var(--dark-primary-text));
margin-top: -2px;
mask: url('/assets/ghost.svg') no-repeat center;
}
}

2
package.json

@ -1,6 +1,6 @@
{
"name": "ghostfolio",
"version": "1.226.0",
"version": "1.229.0",
"homepage": "https://ghostfol.io",
"license": "AGPL-3.0",
"scripts": {

10
prisma/seed.js

@ -288,6 +288,16 @@ async function main() {
skipDuplicates: true
});
await prisma.tag.createMany({
data: [
{
id: '4452656d-9fa4-4bd0-ba38-70492e31d180',
name: 'EMERGENCY_FUND'
}
],
skipDuplicates: true
});
console.log({
platformBitcoinSuisse,
platformBitpanda,

Loading…
Cancel
Save