Browse Source

Merge remote-tracking branch 'upstream/main' into feature/public-access-filter

pull/5848/head
Germán Martín 5 days ago
parent
commit
038507d9e0
  1. 21
      CHANGELOG.md
  2. 13
      README.md
  3. 79
      apps/api/src/app/endpoints/ai/ai.service.ts
  4. 7
      apps/client/src/app/app.component.ts
  5. 6
      apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts
  6. 2
      apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
  7. 27
      apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
  8. 62
      apps/client/src/app/components/admin-platform/admin-platform.component.ts
  9. 14
      apps/client/src/app/components/admin-tag/admin-tag.component.ts
  10. 2
      apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/interfaces/interfaces.ts
  11. 8
      apps/client/src/app/components/admin-users/admin-users.component.ts
  12. 6
      apps/client/src/app/components/header/header.component.ts
  13. 34
      apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts
  14. 33
      apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
  15. 20
      apps/client/src/app/components/home-watchlist/home-watchlist.component.ts
  16. 5
      apps/client/src/app/components/login-with-access-token-dialog/interfaces/interfaces.ts
  17. 4
      apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.component.ts
  18. 7
      apps/client/src/app/components/rule/rule.component.ts
  19. 15
      apps/client/src/app/components/user-account-access/user-account-access.component.ts
  20. 24
      apps/client/src/app/pages/about/overview/about-overview-page.html
  21. 25
      apps/client/src/app/pages/accounts/accounts-page.component.ts
  22. 2
      apps/client/src/app/pages/accounts/create-or-update-account-dialog/interfaces/interfaces.ts
  23. 10
      apps/client/src/app/pages/home/home-page.component.ts
  24. 73
      apps/client/src/app/pages/portfolio/activities/activities-page.component.ts
  25. 1
      apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/interfaces/interfaces.ts
  26. 2
      apps/client/src/app/pages/portfolio/activities/import-activities-dialog/interfaces/interfaces.ts
  27. 7
      apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts
  28. 22
      apps/client/src/app/pages/register/register-page.component.ts
  29. 18
      apps/client/src/app/pages/resources/glossary/resources-glossary.component.html
  30. 4
      apps/client/src/app/pages/resources/guides/resources-guides.component.html
  31. 8
      apps/client/src/app/pages/resources/markets/resources-markets.component.html
  32. 2
      apps/client/src/app/pages/resources/overview/resources-overview.component.html
  33. 6
      apps/client/src/app/pages/zen/zen-page.component.ts
  34. 22
      apps/client/src/app/services/user/user.service.ts
  35. 76
      apps/client/src/locales/messages.ca.xlf
  36. 76
      apps/client/src/locales/messages.de.xlf
  37. 76
      apps/client/src/locales/messages.es.xlf
  38. 76
      apps/client/src/locales/messages.fr.xlf
  39. 76
      apps/client/src/locales/messages.it.xlf
  40. 76
      apps/client/src/locales/messages.nl.xlf
  41. 76
      apps/client/src/locales/messages.pl.xlf
  42. 76
      apps/client/src/locales/messages.pt.xlf
  43. 76
      apps/client/src/locales/messages.tr.xlf
  44. 76
      apps/client/src/locales/messages.uk.xlf
  45. 69
      apps/client/src/locales/messages.xlf
  46. 76
      apps/client/src/locales/messages.zh.xlf
  47. 14
      libs/ui/src/lib/activities-table/activities-table.component.html
  48. 22
      libs/ui/src/lib/activities-table/activities-table.component.ts
  49. 7
      libs/ui/src/lib/benchmark/benchmark.component.ts
  50. 28
      libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts
  51. 4
      package-lock.json
  52. 2
      package.json

21
CHANGELOG.md

@ -9,9 +9,30 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added ### Added
- Extended the activities table menu with a _View Holding_ item
### Changed
- Improved the icon of the holdings tab on the home page
- Improved the icon of the holdings tab on the home page for the _Zen Mode_
- Improved the icon of the holdings tab in the account detail dialog
## 2.212.0 - 2025-10-29
### Added
- Added a close holding button to the holding detail dialog
- Added the _Sponsors_ section to the about page
- Extended the user detail dialog in the users section of the admin control panel - Extended the user detail dialog in the users section of the admin control panel
- Enable filtering (by account, holdings, tag or asset class) in public access - Enable filtering (by account, holdings, tag or asset class) in public access
### Changed
- Refactored the generation of the holdings table in the _Copy AI prompt to clipboard for analysis_ action on the analysis page (experimental)
- Refactored the generation of the holdings table in the _Copy portfolio data to clipboard for AI prompt_ action on the analysis page (experimental)
- Improved the usability of the user detail dialog in the users section of the admin control panel
- Improved the language localization for German (`de`)
### Fixed ### Fixed
- Ensured the locale is available in the settings dialog to customize the rule thresholds of the _X-ray_ page - Ensured the locale is available in the settings dialog to customize the rule thresholds of the _X-ray_ page

13
README.md

@ -297,7 +297,18 @@ Ghostfolio is **100% free** and **open source**. We encourage and support an act
Not sure what to work on? We have [some ideas](https://github.com/ghostfolio/ghostfolio/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22%20no%3Aassignee), even for [newcomers](https://github.com/ghostfolio/ghostfolio/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22%20no%3Aassignee). Please join the Ghostfolio [Slack](https://join.slack.com/t/ghostfolio/shared_invite/zt-vsaan64h-F_I0fEo5M0P88lP9ibCxFg) channel or post to [@ghostfolio\_](https://x.com/ghostfolio_) on _X_. We would love to hear from you. Not sure what to work on? We have [some ideas](https://github.com/ghostfolio/ghostfolio/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22%20no%3Aassignee), even for [newcomers](https://github.com/ghostfolio/ghostfolio/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22%20no%3Aassignee). Please join the Ghostfolio [Slack](https://join.slack.com/t/ghostfolio/shared_invite/zt-vsaan64h-F_I0fEo5M0P88lP9ibCxFg) channel or post to [@ghostfolio\_](https://x.com/ghostfolio_) on _X_. 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). If you like to support this project, become a [**Sponsor**](https://github.com/sponsors/ghostfolio), get [**Ghostfolio Premium**](https://ghostfol.io/en/pricing) or [**Buy me a coffee**](https://www.buymeacoffee.com/ghostfolio).
## Sponsors
<div align="center">
<p>
Browser testing via<br />
<a href="https://www.lambdatest.com?utm_medium=sponsor&utm_source=ghostfolio" target="_blank" title="LambdaTest - AI Powered Testing Tool">
<img alt="LambdaTest Logo" height="45" width="250" src="https://www.lambdatest.com/blue-logo.png" />
</a>
</p>
</div>
## Analytics ## Analytics

79
apps/api/src/app/endpoints/ai/ai.service.ts

@ -14,6 +14,27 @@ import type { ColumnDescriptor } from 'tablemark';
@Injectable() @Injectable()
export class AiService { export class AiService {
private static readonly HOLDINGS_TABLE_COLUMN_DEFINITIONS: ({
key:
| 'ALLOCATION_PERCENTAGE'
| 'ASSET_CLASS'
| 'ASSET_SUB_CLASS'
| 'CURRENCY'
| 'NAME'
| 'SYMBOL';
} & ColumnDescriptor)[] = [
{ key: 'NAME', name: 'Name' },
{ key: 'SYMBOL', name: 'Symbol' },
{ key: 'CURRENCY', name: 'Currency' },
{ key: 'ASSET_CLASS', name: 'Asset Class' },
{ key: 'ASSET_SUB_CLASS', name: 'Asset Sub Class' },
{
align: 'right',
key: 'ALLOCATION_PERCENTAGE',
name: 'Allocation in Percentage'
}
];
public constructor( public constructor(
private readonly portfolioService: PortfolioService, private readonly portfolioService: PortfolioService,
private readonly propertyService: PropertyService private readonly propertyService: PropertyService
@ -59,14 +80,10 @@ export class AiService {
userId userId
}); });
const holdingsTableColumns: ColumnDescriptor[] = [ const holdingsTableColumns: ColumnDescriptor[] =
{ name: 'Name' }, AiService.HOLDINGS_TABLE_COLUMN_DEFINITIONS.map(({ align, name }) => {
{ name: 'Symbol' }, return { name, align: align ?? 'left' };
{ name: 'Currency' }, });
{ name: 'Asset Class' },
{ name: 'Asset Sub Class' },
{ align: 'right', name: 'Allocation in Percentage' }
];
const holdingsTableRows = Object.values(holdings) const holdingsTableRows = Object.values(holdings)
.sort((a, b) => { .sort((a, b) => {
@ -78,17 +95,45 @@ export class AiService {
assetClass, assetClass,
assetSubClass, assetSubClass,
currency, currency,
name, name: label,
symbol symbol
}) => { }) => {
return { return AiService.HOLDINGS_TABLE_COLUMN_DEFINITIONS.reduce(
Name: name, (row, { key, name }) => {
Symbol: symbol, switch (key) {
Currency: currency, case 'ALLOCATION_PERCENTAGE':
'Asset Class': assetClass ?? '', row[name] = `${(allocationInPercentage * 100).toFixed(3)}%`;
'Asset Sub Class': assetSubClass ?? '', break;
'Allocation in Percentage': `${(allocationInPercentage * 100).toFixed(3)}%`
}; case 'ASSET_CLASS':
row[name] = assetClass ?? '';
break;
case 'ASSET_SUB_CLASS':
row[name] = assetSubClass ?? '';
break;
case 'CURRENCY':
row[name] = currency;
break;
case 'NAME':
row[name] = label;
break;
case 'SYMBOL':
row[name] = symbol;
break;
default:
row[name] = '';
break;
}
return row;
},
{} as Record<string, string>
);
} }
); );

7
apps/client/src/app/app.component.ts

@ -276,7 +276,10 @@ export class AppComponent implements OnDestroy, OnInit {
.subscribe((user) => { .subscribe((user) => {
this.user = user; this.user = user;
const dialogRef = this.dialog.open(GfHoldingDetailDialogComponent, { const dialogRef = this.dialog.open<
GfHoldingDetailDialogComponent,
HoldingDetailDialogParams
>(GfHoldingDetailDialogComponent, {
autoFocus: false, autoFocus: false,
data: { data: {
dataSource, dataSource,
@ -302,7 +305,7 @@ export class AppComponent implements OnDestroy, OnInit {
hasPermission(this.user?.permissions, permissions.updateOrder) && hasPermission(this.user?.permissions, permissions.updateOrder) &&
!this.user?.settings?.isRestrictedView, !this.user?.settings?.isRestrictedView,
locale: this.user?.settings?.locale locale: this.user?.settings?.locale
} as HoldingDetailDialogParams, },
height: this.deviceType === 'mobile' ? '98vh' : '80vh', height: this.deviceType === 'mobile' ? '98vh' : '80vh',
width: this.deviceType === 'mobile' ? '100vw' : '50rem' width: this.deviceType === 'mobile' ? '100vw' : '50rem'
}); });

6
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.component.ts

@ -43,9 +43,9 @@ import { Big } from 'big.js';
import { format, parseISO } from 'date-fns'; import { format, parseISO } from 'date-fns';
import { addIcons } from 'ionicons'; import { addIcons } from 'ionicons';
import { import {
albumsOutline,
cashOutline, cashOutline,
swapVerticalOutline, swapVerticalOutline
walletOutline
} from 'ionicons/icons'; } from 'ionicons/icons';
import { isNumber } from 'lodash'; import { isNumber } from 'lodash';
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
@ -129,7 +129,7 @@ export class GfAccountDetailDialogComponent implements OnDestroy, OnInit {
} }
}); });
addIcons({ cashOutline, swapVerticalOutline, walletOutline }); addIcons({ albumsOutline, cashOutline, swapVerticalOutline });
} }
public ngOnInit() { public ngOnInit() {

2
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html

@ -98,7 +98,7 @@
> >
<mat-tab> <mat-tab>
<ng-template mat-tab-label> <ng-template mat-tab-label>
<ion-icon name="wallet-outline" /> <ion-icon name="albums-outline" />
<div class="d-none d-sm-block ml-2" i18n>Holdings</div> <div class="d-none d-sm-block ml-2" i18n>Holdings</div>
</ng-template> </ng-template>
<gf-holdings-table <gf-holdings-table

27
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts

@ -430,7 +430,10 @@ export class GfAdminMarketDataComponent
.subscribe((user) => { .subscribe((user) => {
this.user = user; this.user = user;
const dialogRef = this.dialog.open(GfAssetProfileDialogComponent, { const dialogRef = this.dialog.open<
GfAssetProfileDialogComponent,
AssetProfileDialogParams
>(GfAssetProfileDialogComponent, {
autoFocus: false, autoFocus: false,
data: { data: {
dataSource, dataSource,
@ -438,7 +441,7 @@ export class GfAdminMarketDataComponent
colorScheme: this.user?.settings.colorScheme, colorScheme: this.user?.settings.colorScheme,
deviceType: this.deviceType, deviceType: this.deviceType,
locale: this.user?.settings?.locale locale: this.user?.settings?.locale
} as AssetProfileDialogParams, },
height: this.deviceType === 'mobile' ? '98vh' : '80vh', height: this.deviceType === 'mobile' ? '98vh' : '80vh',
width: this.deviceType === 'mobile' ? '100vw' : '50rem' width: this.deviceType === 'mobile' ? '100vw' : '50rem'
}); });
@ -465,17 +468,17 @@ export class GfAdminMarketDataComponent
.subscribe((user) => { .subscribe((user) => {
this.user = user; this.user = user;
const dialogRef = this.dialog.open( const dialogRef = this.dialog.open<
GfCreateAssetProfileDialogComponent, GfCreateAssetProfileDialogComponent,
{ CreateAssetProfileDialogParams
autoFocus: false, >(GfCreateAssetProfileDialogComponent, {
data: { autoFocus: false,
deviceType: this.deviceType, data: {
locale: this.user?.settings?.locale deviceType: this.deviceType,
} as CreateAssetProfileDialogParams, locale: this.user?.settings?.locale
width: this.deviceType === 'mobile' ? '100vw' : '50rem' },
} width: this.deviceType === 'mobile' ? '100vw' : '50rem'
); });
dialogRef dialogRef
.afterClosed() .afterClosed()

62
apps/client/src/app/components/admin-platform/admin-platform.component.ts

@ -34,6 +34,7 @@ import { DeviceDetectorService } from 'ngx-device-detector';
import { Subject, takeUntil } from 'rxjs'; import { Subject, takeUntil } from 'rxjs';
import { GfCreateOrUpdatePlatformDialogComponent } from './create-or-update-platform-dialog/create-or-update-platform-dialog.component'; import { GfCreateOrUpdatePlatformDialogComponent } from './create-or-update-platform-dialog/create-or-update-platform-dialog.component';
import { CreateOrUpdatePlatformDialogParams } from './create-or-update-platform-dialog/interfaces/interfaces';
@Component({ @Component({
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
@ -153,19 +154,20 @@ export class GfAdminPlatformComponent implements OnInit, OnDestroy {
} }
private openCreatePlatformDialog() { private openCreatePlatformDialog() {
const dialogRef = this.dialog.open( const dialogRef = this.dialog.open<
GfCreateOrUpdatePlatformDialogComponent, GfCreateOrUpdatePlatformDialogComponent,
{ CreateOrUpdatePlatformDialogParams
data: { >(GfCreateOrUpdatePlatformDialogComponent, {
platform: { data: {
name: null, platform: {
url: null id: null,
} name: null,
}, url: null
height: this.deviceType === 'mobile' ? '98vh' : undefined, }
width: this.deviceType === 'mobile' ? '100vw' : '50rem' },
} height: this.deviceType === 'mobile' ? '98vh' : undefined,
); width: this.deviceType === 'mobile' ? '100vw' : '50rem'
});
dialogRef dialogRef
.afterClosed() .afterClosed()
@ -191,21 +193,29 @@ export class GfAdminPlatformComponent implements OnInit, OnDestroy {
}); });
} }
private openUpdatePlatformDialog({ id, name, url }) { private openUpdatePlatformDialog({
const dialogRef = this.dialog.open( id,
name,
url
}: {
id: string;
name: string;
url: string;
}) {
const dialogRef = this.dialog.open<
GfCreateOrUpdatePlatformDialogComponent, GfCreateOrUpdatePlatformDialogComponent,
{ CreateOrUpdatePlatformDialogParams
data: { >(GfCreateOrUpdatePlatformDialogComponent, {
platform: { data: {
id, platform: {
name, id,
url name,
} url
}, }
height: this.deviceType === 'mobile' ? '98vh' : undefined, },
width: this.deviceType === 'mobile' ? '100vw' : '50rem' height: this.deviceType === 'mobile' ? '98vh' : undefined,
} width: this.deviceType === 'mobile' ? '100vw' : '50rem'
); });
dialogRef dialogRef
.afterClosed() .afterClosed()

14
apps/client/src/app/components/admin-tag/admin-tag.component.ts

@ -32,6 +32,7 @@ import { DeviceDetectorService } from 'ngx-device-detector';
import { Subject, takeUntil } from 'rxjs'; import { Subject, takeUntil } from 'rxjs';
import { GfCreateOrUpdateTagDialogComponent } from './create-or-update-tag-dialog/create-or-update-tag-dialog.component'; import { GfCreateOrUpdateTagDialogComponent } from './create-or-update-tag-dialog/create-or-update-tag-dialog.component';
import { CreateOrUpdateTagDialogParams } from './create-or-update-tag-dialog/interfaces/interfaces';
@Component({ @Component({
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
@ -149,9 +150,13 @@ export class GfAdminTagComponent implements OnInit, OnDestroy {
} }
private openCreateTagDialog() { private openCreateTagDialog() {
const dialogRef = this.dialog.open(GfCreateOrUpdateTagDialogComponent, { const dialogRef = this.dialog.open<
GfCreateOrUpdateTagDialogComponent,
CreateOrUpdateTagDialogParams
>(GfCreateOrUpdateTagDialogComponent, {
data: { data: {
tag: { tag: {
id: null,
name: null name: null
} }
}, },
@ -183,8 +188,11 @@ export class GfAdminTagComponent implements OnInit, OnDestroy {
}); });
} }
private openUpdateTagDialog({ id, name }) { private openUpdateTagDialog({ id, name }: { id: string; name: string }) {
const dialogRef = this.dialog.open(GfCreateOrUpdateTagDialogComponent, { const dialogRef = this.dialog.open<
GfCreateOrUpdateTagDialogComponent,
CreateOrUpdateTagDialogParams
>(GfCreateOrUpdateTagDialogComponent, {
data: { data: {
tag: { tag: {
id, id,

2
apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/interfaces/interfaces.ts

@ -1,5 +1,5 @@
import { Tag } from '@prisma/client'; import { Tag } from '@prisma/client';
export interface CreateOrUpdateTagDialogParams { export interface CreateOrUpdateTagDialogParams {
tag: Tag; tag: Pick<Tag, 'id' | 'name'>;
} }

8
apps/client/src/app/components/admin-users/admin-users.component.ts

@ -288,14 +288,17 @@ export class GfAdminUsersComponent implements OnDestroy, OnInit {
return; return;
} }
const dialogRef = this.dialog.open(GfUserDetailDialogComponent, { const dialogRef = this.dialog.open<
GfUserDetailDialogComponent,
UserDetailDialogParams
>(GfUserDetailDialogComponent, {
autoFocus: false, autoFocus: false,
data: { data: {
userData, userData,
deviceType: this.deviceType, deviceType: this.deviceType,
hasPermissionForSubscription: this.hasPermissionForSubscription, hasPermissionForSubscription: this.hasPermissionForSubscription,
locale: this.user?.settings?.locale locale: this.user?.settings?.locale
} as UserDetailDialogParams, },
height: this.deviceType === 'mobile' ? '98vh' : '60vh', height: this.deviceType === 'mobile' ? '98vh' : '60vh',
width: this.deviceType === 'mobile' ? '100vw' : '50rem' width: this.deviceType === 'mobile' ? '100vw' : '50rem'
}); });
@ -304,7 +307,6 @@ export class GfAdminUsersComponent implements OnDestroy, OnInit {
.afterClosed() .afterClosed()
.pipe(takeUntil(this.unsubscribeSubject)) .pipe(takeUntil(this.unsubscribeSubject))
.subscribe(() => { .subscribe(() => {
this.fetchUsers();
this.router.navigate(['.'], { relativeTo: this.route }); this.router.navigate(['.'], { relativeTo: this.route });
}); });
} }

6
apps/client/src/app/components/header/header.component.ts

@ -1,4 +1,5 @@
import { UpdateUserSettingDto } from '@ghostfolio/api/app/user/update-user-setting.dto'; import { UpdateUserSettingDto } from '@ghostfolio/api/app/user/update-user-setting.dto';
import { LoginWithAccessTokenDialogParams } from '@ghostfolio/client/components/login-with-access-token-dialog/interfaces/interfaces';
import { GfLoginWithAccessTokenDialogComponent } from '@ghostfolio/client/components/login-with-access-token-dialog/login-with-access-token-dialog.component'; import { GfLoginWithAccessTokenDialogComponent } from '@ghostfolio/client/components/login-with-access-token-dialog/login-with-access-token-dialog.component';
import { LayoutService } from '@ghostfolio/client/core/layout.service'; import { LayoutService } from '@ghostfolio/client/core/layout.service';
import { NotificationService } from '@ghostfolio/client/core/notification/notification.service'; import { NotificationService } from '@ghostfolio/client/core/notification/notification.service';
@ -271,7 +272,10 @@ export class GfHeaderComponent implements OnChanges {
} }
public openLoginDialog() { public openLoginDialog() {
const dialogRef = this.dialog.open(GfLoginWithAccessTokenDialogComponent, { const dialogRef = this.dialog.open<
GfLoginWithAccessTokenDialogComponent,
LoginWithAccessTokenDialogParams
>(GfLoginWithAccessTokenDialogComponent, {
autoFocus: false, autoFocus: false,
data: { data: {
accessToken: '', accessToken: '',

34
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts

@ -1,3 +1,4 @@
import { CreateOrderDto } from '@ghostfolio/api/app/order/create-order.dto';
import { Activity } from '@ghostfolio/api/app/order/interfaces/activities.interface'; import { Activity } from '@ghostfolio/api/app/order/interfaces/activities.interface';
import { GfDialogFooterComponent } from '@ghostfolio/client/components/dialog-footer/dialog-footer.component'; import { GfDialogFooterComponent } from '@ghostfolio/client/components/dialog-footer/dialog-footer.component';
import { GfDialogHeaderComponent } from '@ghostfolio/client/components/dialog-header/dialog-header.component'; import { GfDialogHeaderComponent } from '@ghostfolio/client/components/dialog-header/dialog-header.component';
@ -57,6 +58,7 @@ import { isUUID } from 'class-validator';
import { format, isSameMonth, isToday, parseISO } from 'date-fns'; import { format, isSameMonth, isToday, parseISO } from 'date-fns';
import { addIcons } from 'ionicons'; import { addIcons } from 'ionicons';
import { import {
arrowDownCircleOutline,
createOutline, createOutline,
flagOutline, flagOutline,
readerOutline, readerOutline,
@ -167,6 +169,7 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit {
private userService: UserService private userService: UserService
) { ) {
addIcons({ addIcons({
arrowDownCircleOutline,
createOutline, createOutline,
flagOutline, flagOutline,
readerOutline, readerOutline,
@ -557,6 +560,37 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit {
this.dialogRef.close(); this.dialogRef.close();
} }
public onCloseHolding() {
const today = new Date();
const activity: CreateOrderDto = {
accountId: this.accounts.length === 1 ? this.accounts[0].id : null,
comment: null,
currency: this.SymbolProfile.currency,
dataSource: this.SymbolProfile.dataSource,
date: today.toISOString(),
fee: 0,
quantity: this.quantity,
symbol: this.SymbolProfile.symbol,
tags: this.tags.map(({ id }) => {
return id;
}),
type: 'SELL',
unitPrice: this.marketPrice
};
this.dataService
.postOrder(activity)
.pipe(takeUntil(this.unsubscribeSubject))
.subscribe(() => {
this.router.navigate(
internalRoutes.portfolio.subRoutes.activities.routerLink
);
this.dialogRef.close();
});
}
public onExport() { public onExport() {
const activityIds = this.dataSource.data.map(({ id }) => { const activityIds = this.dataSource.data.map(({ id }) => {
return id; return id;

33
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html

@ -428,6 +428,29 @@
<div class="row"> <div class="row">
<div class="col"> <div class="col">
<div class="button-container d-flex flex-wrap"> <div class="button-container d-flex flex-wrap">
@if (data.hasPermissionToCreateActivity && quantity > 0) {
<button
color="warn"
mat-stroked-button
(click)="onCloseHolding()"
>
<ion-icon
class="mr-1"
name="arrow-down-circle-outline"
></ion-icon
><span i18n>Close Holding</span>
</button>
}
@if (
dataSource?.data.length > 0 &&
data.hasPermissionToReportDataGlitch === true
) {
<a color="warn" mat-stroked-button [href]="reportDataGlitchMail"
><ion-icon class="mr-1" name="flag-outline" /><span i18n
>Report Data Glitch</span
>...</a
>
}
@if (data.hasPermissionToAccessAdminControl) { @if (data.hasPermissionToAccessAdminControl) {
<a <a
mat-stroked-button mat-stroked-button
@ -443,16 +466,6 @@
>...</a >...</a
> >
} }
@if (
dataSource?.data.length > 0 &&
data.hasPermissionToReportDataGlitch === true
) {
<a color="warn" mat-stroked-button [href]="reportDataGlitchMail"
><ion-icon class="mr-1" name="flag-outline" /><span i18n
>Report Data Glitch</span
>...</a
>
}
</div> </div>
</div> </div>
</div> </div>

20
apps/client/src/app/components/home-watchlist/home-watchlist.component.ts

@ -149,17 +149,17 @@ export class GfHomeWatchlistComponent implements OnDestroy, OnInit {
.subscribe((user) => { .subscribe((user) => {
this.user = user; this.user = user;
const dialogRef = this.dialog.open( const dialogRef = this.dialog.open<
GfCreateWatchlistItemDialogComponent, GfCreateWatchlistItemDialogComponent,
{ CreateWatchlistItemDialogParams
autoFocus: false, >(GfCreateWatchlistItemDialogComponent, {
data: { autoFocus: false,
deviceType: this.deviceType, data: {
locale: this.user?.settings?.locale deviceType: this.deviceType,
} as CreateWatchlistItemDialogParams, locale: this.user?.settings?.locale
width: this.deviceType === 'mobile' ? '100vw' : '50rem' },
} width: this.deviceType === 'mobile' ? '100vw' : '50rem'
); });
dialogRef dialogRef
.afterClosed() .afterClosed()

5
apps/client/src/app/components/login-with-access-token-dialog/interfaces/interfaces.ts

@ -0,0 +1,5 @@
export interface LoginWithAccessTokenDialogParams {
accessToken: string;
hasPermissionToUseSocialLogin: boolean;
title: string;
}

4
apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.component.ts

@ -26,6 +26,8 @@ import { IonIcon } from '@ionic/angular/standalone';
import { addIcons } from 'ionicons'; import { addIcons } from 'ionicons';
import { eyeOffOutline, eyeOutline } from 'ionicons/icons'; import { eyeOffOutline, eyeOutline } from 'ionicons/icons';
import { LoginWithAccessTokenDialogParams } from './interfaces/interfaces';
@Component({ @Component({
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
imports: [ imports: [
@ -51,7 +53,7 @@ export class GfLoginWithAccessTokenDialogComponent {
public isAccessTokenHidden = true; public isAccessTokenHidden = true;
public constructor( public constructor(
@Inject(MAT_DIALOG_DATA) public data: any, @Inject(MAT_DIALOG_DATA) public data: LoginWithAccessTokenDialogParams,
public dialogRef: MatDialogRef<GfLoginWithAccessTokenDialogComponent>, public dialogRef: MatDialogRef<GfLoginWithAccessTokenDialogComponent>,
private internetIdentityService: InternetIdentityService, private internetIdentityService: InternetIdentityService,
private router: Router, private router: Router,

7
apps/client/src/app/components/rule/rule.component.ts

@ -79,13 +79,16 @@ export class GfRuleComponent implements OnInit {
} }
public onCustomizeRule(rule: PortfolioReportRule) { public onCustomizeRule(rule: PortfolioReportRule) {
const dialogRef = this.dialog.open(GfRuleSettingsDialogComponent, { const dialogRef = this.dialog.open<
GfRuleSettingsDialogComponent,
RuleSettingsDialogParams
>(GfRuleSettingsDialogComponent, {
data: { data: {
rule, rule,
categoryName: this.categoryName, categoryName: this.categoryName,
locale: this.locale, locale: this.locale,
settings: this.settings settings: this.settings
} as RuleSettingsDialogParams, },
width: this.deviceType === 'mobile' ? '100vw' : '50rem' width: this.deviceType === 'mobile' ? '100vw' : '50rem'
}); });

15
apps/client/src/app/components/user-account-access/user-account-access.component.ts

@ -36,6 +36,7 @@ import { EMPTY, Subject } from 'rxjs';
import { catchError, takeUntil } from 'rxjs/operators'; import { catchError, takeUntil } from 'rxjs/operators';
import { GfCreateOrUpdateAccessDialogComponent } from './create-or-update-access-dialog/create-or-update-access-dialog.component'; import { GfCreateOrUpdateAccessDialogComponent } from './create-or-update-access-dialog/create-or-update-access-dialog.component';
import { CreateOrUpdateAccessDialogParams } from './create-or-update-access-dialog/interfaces/interfaces';
@Component({ @Component({
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
@ -195,10 +196,15 @@ export class GfUserAccountAccessComponent implements OnDestroy, OnInit {
} }
private openCreateAccessDialog() { private openCreateAccessDialog() {
const dialogRef = this.dialog.open(GfCreateOrUpdateAccessDialogComponent, { const dialogRef = this.dialog.open<
GfCreateOrUpdateAccessDialogComponent,
CreateOrUpdateAccessDialogParams
>(GfCreateOrUpdateAccessDialogComponent, {
data: { data: {
access: { access: {
alias: '', alias: '',
grantee: null,
id: null,
permissions: ['READ_RESTRICTED'], permissions: ['READ_RESTRICTED'],
type: 'PRIVATE' type: 'PRIVATE'
} }
@ -227,12 +233,15 @@ export class GfUserAccountAccessComponent implements OnDestroy, OnInit {
return; return;
} }
const dialogRef = this.dialog.open(GfCreateOrUpdateAccessDialogComponent, { const dialogRef = this.dialog.open<
GfCreateOrUpdateAccessDialogComponent,
CreateOrUpdateAccessDialogParams
>(GfCreateOrUpdateAccessDialogComponent, {
data: { data: {
access: { access: {
alias: access.alias, alias: access.alias,
id: access.id,
grantee: access.grantee === 'Public' ? null : access.grantee, grantee: access.grantee === 'Public' ? null : access.grantee,
id: access.id,
permissions: access.permissions, permissions: access.permissions,
settings: access.settings, settings: access.settings,
type: access.type type: access.type

24
apps/client/src/app/pages/about/overview/about-overview-page.html

@ -175,7 +175,7 @@
</div> </div>
</div> </div>
<div class="row"> <div class="mb-5 row">
<div <div
class="col-md-6 col-xs-12 my-2" class="col-md-6 col-xs-12 my-2"
[ngClass]="{ 'offset-md-3': hasPermissionForSubscription === false }" [ngClass]="{ 'offset-md-3': hasPermissionForSubscription === false }"
@ -201,4 +201,26 @@
</div> </div>
} }
</div> </div>
<div class="row">
<div class="col-12">
<h2 class="h4 mb-3">Sponsors</h2>
<div class="text-center">
<small>Browser testing via</small>
<br />
<a
href="https://www.lambdatest.com?utm_medium=sponsor&utm_source=ghostfolio"
target="_blank"
title="LambdaTest - AI Powered Testing Tool"
>
<img
alt="LambdaTest Logo"
height="45"
src="https://www.lambdatest.com/blue-logo.png"
width="250"
/>
</a>
</div>
</div>
</div>
</div> </div>

25
apps/client/src/app/pages/accounts/accounts-page.component.ts

@ -23,6 +23,8 @@ import { EMPTY, Subject, Subscription } from 'rxjs';
import { catchError, takeUntil } from 'rxjs/operators'; import { catchError, takeUntil } from 'rxjs/operators';
import { GfCreateOrUpdateAccountDialogComponent } from './create-or-update-account-dialog/create-or-update-account-dialog.component'; import { GfCreateOrUpdateAccountDialogComponent } from './create-or-update-account-dialog/create-or-update-account-dialog.component';
import { CreateOrUpdateAccountDialogParams } from './create-or-update-account-dialog/interfaces/interfaces';
import { TransferBalanceDialogParams } from './transfer-balance/interfaces/interfaces';
import { GfTransferBalanceDialogComponent } from './transfer-balance/transfer-balance-dialog.component'; import { GfTransferBalanceDialogComponent } from './transfer-balance/transfer-balance-dialog.component';
@Component({ @Component({
@ -179,7 +181,10 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit {
name, name,
platformId platformId
}: AccountModel) { }: AccountModel) {
const dialogRef = this.dialog.open(GfCreateOrUpdateAccountDialogComponent, { const dialogRef = this.dialog.open<
GfCreateOrUpdateAccountDialogComponent,
CreateOrUpdateAccountDialogParams
>(GfCreateOrUpdateAccountDialogComponent, {
data: { data: {
account: { account: {
balance, balance,
@ -227,7 +232,10 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit {
} }
private openAccountDetailDialog(aAccountId: string) { private openAccountDetailDialog(aAccountId: string) {
const dialogRef = this.dialog.open(GfAccountDetailDialogComponent, { const dialogRef = this.dialog.open<
GfAccountDetailDialogComponent,
AccountDetailDialogParams
>(GfAccountDetailDialogComponent, {
autoFocus: false, autoFocus: false,
data: { data: {
accountId: aAccountId, accountId: aAccountId,
@ -237,7 +245,7 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit {
!this.hasImpersonationId && !this.hasImpersonationId &&
hasPermission(this.user?.permissions, permissions.createOrder) && hasPermission(this.user?.permissions, permissions.createOrder) &&
!this.user?.settings?.isRestrictedView !this.user?.settings?.isRestrictedView
} as AccountDetailDialogParams, },
height: this.deviceType === 'mobile' ? '98vh' : '80vh', height: this.deviceType === 'mobile' ? '98vh' : '80vh',
width: this.deviceType === 'mobile' ? '100vw' : '50rem' width: this.deviceType === 'mobile' ? '100vw' : '50rem'
}); });
@ -253,12 +261,16 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit {
} }
private openCreateAccountDialog() { private openCreateAccountDialog() {
const dialogRef = this.dialog.open(GfCreateOrUpdateAccountDialogComponent, { const dialogRef = this.dialog.open<
GfCreateOrUpdateAccountDialogComponent,
CreateOrUpdateAccountDialogParams
>(GfCreateOrUpdateAccountDialogComponent, {
data: { data: {
account: { account: {
balance: 0, balance: 0,
comment: null, comment: null,
currency: this.user?.settings?.baseCurrency, currency: this.user?.settings?.baseCurrency,
id: null,
isExcluded: false, isExcluded: false,
name: null, name: null,
platformId: null platformId: null
@ -295,7 +307,10 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit {
} }
private openTransferBalanceDialog() { private openTransferBalanceDialog() {
const dialogRef = this.dialog.open(GfTransferBalanceDialogComponent, { const dialogRef = this.dialog.open<
GfTransferBalanceDialogComponent,
TransferBalanceDialogParams
>(GfTransferBalanceDialogComponent, {
data: { data: {
accounts: this.accounts accounts: this.accounts
}, },

2
apps/client/src/app/pages/accounts/create-or-update-account-dialog/interfaces/interfaces.ts

@ -1,5 +1,5 @@
import { Account } from '@prisma/client'; import { Account } from '@prisma/client';
export interface CreateOrUpdateAccountDialogParams { export interface CreateOrUpdateAccountDialogParams {
account: Account; account: Omit<Account, 'createdAt' | 'updatedAt' | 'userId'>;
} }

10
apps/client/src/app/pages/home/home-page.component.ts

@ -16,11 +16,11 @@ import { RouterModule } from '@angular/router';
import { IonIcon } from '@ionic/angular/standalone'; import { IonIcon } from '@ionic/angular/standalone';
import { addIcons } from 'ionicons'; import { addIcons } from 'ionicons';
import { import {
albumsOutline,
analyticsOutline, analyticsOutline,
bookmarkOutline, bookmarkOutline,
newspaperOutline, newspaperOutline,
readerOutline, readerOutline
walletOutline
} from 'ionicons/icons'; } from 'ionicons/icons';
import { DeviceDetectorService } from 'ngx-device-detector'; import { DeviceDetectorService } from 'ngx-device-detector';
import { Subject } from 'rxjs'; import { Subject } from 'rxjs';
@ -61,7 +61,7 @@ export class GfHomePageComponent implements OnDestroy, OnInit {
routerLink: internalRoutes.home.routerLink routerLink: internalRoutes.home.routerLink
}, },
{ {
iconName: 'wallet-outline', iconName: 'albums-outline',
label: internalRoutes.home.subRoutes.holdings.title, label: internalRoutes.home.subRoutes.holdings.title,
routerLink: internalRoutes.home.subRoutes.holdings.routerLink routerLink: internalRoutes.home.subRoutes.holdings.routerLink
}, },
@ -97,11 +97,11 @@ export class GfHomePageComponent implements OnDestroy, OnInit {
}); });
addIcons({ addIcons({
albumsOutline,
analyticsOutline, analyticsOutline,
bookmarkOutline, bookmarkOutline,
newspaperOutline, newspaperOutline,
readerOutline, readerOutline
walletOutline
}); });
} }

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

@ -28,6 +28,7 @@ import { Subject, Subscription } from 'rxjs';
import { takeUntil } from 'rxjs/operators'; import { takeUntil } from 'rxjs/operators';
import { GfCreateOrUpdateActivityDialogComponent } from './create-or-update-activity-dialog/create-or-update-activity-dialog.component'; import { GfCreateOrUpdateActivityDialogComponent } from './create-or-update-activity-dialog/create-or-update-activity-dialog.component';
import { CreateOrUpdateActivityDialogParams } from './create-or-update-activity-dialog/interfaces/interfaces';
import { GfImportActivitiesDialogComponent } from './import-activities-dialog/import-activities-dialog.component'; import { GfImportActivitiesDialogComponent } from './import-activities-dialog/import-activities-dialog.component';
import { ImportActivitiesDialogParams } from './import-activities-dialog/interfaces/interfaces'; import { ImportActivitiesDialogParams } from './import-activities-dialog/interfaces/interfaces';
@ -245,11 +246,14 @@ export class GfActivitiesPageComponent implements OnDestroy, OnInit {
} }
public onImport() { public onImport() {
const dialogRef = this.dialog.open(GfImportActivitiesDialogComponent, { const dialogRef = this.dialog.open<
GfImportActivitiesDialogComponent,
ImportActivitiesDialogParams
>(GfImportActivitiesDialogComponent, {
data: { data: {
deviceType: this.deviceType, deviceType: this.deviceType,
user: this.user user: this.user
} as ImportActivitiesDialogParams, },
height: this.deviceType === 'mobile' ? '98vh' : undefined, height: this.deviceType === 'mobile' ? '98vh' : undefined,
width: this.deviceType === 'mobile' ? '100vw' : '50rem' width: this.deviceType === 'mobile' ? '100vw' : '50rem'
}); });
@ -268,12 +272,15 @@ export class GfActivitiesPageComponent implements OnDestroy, OnInit {
} }
public onImportDividends() { public onImportDividends() {
const dialogRef = this.dialog.open(GfImportActivitiesDialogComponent, { const dialogRef = this.dialog.open<
GfImportActivitiesDialogComponent,
ImportActivitiesDialogParams
>(GfImportActivitiesDialogComponent, {
data: { data: {
activityTypes: ['DIVIDEND'], activityTypes: ['DIVIDEND'],
deviceType: this.deviceType, deviceType: this.deviceType,
user: this.user user: this.user
} as ImportActivitiesDialogParams, },
height: this.deviceType === 'mobile' ? '98vh' : undefined, height: this.deviceType === 'mobile' ? '98vh' : undefined,
width: this.deviceType === 'mobile' ? '100vw' : '50rem' width: this.deviceType === 'mobile' ? '100vw' : '50rem'
}); });
@ -306,18 +313,18 @@ export class GfActivitiesPageComponent implements OnDestroy, OnInit {
} }
public openUpdateActivityDialog(aActivity: Activity) { public openUpdateActivityDialog(aActivity: Activity) {
const dialogRef = this.dialog.open( const dialogRef = this.dialog.open<
GfCreateOrUpdateActivityDialogComponent, GfCreateOrUpdateActivityDialogComponent,
{ CreateOrUpdateActivityDialogParams
data: { >(GfCreateOrUpdateActivityDialogComponent, {
activity: aActivity, data: {
accounts: this.user?.accounts, activity: aActivity,
user: this.user accounts: this.user?.accounts,
}, user: this.user
height: this.deviceType === 'mobile' ? '98vh' : '80vh', },
width: this.deviceType === 'mobile' ? '100vw' : '50rem' height: this.deviceType === 'mobile' ? '98vh' : '80vh',
} width: this.deviceType === 'mobile' ? '100vw' : '50rem'
); });
dialogRef dialogRef
.afterClosed() .afterClosed()
@ -350,26 +357,26 @@ export class GfActivitiesPageComponent implements OnDestroy, OnInit {
.subscribe((user) => { .subscribe((user) => {
this.updateUser(user); this.updateUser(user);
const dialogRef = this.dialog.open( const dialogRef = this.dialog.open<
GfCreateOrUpdateActivityDialogComponent, GfCreateOrUpdateActivityDialogComponent,
{ CreateOrUpdateActivityDialogParams
data: { >(GfCreateOrUpdateActivityDialogComponent, {
accounts: this.user?.accounts, data: {
activity: { accounts: this.user?.accounts,
...aActivity, activity: {
accountId: aActivity?.accountId, ...aActivity,
date: new Date(), accountId: aActivity?.accountId,
id: null, date: new Date(),
fee: 0, id: null,
type: aActivity?.type ?? 'BUY', fee: 0,
unitPrice: null type: aActivity?.type ?? 'BUY',
}, unitPrice: null
user: this.user
}, },
height: this.deviceType === 'mobile' ? '98vh' : '80vh', user: this.user
width: this.deviceType === 'mobile' ? '100vw' : '50rem' },
} height: this.deviceType === 'mobile' ? '98vh' : '80vh',
); width: this.deviceType === 'mobile' ? '100vw' : '50rem'
});
dialogRef dialogRef
.afterClosed() .afterClosed()

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

@ -4,7 +4,6 @@ import { User } from '@ghostfolio/common/interfaces';
import { Account } from '@prisma/client'; import { Account } from '@prisma/client';
export interface CreateOrUpdateActivityDialogParams { export interface CreateOrUpdateActivityDialogParams {
accountId: string;
accounts: Account[]; accounts: Account[];
activity: Activity; activity: Activity;
user: User; user: User;

2
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/interfaces/interfaces.ts

@ -3,7 +3,7 @@ import { User } from '@ghostfolio/common/interfaces';
import { Type } from '@prisma/client'; import { Type } from '@prisma/client';
export interface ImportActivitiesDialogParams { export interface ImportActivitiesDialogParams {
activityTypes: Type[]; activityTypes?: Type[];
deviceType: string; deviceType: string;
user: User; user: User;
} }

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

@ -558,7 +558,10 @@ export class GfAllocationsPageComponent implements OnDestroy, OnInit {
} }
private openAccountDetailDialog(aAccountId: string) { private openAccountDetailDialog(aAccountId: string) {
const dialogRef = this.dialog.open(GfAccountDetailDialogComponent, { const dialogRef = this.dialog.open<
GfAccountDetailDialogComponent,
AccountDetailDialogParams
>(GfAccountDetailDialogComponent, {
autoFocus: false, autoFocus: false,
data: { data: {
accountId: aAccountId, accountId: aAccountId,
@ -568,7 +571,7 @@ export class GfAllocationsPageComponent implements OnDestroy, OnInit {
!this.hasImpersonationId && !this.hasImpersonationId &&
hasPermission(this.user?.permissions, permissions.createOrder) && hasPermission(this.user?.permissions, permissions.createOrder) &&
!this.user?.settings?.isRestrictedView !this.user?.settings?.isRestrictedView
} as AccountDetailDialogParams, },
height: this.deviceType === 'mobile' ? '98vh' : '80vh', height: this.deviceType === 'mobile' ? '98vh' : '80vh',
width: this.deviceType === 'mobile' ? '100vw' : '50rem' width: this.deviceType === 'mobile' ? '100vw' : '50rem'
}); });

22
apps/client/src/app/pages/register/register-page.component.ts

@ -84,18 +84,18 @@ export class GfRegisterPageComponent implements OnDestroy, OnInit {
} }
public openShowAccessTokenDialog() { public openShowAccessTokenDialog() {
const dialogRef = this.dialog.open( const dialogRef = this.dialog.open<
GfUserAccountRegistrationDialogComponent, GfUserAccountRegistrationDialogComponent,
{ UserAccountRegistrationDialogParams
data: { >(GfUserAccountRegistrationDialogComponent, {
deviceType: this.deviceType, data: {
needsToAcceptTermsOfService: this.hasPermissionForSubscription deviceType: this.deviceType,
} as UserAccountRegistrationDialogParams, needsToAcceptTermsOfService: this.hasPermissionForSubscription
disableClose: true, },
height: this.deviceType === 'mobile' ? '98vh' : undefined, disableClose: true,
width: this.deviceType === 'mobile' ? '100vw' : '30rem' height: this.deviceType === 'mobile' ? '98vh' : undefined,
} width: this.deviceType === 'mobile' ? '100vw' : '30rem'
); });
dialogRef dialogRef
.afterClosed() .afterClosed()

18
apps/client/src/app/pages/resources/glossary/resources-glossary.component.html

@ -5,7 +5,7 @@
<div> <div>
<div class="mb-4 media"> <div class="mb-4 media">
<div class="media-body"> <div class="media-body">
<h3 class="h5 mt-0">Buy and Hold</h3> <h2 class="h5 mb-1 mt-0">Buy and Hold</h2>
<div class="mb-1"> <div class="mb-1">
Buy and hold is a passive investment strategy where you buy assets Buy and hold is a passive investment strategy where you buy assets
and hold them for a long period regardless of fluctuations in the and hold them for a long period regardless of fluctuations in the
@ -22,7 +22,7 @@
</div> </div>
<div class="mb-4 media"> <div class="mb-4 media">
<div class="media-body"> <div class="media-body">
<h3 class="h5 mt-0">Deflation</h3> <h2 class="h5 mb-1 mt-0">Deflation</h2>
<div class="mb-1"> <div class="mb-1">
Deflation is a decrease of the general price level for goods and Deflation is a decrease of the general price level for goods and
services in an economy over a period of time. services in an economy over a period of time.
@ -38,7 +38,7 @@
</div> </div>
<div class="mb-4 media"> <div class="mb-4 media">
<div class="media-body"> <div class="media-body">
<h3 class="h5 mt-0">Dollar-Cost Averaging (DCA)</h3> <h2 class="h5 mb-1 mt-0">Dollar-Cost Averaging (DCA)</h2>
<div class="mb-1"> <div class="mb-1">
Dollar-cost averaging is an investment strategy where you split Dollar-cost averaging is an investment strategy where you split
the total amount to be invested across periodic purchases of a the total amount to be invested across periodic purchases of a
@ -56,7 +56,7 @@
</div> </div>
<div class="mb-4 media"> <div class="mb-4 media">
<div class="media-body"> <div class="media-body">
<h3 class="h5 mt-0">Financial Independence</h3> <h2 class="h5 mb-1 mt-0">Financial Independence</h2>
<div class="mb-1"> <div class="mb-1">
Financial independence is the status of having enough income, for Financial independence is the status of having enough income, for
example with a passive income like dividends, to cover your living example with a passive income like dividends, to cover your living
@ -73,7 +73,7 @@
</div> </div>
<div class="mb-4 media"> <div class="mb-4 media">
<div class="media-body"> <div class="media-body">
<h3 class="h5 mt-0">FIRE</h3> <h2 class="h5 mb-1 mt-0">FIRE</h2>
<div class="mb-1"> <div class="mb-1">
FIRE is a movement that promotes saving and investing to achieve FIRE is a movement that promotes saving and investing to achieve
financial independence and early retirement. financial independence and early retirement.
@ -85,7 +85,7 @@
</div> </div>
<div class="mb-4 media"> <div class="mb-4 media">
<div class="media-body"> <div class="media-body">
<h3 class="h5 mt-0">Inflation</h3> <h2 class="h5 mb-1 mt-0">Inflation</h2>
<div class="mb-1"> <div class="mb-1">
Inflation is an increase of the general price level for goods and Inflation is an increase of the general price level for goods and
services in an economy over a period of time. services in an economy over a period of time.
@ -102,7 +102,7 @@
@if (hasPermissionForSubscription) { @if (hasPermissionForSubscription) {
<div class="mb-4 media"> <div class="mb-4 media">
<div class="media-body"> <div class="media-body">
<h3 class="h5 mt-0">Personal Finance Tools</h3> <h2 class="h5 mb-1 mt-0">Personal Finance Tools</h2>
<div class="mb-1"> <div class="mb-1">
Personal finance tools are software applications that help Personal finance tools are software applications that help
manage your money, track expenses, set budgets, monitor manage your money, track expenses, set budgets, monitor
@ -118,7 +118,7 @@
} }
<div class="mb-4 media"> <div class="mb-4 media">
<div class="media-body"> <div class="media-body">
<h3 class="h5 mt-0">Stagflation</h3> <h2 class="h5 mb-1 mt-0">Stagflation</h2>
<div class="mb-1"> <div class="mb-1">
Stagflation describes a situation in which there is a stagnant Stagflation describes a situation in which there is a stagnant
economy with high unemployment and high inflation. economy with high unemployment and high inflation.
@ -134,7 +134,7 @@
</div> </div>
<div class="mb-4 media"> <div class="mb-4 media">
<div class="media-body"> <div class="media-body">
<h3 class="h5 mt-0">Stealth Wealth</h3> <h2 class="h5 mb-1 mt-0">Stealth Wealth</h2>
<div class="mb-1"> <div class="mb-1">
Stealth wealth is a lifestyle choice where you don’t openly show Stealth wealth is a lifestyle choice where you don’t openly show
off your wealth, but instead live quietly to maintain privacy and off your wealth, but instead live quietly to maintain privacy and

4
apps/client/src/app/pages/resources/guides/resources-guides.component.html

@ -5,7 +5,7 @@
<div class="mb-5"> <div class="mb-5">
<div class="mb-4 media"> <div class="mb-4 media">
<div class="media-body"> <div class="media-body">
<h3 class="h5 mt-0">Boringly Getting Rich</h3> <h2 class="h5 mb-1 mt-0">Boringly Getting Rich</h2>
<div class="mb-1"> <div class="mb-1">
The <i>Boringly Getting Rich</i> guide supports you to get started The <i>Boringly Getting Rich</i> guide supports you to get started
with investing. It introduces a strategy utilizing a broadly with investing. It introduces a strategy utilizing a broadly
@ -21,7 +21,7 @@
</div> </div>
<div class="mb-4 media"> <div class="mb-4 media">
<div class="media-body"> <div class="media-body">
<h3 class="h5 mt-0">How do I get my finances in order?</h3> <h2 class="h5 mb-1 mt-0">How do I get my finances in order?</h2>
<div class="mb-1"> <div class="mb-1">
Before you can think of long-term investing, you have to get your Before you can think of long-term investing, you have to get your
finances in order. Learn how you can reach your financial goals finances in order. Learn how you can reach your financial goals

8
apps/client/src/app/pages/resources/markets/resources-markets.component.html

@ -3,7 +3,7 @@
<div class="mb-5"> <div class="mb-5">
<div class="mb-4 media"> <div class="mb-4 media">
<div class="media-body"> <div class="media-body">
<h3 class="h5 mt-0">Crypto Coins Heatmap</h3> <h2 class="h5 mb-1 mt-0">Crypto Coins Heatmap</h2>
<div class="mb-1"> <div class="mb-1">
With the <i>Crypto Coins Heatmap</i> you can track the daily market With the <i>Crypto Coins Heatmap</i> you can track the daily market
movements of cryptocurrencies as a visual snapshot. movements of cryptocurrencies as a visual snapshot.
@ -17,7 +17,7 @@
</div> </div>
<div class="mb-4 media"> <div class="mb-4 media">
<div class="media-body"> <div class="media-body">
<h3 class="h5 mt-0">Fear & Greed Index</h3> <h2 class="h5 mb-1 mt-0">Fear & Greed Index</h2>
<div class="mb-1"> <div class="mb-1">
The fear and greed index was developed by <i>CNNMoney</i> to measure The fear and greed index was developed by <i>CNNMoney</i> to measure
the primary emotions (fear and greed) that influence how much the primary emotions (fear and greed) that influence how much
@ -32,7 +32,7 @@
</div> </div>
<div class="media"> <div class="media">
<div class="mb-4 media"> <div class="mb-4 media">
<h3 class="h5 mt-0">Inflation Chart</h3> <h2 class="h5 mb-1 mt-0">Inflation Chart</h2>
<div class="mb-1"> <div class="mb-1">
<i>Inflation Chart</i> helps you find the intrinsic value of stock <i>Inflation Chart</i> helps you find the intrinsic value of stock
markets, stock prices, goods and services by adjusting them to the markets, stock prices, goods and services by adjusting them to the
@ -48,7 +48,7 @@
</div> </div>
<div class="media"> <div class="media">
<div class="media-body"> <div class="media-body">
<h3 class="h5 mt-0">Stock Heatmap</h3> <h2 class="h5 mb-1 mt-0">Stock Heatmap</h2>
<div class="mb-1"> <div class="mb-1">
With the <i>Stock Heatmap</i> you can track the daily market movements With the <i>Stock Heatmap</i> you can track the daily market movements
of stocks as a visual snapshot. of stocks as a visual snapshot.

2
apps/client/src/app/pages/resources/overview/resources-overview.component.html

@ -5,7 +5,7 @@
<div class="overview-list"> <div class="overview-list">
@for (item of overviewItems; track item) { @for (item of overviewItems; track item) {
<div class="mb-4"> <div class="mb-4">
<h3 class="h5 mt-0">{{ item.title }}</h3> <h2 class="h5 mb-1 mt-0">{{ item.title }}</h2>
<p class="mb-1">{{ item.description }}</p> <p class="mb-1">{{ item.description }}</p>
<a [routerLink]="item.routerLink">Explore {{ item.title }} →</a> <a [routerLink]="item.routerLink">Explore {{ item.title }} →</a>
</div> </div>

6
apps/client/src/app/pages/zen/zen-page.component.ts

@ -8,7 +8,7 @@ import { MatTabsModule } from '@angular/material/tabs';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { IonIcon } from '@ionic/angular/standalone'; import { IonIcon } from '@ionic/angular/standalone';
import { addIcons } from 'ionicons'; import { addIcons } from 'ionicons';
import { analyticsOutline, walletOutline } from 'ionicons/icons'; import { albumsOutline, analyticsOutline } from 'ionicons/icons';
import { DeviceDetectorService } from 'ngx-device-detector'; import { DeviceDetectorService } from 'ngx-device-detector';
import { Subject } from 'rxjs'; import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators'; import { takeUntil } from 'rxjs/operators';
@ -43,7 +43,7 @@ export class GfZenPageComponent implements OnDestroy, OnInit {
routerLink: internalRoutes.zen.routerLink routerLink: internalRoutes.zen.routerLink
}, },
{ {
iconName: 'wallet-outline', iconName: 'albums-outline',
label: internalRoutes.zen.subRoutes.holdings.title, label: internalRoutes.zen.subRoutes.holdings.title,
routerLink: internalRoutes.zen.subRoutes.holdings.routerLink routerLink: internalRoutes.zen.subRoutes.holdings.routerLink
} }
@ -54,7 +54,7 @@ export class GfZenPageComponent implements OnDestroy, OnInit {
} }
}); });
addIcons({ analyticsOutline, walletOutline }); addIcons({ albumsOutline, analyticsOutline });
} }
public ngOnInit() { public ngOnInit() {

22
apps/client/src/app/services/user/user.service.ts

@ -116,18 +116,18 @@ export class UserService extends ObservableStore<UserStoreState> {
permissions.enableSubscriptionInterstitial permissions.enableSubscriptionInterstitial
) )
) { ) {
const dialogRef = this.dialog.open( const dialogRef = this.dialog.open<
GfSubscriptionInterstitialDialogComponent, GfSubscriptionInterstitialDialogComponent,
{ SubscriptionInterstitialDialogParams
autoFocus: false, >(GfSubscriptionInterstitialDialogComponent, {
data: { autoFocus: false,
user data: {
} as SubscriptionInterstitialDialogParams, user
disableClose: true, },
height: this.deviceType === 'mobile' ? '98vh' : '80vh', disableClose: true,
width: this.deviceType === 'mobile' ? '100vw' : '50rem' height: this.deviceType === 'mobile' ? '98vh' : '80vh',
} width: this.deviceType === 'mobile' ? '100vw' : '50rem'
); });
dialogRef dialogRef
.afterClosed() .afterClosed()

76
apps/client/src/locales/messages.ca.xlf

@ -1366,6 +1366,14 @@
<context context-type="linenumber">200</context> <context context-type="linenumber">200</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8119836022359386797" datatype="html">
<source>Activities</source>
<target state="new">Activities</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">61</context>
</context-group>
</trans-unit>
<trans-unit id="5487499696517396535" datatype="html"> <trans-unit id="5487499696517396535" datatype="html">
<source>Add Platform</source> <source>Add Platform</source>
<target state="translated">Afegeix Plataforma</target> <target state="translated">Afegeix Plataforma</target>
@ -1739,7 +1747,7 @@
<target state="translated">Informar d’un Problema amb les Dades</target> <target state="translated">Informar d’un Problema amb les Dades</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">452</context> <context context-type="linenumber">450</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8204176479746810612" datatype="html"> <trans-unit id="8204176479746810612" datatype="html">
@ -2409,10 +2417,6 @@
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context> <context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">252</context> <context context-type="linenumber">252</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">12</context>
</context-group>
</trans-unit> </trans-unit>
<trans-unit id="5369707274411995821" datatype="html"> <trans-unit id="5369707274411995821" datatype="html">
<source>Granted Access</source> <source>Granted Access</source>
@ -4451,6 +4455,14 @@
<context context-type="linenumber">91</context> <context context-type="linenumber">91</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1600023202562292052" datatype="html">
<source>Close Holding</source>
<target state="new">Close Holding</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">441</context>
</context-group>
</trans-unit>
<trans-unit id="1605678350626749943" datatype="html"> <trans-unit id="1605678350626749943" datatype="html">
<source>Absolute Asset Performance</source> <source>Absolute Asset Performance</source>
<target state="translated">Rendiment absolut dels actius</target> <target state="translated">Rendiment absolut dels actius</target>
@ -5112,6 +5124,14 @@
<context context-type="linenumber">210</context> <context context-type="linenumber">210</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1434671461968858301" datatype="html">
<source>User ID</source>
<target state="new">User ID</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">12</context>
</context-group>
</trans-unit>
<trans-unit id="1154843799824106777" datatype="html"> <trans-unit id="1154843799824106777" datatype="html">
<source>Free Plan</source> <source>Free Plan</source>
<target state="translated">Pla gratuït</target> <target state="translated">Pla gratuït</target>
@ -6565,7 +6585,7 @@
<target state="new">Inactive</target> <target state="new">Inactive</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">87</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2159130950882492111" datatype="html"> <trans-unit id="2159130950882492111" datatype="html">
@ -6668,6 +6688,14 @@
<context context-type="linenumber">11</context> <context context-type="linenumber">11</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2803298218425845065" datatype="html">
<source>Role</source>
<target state="new">Role</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">31</context>
</context-group>
</trans-unit>
<trans-unit id="2807800733729323332" datatype="html"> <trans-unit id="2807800733729323332" datatype="html">
<source>Yes</source> <source>Yes</source>
<target state="new">Yes</target> <target state="new">Yes</target>
@ -6679,6 +6707,10 @@
<trans-unit id="6574710269679413520" datatype="html"> <trans-unit id="6574710269679413520" datatype="html">
<source>Accounts</source> <source>Accounts</source>
<target state="new">Accounts</target> <target state="new">Accounts</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">51</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.html</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.html</context>
<context context-type="linenumber">84</context> <context context-type="linenumber">84</context>
@ -6972,6 +7004,14 @@
<context context-type="linenumber">293</context> <context context-type="linenumber">293</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7417020438124538834" datatype="html">
<source>Engagement per Day</source>
<target state="new">Engagement per Day</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">76</context>
</context-group>
</trans-unit>
<trans-unit id="7423212324650924366" datatype="html"> <trans-unit id="7423212324650924366" datatype="html">
<source>Guides</source> <source>Guides</source>
<target state="new">Guides</target> <target state="new">Guides</target>
@ -7110,6 +7150,14 @@
<context context-type="linenumber">167</context> <context context-type="linenumber">167</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8514765519764380399" datatype="html">
<source>Country</source>
<target state="new">Country</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">37</context>
</context-group>
</trans-unit>
<trans-unit id="8517109745758603034" datatype="html"> <trans-unit id="8517109745758603034" datatype="html">
<source>API Key</source> <source>API Key</source>
<target state="new">API Key</target> <target state="new">API Key</target>
@ -7258,6 +7306,14 @@
<context context-type="linenumber">234</context> <context context-type="linenumber">234</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8214324091109908102" datatype="html">
<source>API Requests Today</source>
<target state="new">API Requests Today</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">86</context>
</context-group>
</trans-unit>
<trans-unit id="8214660894894142610" datatype="html"> <trans-unit id="8214660894894142610" datatype="html">
<source>Default Market Price</source> <source>Default Market Price</source>
<target state="new">Default Market Price</target> <target state="new">Default Market Price</target>
@ -8128,7 +8184,7 @@
<target state="new">Manage Asset Profile</target> <target state="new">Manage Asset Profile</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">442</context> <context context-type="linenumber">465</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2978009302056542263" datatype="html"> <trans-unit id="2978009302056542263" datatype="html">
@ -8152,7 +8208,7 @@
<target state="new">Average Unit Price</target> <target state="new">Average Unit Price</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">113</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
@ -8543,12 +8599,12 @@
<context context-type="linenumber">128</context> <context context-type="linenumber">128</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="339860602695747533" datatype="html"> <trans-unit id="889243574476657449" datatype="html">
<source>Registration Date</source> <source>Registration Date</source>
<target state="new">Registration Date</target> <target state="new">Registration Date</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">22</context> <context context-type="linenumber">23</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5162138648470294706" datatype="html"> <trans-unit id="5162138648470294706" datatype="html">

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

@ -633,6 +633,14 @@
<context context-type="linenumber">200</context> <context context-type="linenumber">200</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8119836022359386797" datatype="html">
<source>Activities</source>
<target state="translated">Aktivitäten</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">61</context>
</context-group>
</trans-unit>
<trans-unit id="2817099043823177227" datatype="html"> <trans-unit id="2817099043823177227" datatype="html">
<source>Do you really want to delete this user?</source> <source>Do you really want to delete this user?</source>
<target state="translated">Möchtest du diesen Benutzer wirklich löschen?</target> <target state="translated">Möchtest du diesen Benutzer wirklich löschen?</target>
@ -982,7 +990,7 @@
<target state="translated">Datenfehler melden</target> <target state="translated">Datenfehler melden</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">452</context> <context context-type="linenumber">450</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8927080808898221200" datatype="html"> <trans-unit id="8927080808898221200" datatype="html">
@ -1280,10 +1288,6 @@
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context> <context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">252</context> <context context-type="linenumber">252</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">12</context>
</context-group>
</trans-unit> </trans-unit>
<trans-unit id="5369707274411995821" datatype="html"> <trans-unit id="5369707274411995821" datatype="html">
<source>Granted Access</source> <source>Granted Access</source>
@ -4313,6 +4317,14 @@
<context context-type="linenumber">210</context> <context context-type="linenumber">210</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1434671461968858301" datatype="html">
<source>User ID</source>
<target state="translated">Benutzer ID</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">12</context>
</context-group>
</trans-unit>
<trans-unit id="1154843799824106777" datatype="html"> <trans-unit id="1154843799824106777" datatype="html">
<source>Free Plan</source> <source>Free Plan</source>
<target state="translated">Kostenlose Nutzung</target> <target state="translated">Kostenlose Nutzung</target>
@ -5771,6 +5783,14 @@
<context context-type="linenumber">364</context> <context context-type="linenumber">364</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1600023202562292052" datatype="html">
<source>Close Holding</source>
<target state="translated">Position abschliessen</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">441</context>
</context-group>
</trans-unit>
<trans-unit id="1605678350626749943" datatype="html"> <trans-unit id="1605678350626749943" datatype="html">
<source>Absolute Asset Performance</source> <source>Absolute Asset Performance</source>
<target state="translated">Absolute Anlage Performance</target> <target state="translated">Absolute Anlage Performance</target>
@ -6589,7 +6609,7 @@
<target state="translated">Inaktiv</target> <target state="translated">Inaktiv</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">87</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2159130950882492111" datatype="html"> <trans-unit id="2159130950882492111" datatype="html">
@ -6692,6 +6712,14 @@
<context context-type="linenumber">11</context> <context context-type="linenumber">11</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2803298218425845065" datatype="html">
<source>Role</source>
<target state="translated">Rolle</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">31</context>
</context-group>
</trans-unit>
<trans-unit id="2807800733729323332" datatype="html"> <trans-unit id="2807800733729323332" datatype="html">
<source>Yes</source> <source>Yes</source>
<target state="translated">Ja</target> <target state="translated">Ja</target>
@ -6703,6 +6731,10 @@
<trans-unit id="6574710269679413520" datatype="html"> <trans-unit id="6574710269679413520" datatype="html">
<source>Accounts</source> <source>Accounts</source>
<target state="translated">Konten</target> <target state="translated">Konten</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">51</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.html</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.html</context>
<context context-type="linenumber">84</context> <context context-type="linenumber">84</context>
@ -6996,6 +7028,14 @@
<context context-type="linenumber">293</context> <context context-type="linenumber">293</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7417020438124538834" datatype="html">
<source>Engagement per Day</source>
<target state="translated">Engagement pro Tag</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">76</context>
</context-group>
</trans-unit>
<trans-unit id="7423212324650924366" datatype="html"> <trans-unit id="7423212324650924366" datatype="html">
<source>Guides</source> <source>Guides</source>
<target state="translated">Ratgeber</target> <target state="translated">Ratgeber</target>
@ -7134,6 +7174,14 @@
<context context-type="linenumber">167</context> <context context-type="linenumber">167</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8514765519764380399" datatype="html">
<source>Country</source>
<target state="translated">Land</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">37</context>
</context-group>
</trans-unit>
<trans-unit id="8517109745758603034" datatype="html"> <trans-unit id="8517109745758603034" datatype="html">
<source>API Key</source> <source>API Key</source>
<target state="translated">API-Schlüssel</target> <target state="translated">API-Schlüssel</target>
@ -7282,6 +7330,14 @@
<context context-type="linenumber">234</context> <context context-type="linenumber">234</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8214324091109908102" datatype="html">
<source>API Requests Today</source>
<target state="translated">Heutige API Anfragen</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">86</context>
</context-group>
</trans-unit>
<trans-unit id="8214660894894142610" datatype="html"> <trans-unit id="8214660894894142610" datatype="html">
<source>Default Market Price</source> <source>Default Market Price</source>
<target state="translated">Standardmarktpreis</target> <target state="translated">Standardmarktpreis</target>
@ -8128,7 +8184,7 @@
<target state="translated">Anlageprofil verwalten</target> <target state="translated">Anlageprofil verwalten</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">442</context> <context context-type="linenumber">465</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2978009302056542263" datatype="html"> <trans-unit id="2978009302056542263" datatype="html">
@ -8152,7 +8208,7 @@
<target state="translated">Ø Preis pro Einheit</target> <target state="translated">Ø Preis pro Einheit</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">113</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
@ -8543,12 +8599,12 @@
<context context-type="linenumber">128</context> <context context-type="linenumber">128</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="339860602695747533" datatype="html"> <trans-unit id="889243574476657449" datatype="html">
<source>Registration Date</source> <source>Registration Date</source>
<target state="translated">Registrierungsdatum</target> <target state="translated">Registrierungsdatum</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">22</context> <context context-type="linenumber">23</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5162138648470294706" datatype="html"> <trans-unit id="5162138648470294706" datatype="html">

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

@ -618,6 +618,14 @@
<context context-type="linenumber">200</context> <context context-type="linenumber">200</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8119836022359386797" datatype="html">
<source>Activities</source>
<target state="new">Activities</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">61</context>
</context-group>
</trans-unit>
<trans-unit id="2817099043823177227" datatype="html"> <trans-unit id="2817099043823177227" datatype="html">
<source>Do you really want to delete this user?</source> <source>Do you really want to delete this user?</source>
<target state="translated">¿Estás seguro de eliminar este usuario?</target> <target state="translated">¿Estás seguro de eliminar este usuario?</target>
@ -967,7 +975,7 @@
<target state="translated">Reporta un anomalía de los datos</target> <target state="translated">Reporta un anomalía de los datos</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">452</context> <context context-type="linenumber">450</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8927080808898221200" datatype="html"> <trans-unit id="8927080808898221200" datatype="html">
@ -1265,10 +1273,6 @@
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context> <context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">252</context> <context context-type="linenumber">252</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">12</context>
</context-group>
</trans-unit> </trans-unit>
<trans-unit id="5369707274411995821" datatype="html"> <trans-unit id="5369707274411995821" datatype="html">
<source>Granted Access</source> <source>Granted Access</source>
@ -4290,6 +4294,14 @@
<context context-type="linenumber">210</context> <context context-type="linenumber">210</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1434671461968858301" datatype="html">
<source>User ID</source>
<target state="new">User ID</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">12</context>
</context-group>
</trans-unit>
<trans-unit id="1154843799824106777" datatype="html"> <trans-unit id="1154843799824106777" datatype="html">
<source>Free Plan</source> <source>Free Plan</source>
<target state="translated">Plan gratuito</target> <target state="translated">Plan gratuito</target>
@ -5748,6 +5760,14 @@
<context context-type="linenumber">364</context> <context context-type="linenumber">364</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1600023202562292052" datatype="html">
<source>Close Holding</source>
<target state="new">Close Holding</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">441</context>
</context-group>
</trans-unit>
<trans-unit id="1605678350626749943" datatype="html"> <trans-unit id="1605678350626749943" datatype="html">
<source>Absolute Asset Performance</source> <source>Absolute Asset Performance</source>
<target state="translated">Rendimiento absoluto de los activos</target> <target state="translated">Rendimiento absoluto de los activos</target>
@ -6566,7 +6586,7 @@
<target state="translated">Inactiva</target> <target state="translated">Inactiva</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">87</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2159130950882492111" datatype="html"> <trans-unit id="2159130950882492111" datatype="html">
@ -6669,6 +6689,14 @@
<context context-type="linenumber">11</context> <context context-type="linenumber">11</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2803298218425845065" datatype="html">
<source>Role</source>
<target state="new">Role</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">31</context>
</context-group>
</trans-unit>
<trans-unit id="2807800733729323332" datatype="html"> <trans-unit id="2807800733729323332" datatype="html">
<source>Yes</source> <source>Yes</source>
<target state="translated">Sí</target> <target state="translated">Sí</target>
@ -6680,6 +6708,10 @@
<trans-unit id="6574710269679413520" datatype="html"> <trans-unit id="6574710269679413520" datatype="html">
<source>Accounts</source> <source>Accounts</source>
<target state="new">Accounts</target> <target state="new">Accounts</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">51</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.html</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.html</context>
<context context-type="linenumber">84</context> <context context-type="linenumber">84</context>
@ -6973,6 +7005,14 @@
<context context-type="linenumber">293</context> <context context-type="linenumber">293</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7417020438124538834" datatype="html">
<source>Engagement per Day</source>
<target state="new">Engagement per Day</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">76</context>
</context-group>
</trans-unit>
<trans-unit id="7423212324650924366" datatype="html"> <trans-unit id="7423212324650924366" datatype="html">
<source>Guides</source> <source>Guides</source>
<target state="translated">Guías</target> <target state="translated">Guías</target>
@ -7111,6 +7151,14 @@
<context context-type="linenumber">167</context> <context context-type="linenumber">167</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8514765519764380399" datatype="html">
<source>Country</source>
<target state="new">Country</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">37</context>
</context-group>
</trans-unit>
<trans-unit id="8517109745758603034" datatype="html"> <trans-unit id="8517109745758603034" datatype="html">
<source>API Key</source> <source>API Key</source>
<target state="translated">Clave API</target> <target state="translated">Clave API</target>
@ -7259,6 +7307,14 @@
<context context-type="linenumber">234</context> <context context-type="linenumber">234</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8214324091109908102" datatype="html">
<source>API Requests Today</source>
<target state="new">API Requests Today</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">86</context>
</context-group>
</trans-unit>
<trans-unit id="8214660894894142610" datatype="html"> <trans-unit id="8214660894894142610" datatype="html">
<source>Default Market Price</source> <source>Default Market Price</source>
<target state="translated">Precio de mercado por defecto</target> <target state="translated">Precio de mercado por defecto</target>
@ -8129,7 +8185,7 @@
<target state="translated">Gestionar perfil de activo</target> <target state="translated">Gestionar perfil de activo</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">442</context> <context context-type="linenumber">465</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2978009302056542263" datatype="html"> <trans-unit id="2978009302056542263" datatype="html">
@ -8153,7 +8209,7 @@
<target state="translated">Precio medio por unidad</target> <target state="translated">Precio medio por unidad</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">113</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
@ -8544,12 +8600,12 @@
<context context-type="linenumber">128</context> <context context-type="linenumber">128</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="339860602695747533" datatype="html"> <trans-unit id="889243574476657449" datatype="html">
<source>Registration Date</source> <source>Registration Date</source>
<target state="new">Registration Date</target> <target state="new">Registration Date</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">22</context> <context context-type="linenumber">23</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5162138648470294706" datatype="html"> <trans-unit id="5162138648470294706" datatype="html">

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

@ -825,6 +825,14 @@
<context context-type="linenumber">200</context> <context context-type="linenumber">200</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8119836022359386797" datatype="html">
<source>Activities</source>
<target state="new">Activities</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">61</context>
</context-group>
</trans-unit>
<trans-unit id="2817099043823177227" datatype="html"> <trans-unit id="2817099043823177227" datatype="html">
<source>Do you really want to delete this user?</source> <source>Do you really want to delete this user?</source>
<target state="translated">Voulez-vous vraiment supprimer cet·te utilisateur·rice ?</target> <target state="translated">Voulez-vous vraiment supprimer cet·te utilisateur·rice ?</target>
@ -1254,7 +1262,7 @@
<target state="translated">Signaler une Erreur de Données</target> <target state="translated">Signaler une Erreur de Données</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">452</context> <context context-type="linenumber">450</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="6048892649018070225" datatype="html"> <trans-unit id="6048892649018070225" datatype="html">
@ -1612,10 +1620,6 @@
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context> <context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">252</context> <context context-type="linenumber">252</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">12</context>
</context-group>
</trans-unit> </trans-unit>
<trans-unit id="5369707274411995821" datatype="html"> <trans-unit id="5369707274411995821" datatype="html">
<source>Granted Access</source> <source>Granted Access</source>
@ -4289,6 +4293,14 @@
<context context-type="linenumber">210</context> <context context-type="linenumber">210</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1434671461968858301" datatype="html">
<source>User ID</source>
<target state="new">User ID</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">12</context>
</context-group>
</trans-unit>
<trans-unit id="1154843799824106777" datatype="html"> <trans-unit id="1154843799824106777" datatype="html">
<source>Free Plan</source> <source>Free Plan</source>
<target state="translated">Plan gratuit</target> <target state="translated">Plan gratuit</target>
@ -5747,6 +5759,14 @@
<context context-type="linenumber">364</context> <context context-type="linenumber">364</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1600023202562292052" datatype="html">
<source>Close Holding</source>
<target state="new">Close Holding</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">441</context>
</context-group>
</trans-unit>
<trans-unit id="1605678350626749943" datatype="html"> <trans-unit id="1605678350626749943" datatype="html">
<source>Absolute Asset Performance</source> <source>Absolute Asset Performance</source>
<target state="translated">Performance des Actifs en valeur absolue</target> <target state="translated">Performance des Actifs en valeur absolue</target>
@ -6565,7 +6585,7 @@
<target state="translated">Inactif</target> <target state="translated">Inactif</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">87</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2159130950882492111" datatype="html"> <trans-unit id="2159130950882492111" datatype="html">
@ -6668,6 +6688,14 @@
<context context-type="linenumber">11</context> <context context-type="linenumber">11</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2803298218425845065" datatype="html">
<source>Role</source>
<target state="new">Role</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">31</context>
</context-group>
</trans-unit>
<trans-unit id="2807800733729323332" datatype="html"> <trans-unit id="2807800733729323332" datatype="html">
<source>Yes</source> <source>Yes</source>
<target state="translated">Oui</target> <target state="translated">Oui</target>
@ -6679,6 +6707,10 @@
<trans-unit id="6574710269679413520" datatype="html"> <trans-unit id="6574710269679413520" datatype="html">
<source>Accounts</source> <source>Accounts</source>
<target state="new">Accounts</target> <target state="new">Accounts</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">51</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.html</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.html</context>
<context context-type="linenumber">84</context> <context context-type="linenumber">84</context>
@ -6972,6 +7004,14 @@
<context context-type="linenumber">293</context> <context context-type="linenumber">293</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7417020438124538834" datatype="html">
<source>Engagement per Day</source>
<target state="new">Engagement per Day</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">76</context>
</context-group>
</trans-unit>
<trans-unit id="7423212324650924366" datatype="html"> <trans-unit id="7423212324650924366" datatype="html">
<source>Guides</source> <source>Guides</source>
<target state="translated">Guides</target> <target state="translated">Guides</target>
@ -7110,6 +7150,14 @@
<context context-type="linenumber">167</context> <context context-type="linenumber">167</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8514765519764380399" datatype="html">
<source>Country</source>
<target state="new">Country</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">37</context>
</context-group>
</trans-unit>
<trans-unit id="8517109745758603034" datatype="html"> <trans-unit id="8517109745758603034" datatype="html">
<source>API Key</source> <source>API Key</source>
<target state="translated">Clé API</target> <target state="translated">Clé API</target>
@ -7258,6 +7306,14 @@
<context context-type="linenumber">234</context> <context context-type="linenumber">234</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8214324091109908102" datatype="html">
<source>API Requests Today</source>
<target state="new">API Requests Today</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">86</context>
</context-group>
</trans-unit>
<trans-unit id="8214660894894142610" datatype="html"> <trans-unit id="8214660894894142610" datatype="html">
<source>Default Market Price</source> <source>Default Market Price</source>
<target state="translated">Prix du marché par défaut</target> <target state="translated">Prix du marché par défaut</target>
@ -8128,7 +8184,7 @@
<target state="translated">Gérer le profil d’actif</target> <target state="translated">Gérer le profil d’actif</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">442</context> <context context-type="linenumber">465</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2978009302056542263" datatype="html"> <trans-unit id="2978009302056542263" datatype="html">
@ -8152,7 +8208,7 @@
<target state="new">Average Unit Price</target> <target state="new">Average Unit Price</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">113</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
@ -8543,12 +8599,12 @@
<context context-type="linenumber">128</context> <context context-type="linenumber">128</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="339860602695747533" datatype="html"> <trans-unit id="889243574476657449" datatype="html">
<source>Registration Date</source> <source>Registration Date</source>
<target state="new">Registration Date</target> <target state="new">Registration Date</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">22</context> <context context-type="linenumber">23</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5162138648470294706" datatype="html"> <trans-unit id="5162138648470294706" datatype="html">

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

@ -618,6 +618,14 @@
<context context-type="linenumber">200</context> <context context-type="linenumber">200</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8119836022359386797" datatype="html">
<source>Activities</source>
<target state="new">Activities</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">61</context>
</context-group>
</trans-unit>
<trans-unit id="2817099043823177227" datatype="html"> <trans-unit id="2817099043823177227" datatype="html">
<source>Do you really want to delete this user?</source> <source>Do you really want to delete this user?</source>
<target state="translated">Vuoi davvero eliminare questo utente?</target> <target state="translated">Vuoi davvero eliminare questo utente?</target>
@ -967,7 +975,7 @@
<target state="translated">Segnala un’anomalia dei dati</target> <target state="translated">Segnala un’anomalia dei dati</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">452</context> <context context-type="linenumber">450</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8927080808898221200" datatype="html"> <trans-unit id="8927080808898221200" datatype="html">
@ -1265,10 +1273,6 @@
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context> <context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">252</context> <context context-type="linenumber">252</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">12</context>
</context-group>
</trans-unit> </trans-unit>
<trans-unit id="5369707274411995821" datatype="html"> <trans-unit id="5369707274411995821" datatype="html">
<source>Granted Access</source> <source>Granted Access</source>
@ -4290,6 +4294,14 @@
<context context-type="linenumber">210</context> <context context-type="linenumber">210</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1434671461968858301" datatype="html">
<source>User ID</source>
<target state="new">User ID</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">12</context>
</context-group>
</trans-unit>
<trans-unit id="1154843799824106777" datatype="html"> <trans-unit id="1154843799824106777" datatype="html">
<source>Free Plan</source> <source>Free Plan</source>
<target state="translated">Piano gratuito</target> <target state="translated">Piano gratuito</target>
@ -5748,6 +5760,14 @@
<context context-type="linenumber">364</context> <context context-type="linenumber">364</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1600023202562292052" datatype="html">
<source>Close Holding</source>
<target state="new">Close Holding</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">441</context>
</context-group>
</trans-unit>
<trans-unit id="1605678350626749943" datatype="html"> <trans-unit id="1605678350626749943" datatype="html">
<source>Absolute Asset Performance</source> <source>Absolute Asset Performance</source>
<target state="translated">Rendimento assoluto dell’Asset</target> <target state="translated">Rendimento assoluto dell’Asset</target>
@ -6566,7 +6586,7 @@
<target state="translated">Inattivo</target> <target state="translated">Inattivo</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">87</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2159130950882492111" datatype="html"> <trans-unit id="2159130950882492111" datatype="html">
@ -6669,6 +6689,14 @@
<context context-type="linenumber">11</context> <context context-type="linenumber">11</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2803298218425845065" datatype="html">
<source>Role</source>
<target state="new">Role</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">31</context>
</context-group>
</trans-unit>
<trans-unit id="2807800733729323332" datatype="html"> <trans-unit id="2807800733729323332" datatype="html">
<source>Yes</source> <source>Yes</source>
<target state="translated">Si</target> <target state="translated">Si</target>
@ -6680,6 +6708,10 @@
<trans-unit id="6574710269679413520" datatype="html"> <trans-unit id="6574710269679413520" datatype="html">
<source>Accounts</source> <source>Accounts</source>
<target state="new">Accounts</target> <target state="new">Accounts</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">51</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.html</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.html</context>
<context context-type="linenumber">84</context> <context context-type="linenumber">84</context>
@ -6973,6 +7005,14 @@
<context context-type="linenumber">293</context> <context context-type="linenumber">293</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7417020438124538834" datatype="html">
<source>Engagement per Day</source>
<target state="new">Engagement per Day</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">76</context>
</context-group>
</trans-unit>
<trans-unit id="7423212324650924366" datatype="html"> <trans-unit id="7423212324650924366" datatype="html">
<source>Guides</source> <source>Guides</source>
<target state="translated">Guide</target> <target state="translated">Guide</target>
@ -7111,6 +7151,14 @@
<context context-type="linenumber">167</context> <context context-type="linenumber">167</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8514765519764380399" datatype="html">
<source>Country</source>
<target state="new">Country</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">37</context>
</context-group>
</trans-unit>
<trans-unit id="8517109745758603034" datatype="html"> <trans-unit id="8517109745758603034" datatype="html">
<source>API Key</source> <source>API Key</source>
<target state="translated">API Key</target> <target state="translated">API Key</target>
@ -7259,6 +7307,14 @@
<context context-type="linenumber">234</context> <context context-type="linenumber">234</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8214324091109908102" datatype="html">
<source>API Requests Today</source>
<target state="new">API Requests Today</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">86</context>
</context-group>
</trans-unit>
<trans-unit id="8214660894894142610" datatype="html"> <trans-unit id="8214660894894142610" datatype="html">
<source>Default Market Price</source> <source>Default Market Price</source>
<target state="translated">Prezzo di mercato predefinito</target> <target state="translated">Prezzo di mercato predefinito</target>
@ -8129,7 +8185,7 @@
<target state="translated">Gestisci profilo risorsa</target> <target state="translated">Gestisci profilo risorsa</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">442</context> <context context-type="linenumber">465</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2978009302056542263" datatype="html"> <trans-unit id="2978009302056542263" datatype="html">
@ -8153,7 +8209,7 @@
<target state="new">Average Unit Price</target> <target state="new">Average Unit Price</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">113</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
@ -8544,12 +8600,12 @@
<context context-type="linenumber">128</context> <context context-type="linenumber">128</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="339860602695747533" datatype="html"> <trans-unit id="889243574476657449" datatype="html">
<source>Registration Date</source> <source>Registration Date</source>
<target state="new">Registration Date</target> <target state="new">Registration Date</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">22</context> <context context-type="linenumber">23</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5162138648470294706" datatype="html"> <trans-unit id="5162138648470294706" datatype="html">

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

@ -617,6 +617,14 @@
<context context-type="linenumber">200</context> <context context-type="linenumber">200</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8119836022359386797" datatype="html">
<source>Activities</source>
<target state="new">Activities</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">61</context>
</context-group>
</trans-unit>
<trans-unit id="2817099043823177227" datatype="html"> <trans-unit id="2817099043823177227" datatype="html">
<source>Do you really want to delete this user?</source> <source>Do you really want to delete this user?</source>
<target state="translated">Wilt je deze gebruiker echt verwijderen?</target> <target state="translated">Wilt je deze gebruiker echt verwijderen?</target>
@ -966,7 +974,7 @@
<target state="translated">Gegevensstoring melden</target> <target state="translated">Gegevensstoring melden</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">452</context> <context context-type="linenumber">450</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8927080808898221200" datatype="html"> <trans-unit id="8927080808898221200" datatype="html">
@ -1264,10 +1272,6 @@
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context> <context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">252</context> <context context-type="linenumber">252</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">12</context>
</context-group>
</trans-unit> </trans-unit>
<trans-unit id="5369707274411995821" datatype="html"> <trans-unit id="5369707274411995821" datatype="html">
<source>Granted Access</source> <source>Granted Access</source>
@ -4289,6 +4293,14 @@
<context context-type="linenumber">210</context> <context context-type="linenumber">210</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1434671461968858301" datatype="html">
<source>User ID</source>
<target state="new">User ID</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">12</context>
</context-group>
</trans-unit>
<trans-unit id="1154843799824106777" datatype="html"> <trans-unit id="1154843799824106777" datatype="html">
<source>Free Plan</source> <source>Free Plan</source>
<target state="translated">Gratis abonnement</target> <target state="translated">Gratis abonnement</target>
@ -5747,6 +5759,14 @@
<context context-type="linenumber">364</context> <context context-type="linenumber">364</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1600023202562292052" datatype="html">
<source>Close Holding</source>
<target state="new">Close Holding</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">441</context>
</context-group>
</trans-unit>
<trans-unit id="1605678350626749943" datatype="html"> <trans-unit id="1605678350626749943" datatype="html">
<source>Absolute Asset Performance</source> <source>Absolute Asset Performance</source>
<target state="translated">Absolute Activaprestaties</target> <target state="translated">Absolute Activaprestaties</target>
@ -6565,7 +6585,7 @@
<target state="translated">Inactief</target> <target state="translated">Inactief</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">87</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2159130950882492111" datatype="html"> <trans-unit id="2159130950882492111" datatype="html">
@ -6668,6 +6688,14 @@
<context context-type="linenumber">11</context> <context context-type="linenumber">11</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2803298218425845065" datatype="html">
<source>Role</source>
<target state="new">Role</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">31</context>
</context-group>
</trans-unit>
<trans-unit id="2807800733729323332" datatype="html"> <trans-unit id="2807800733729323332" datatype="html">
<source>Yes</source> <source>Yes</source>
<target state="translated">Ja</target> <target state="translated">Ja</target>
@ -6679,6 +6707,10 @@
<trans-unit id="6574710269679413520" datatype="html"> <trans-unit id="6574710269679413520" datatype="html">
<source>Accounts</source> <source>Accounts</source>
<target state="new">Accounts</target> <target state="new">Accounts</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">51</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.html</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.html</context>
<context context-type="linenumber">84</context> <context context-type="linenumber">84</context>
@ -6972,6 +7004,14 @@
<context context-type="linenumber">293</context> <context context-type="linenumber">293</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7417020438124538834" datatype="html">
<source>Engagement per Day</source>
<target state="new">Engagement per Day</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">76</context>
</context-group>
</trans-unit>
<trans-unit id="7423212324650924366" datatype="html"> <trans-unit id="7423212324650924366" datatype="html">
<source>Guides</source> <source>Guides</source>
<target state="translated">Gidsen</target> <target state="translated">Gidsen</target>
@ -7110,6 +7150,14 @@
<context context-type="linenumber">167</context> <context context-type="linenumber">167</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8514765519764380399" datatype="html">
<source>Country</source>
<target state="new">Country</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">37</context>
</context-group>
</trans-unit>
<trans-unit id="8517109745758603034" datatype="html"> <trans-unit id="8517109745758603034" datatype="html">
<source>API Key</source> <source>API Key</source>
<target state="translated">API-sleutel</target> <target state="translated">API-sleutel</target>
@ -7258,6 +7306,14 @@
<context context-type="linenumber">234</context> <context context-type="linenumber">234</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8214324091109908102" datatype="html">
<source>API Requests Today</source>
<target state="new">API Requests Today</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">86</context>
</context-group>
</trans-unit>
<trans-unit id="8214660894894142610" datatype="html"> <trans-unit id="8214660894894142610" datatype="html">
<source>Default Market Price</source> <source>Default Market Price</source>
<target state="translated">Standaard Marktprijs</target> <target state="translated">Standaard Marktprijs</target>
@ -8128,7 +8184,7 @@
<target state="translated">Beheer activaprofiel</target> <target state="translated">Beheer activaprofiel</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">442</context> <context context-type="linenumber">465</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2978009302056542263" datatype="html"> <trans-unit id="2978009302056542263" datatype="html">
@ -8152,7 +8208,7 @@
<target state="translated">Gemiddelde eenheidsprijs</target> <target state="translated">Gemiddelde eenheidsprijs</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">113</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
@ -8543,12 +8599,12 @@
<context context-type="linenumber">128</context> <context context-type="linenumber">128</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="339860602695747533" datatype="html"> <trans-unit id="889243574476657449" datatype="html">
<source>Registration Date</source> <source>Registration Date</source>
<target state="new">Registration Date</target> <target state="new">Registration Date</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">22</context> <context context-type="linenumber">23</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5162138648470294706" datatype="html"> <trans-unit id="5162138648470294706" datatype="html">

76
apps/client/src/locales/messages.pl.xlf

@ -1166,6 +1166,14 @@
<context context-type="linenumber">200</context> <context context-type="linenumber">200</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8119836022359386797" datatype="html">
<source>Activities</source>
<target state="new">Activities</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">61</context>
</context-group>
</trans-unit>
<trans-unit id="5487499696517396535" datatype="html"> <trans-unit id="5487499696517396535" datatype="html">
<source>Add Platform</source> <source>Add Platform</source>
<target state="translated">Dodaj Platformę</target> <target state="translated">Dodaj Platformę</target>
@ -1875,7 +1883,7 @@
<target state="translated">Zgłoś Błąd Danych</target> <target state="translated">Zgłoś Błąd Danych</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">452</context> <context context-type="linenumber">450</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5451369123952965511" datatype="html"> <trans-unit id="5451369123952965511" datatype="html">
@ -2353,10 +2361,6 @@
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context> <context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">252</context> <context context-type="linenumber">252</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">12</context>
</context-group>
</trans-unit> </trans-unit>
<trans-unit id="8604673556809626581" datatype="html"> <trans-unit id="8604673556809626581" datatype="html">
<source>Export Data</source> <source>Export Data</source>
@ -4643,6 +4647,14 @@
<context context-type="linenumber">210</context> <context context-type="linenumber">210</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1434671461968858301" datatype="html">
<source>User ID</source>
<target state="new">User ID</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">12</context>
</context-group>
</trans-unit>
<trans-unit id="1154843799824106777" datatype="html"> <trans-unit id="1154843799824106777" datatype="html">
<source>Free Plan</source> <source>Free Plan</source>
<target state="translated">Plan Darmowy</target> <target state="translated">Plan Darmowy</target>
@ -5747,6 +5759,14 @@
<context context-type="linenumber">364</context> <context context-type="linenumber">364</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1600023202562292052" datatype="html">
<source>Close Holding</source>
<target state="new">Close Holding</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">441</context>
</context-group>
</trans-unit>
<trans-unit id="1605678350626749943" datatype="html"> <trans-unit id="1605678350626749943" datatype="html">
<source>Absolute Asset Performance</source> <source>Absolute Asset Performance</source>
<target state="translated">Łączny wynik aktywów</target> <target state="translated">Łączny wynik aktywów</target>
@ -6565,7 +6585,7 @@
<target state="translated">Nieaktywny</target> <target state="translated">Nieaktywny</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">87</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2159130950882492111" datatype="html"> <trans-unit id="2159130950882492111" datatype="html">
@ -6668,6 +6688,14 @@
<context context-type="linenumber">11</context> <context context-type="linenumber">11</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2803298218425845065" datatype="html">
<source>Role</source>
<target state="new">Role</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">31</context>
</context-group>
</trans-unit>
<trans-unit id="2807800733729323332" datatype="html"> <trans-unit id="2807800733729323332" datatype="html">
<source>Yes</source> <source>Yes</source>
<target state="translated">Tak</target> <target state="translated">Tak</target>
@ -6679,6 +6707,10 @@
<trans-unit id="6574710269679413520" datatype="html"> <trans-unit id="6574710269679413520" datatype="html">
<source>Accounts</source> <source>Accounts</source>
<target state="new">Accounts</target> <target state="new">Accounts</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">51</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.html</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.html</context>
<context context-type="linenumber">84</context> <context context-type="linenumber">84</context>
@ -6972,6 +7004,14 @@
<context context-type="linenumber">293</context> <context context-type="linenumber">293</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7417020438124538834" datatype="html">
<source>Engagement per Day</source>
<target state="new">Engagement per Day</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">76</context>
</context-group>
</trans-unit>
<trans-unit id="7423212324650924366" datatype="html"> <trans-unit id="7423212324650924366" datatype="html">
<source>Guides</source> <source>Guides</source>
<target state="translated">Poradniki</target> <target state="translated">Poradniki</target>
@ -7110,6 +7150,14 @@
<context context-type="linenumber">167</context> <context context-type="linenumber">167</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8514765519764380399" datatype="html">
<source>Country</source>
<target state="new">Country</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">37</context>
</context-group>
</trans-unit>
<trans-unit id="8517109745758603034" datatype="html"> <trans-unit id="8517109745758603034" datatype="html">
<source>API Key</source> <source>API Key</source>
<target state="translated">Klucz API</target> <target state="translated">Klucz API</target>
@ -7258,6 +7306,14 @@
<context context-type="linenumber">234</context> <context context-type="linenumber">234</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8214324091109908102" datatype="html">
<source>API Requests Today</source>
<target state="new">API Requests Today</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">86</context>
</context-group>
</trans-unit>
<trans-unit id="8214660894894142610" datatype="html"> <trans-unit id="8214660894894142610" datatype="html">
<source>Default Market Price</source> <source>Default Market Price</source>
<target state="translated">Domyślna cena rynkowa</target> <target state="translated">Domyślna cena rynkowa</target>
@ -8128,7 +8184,7 @@
<target state="translated">Zarządzaj profilem aktywów</target> <target state="translated">Zarządzaj profilem aktywów</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">442</context> <context context-type="linenumber">465</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2978009302056542263" datatype="html"> <trans-unit id="2978009302056542263" datatype="html">
@ -8152,7 +8208,7 @@
<target state="translated">Średnia cena jednostkowa</target> <target state="translated">Średnia cena jednostkowa</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">113</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
@ -8543,12 +8599,12 @@
<context context-type="linenumber">128</context> <context context-type="linenumber">128</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="339860602695747533" datatype="html"> <trans-unit id="889243574476657449" datatype="html">
<source>Registration Date</source> <source>Registration Date</source>
<target state="new">Registration Date</target> <target state="new">Registration Date</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">22</context> <context context-type="linenumber">23</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5162138648470294706" datatype="html"> <trans-unit id="5162138648470294706" datatype="html">

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

@ -697,6 +697,14 @@
<context context-type="linenumber">200</context> <context context-type="linenumber">200</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8119836022359386797" datatype="html">
<source>Activities</source>
<target state="new">Activities</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">61</context>
</context-group>
</trans-unit>
<trans-unit id="2817099043823177227" datatype="html"> <trans-unit id="2817099043823177227" datatype="html">
<source>Do you really want to delete this user?</source> <source>Do you really want to delete this user?</source>
<target state="translated">Deseja realmente excluir este utilizador?</target> <target state="translated">Deseja realmente excluir este utilizador?</target>
@ -1214,7 +1222,7 @@
<target state="translated">Dados do Relatório com Problema</target> <target state="translated">Dados do Relatório com Problema</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">452</context> <context context-type="linenumber">450</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8927080808898221200" datatype="html"> <trans-unit id="8927080808898221200" datatype="html">
@ -1608,10 +1616,6 @@
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context> <context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">252</context> <context context-type="linenumber">252</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">12</context>
</context-group>
</trans-unit> </trans-unit>
<trans-unit id="5369707274411995821" datatype="html"> <trans-unit id="5369707274411995821" datatype="html">
<source>Granted Access</source> <source>Granted Access</source>
@ -4289,6 +4293,14 @@
<context context-type="linenumber">210</context> <context context-type="linenumber">210</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1434671461968858301" datatype="html">
<source>User ID</source>
<target state="new">User ID</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">12</context>
</context-group>
</trans-unit>
<trans-unit id="1154843799824106777" datatype="html"> <trans-unit id="1154843799824106777" datatype="html">
<source>Free Plan</source> <source>Free Plan</source>
<target state="translated">Plano gratuito</target> <target state="translated">Plano gratuito</target>
@ -5747,6 +5759,14 @@
<context context-type="linenumber">364</context> <context context-type="linenumber">364</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1600023202562292052" datatype="html">
<source>Close Holding</source>
<target state="new">Close Holding</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">441</context>
</context-group>
</trans-unit>
<trans-unit id="1605678350626749943" datatype="html"> <trans-unit id="1605678350626749943" datatype="html">
<source>Absolute Asset Performance</source> <source>Absolute Asset Performance</source>
<target state="translated">Desempenho absoluto de ativos</target> <target state="translated">Desempenho absoluto de ativos</target>
@ -6565,7 +6585,7 @@
<target state="translated">Inativo</target> <target state="translated">Inativo</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">87</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2159130950882492111" datatype="html"> <trans-unit id="2159130950882492111" datatype="html">
@ -6668,6 +6688,14 @@
<context context-type="linenumber">11</context> <context context-type="linenumber">11</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2803298218425845065" datatype="html">
<source>Role</source>
<target state="new">Role</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">31</context>
</context-group>
</trans-unit>
<trans-unit id="2807800733729323332" datatype="html"> <trans-unit id="2807800733729323332" datatype="html">
<source>Yes</source> <source>Yes</source>
<target state="translated">Sim</target> <target state="translated">Sim</target>
@ -6679,6 +6707,10 @@
<trans-unit id="6574710269679413520" datatype="html"> <trans-unit id="6574710269679413520" datatype="html">
<source>Accounts</source> <source>Accounts</source>
<target state="new">Accounts</target> <target state="new">Accounts</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">51</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.html</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.html</context>
<context context-type="linenumber">84</context> <context context-type="linenumber">84</context>
@ -6972,6 +7004,14 @@
<context context-type="linenumber">293</context> <context context-type="linenumber">293</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7417020438124538834" datatype="html">
<source>Engagement per Day</source>
<target state="new">Engagement per Day</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">76</context>
</context-group>
</trans-unit>
<trans-unit id="7423212324650924366" datatype="html"> <trans-unit id="7423212324650924366" datatype="html">
<source>Guides</source> <source>Guides</source>
<target state="translated">Guias</target> <target state="translated">Guias</target>
@ -7110,6 +7150,14 @@
<context context-type="linenumber">167</context> <context context-type="linenumber">167</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8514765519764380399" datatype="html">
<source>Country</source>
<target state="new">Country</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">37</context>
</context-group>
</trans-unit>
<trans-unit id="8517109745758603034" datatype="html"> <trans-unit id="8517109745758603034" datatype="html">
<source>API Key</source> <source>API Key</source>
<target state="translated">Chave de API</target> <target state="translated">Chave de API</target>
@ -7258,6 +7306,14 @@
<context context-type="linenumber">234</context> <context context-type="linenumber">234</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8214324091109908102" datatype="html">
<source>API Requests Today</source>
<target state="new">API Requests Today</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">86</context>
</context-group>
</trans-unit>
<trans-unit id="8214660894894142610" datatype="html"> <trans-unit id="8214660894894142610" datatype="html">
<source>Default Market Price</source> <source>Default Market Price</source>
<target state="translated">Preço de mercado padrão</target> <target state="translated">Preço de mercado padrão</target>
@ -8128,7 +8184,7 @@
<target state="translated">Gerenciar perfil de ativos</target> <target state="translated">Gerenciar perfil de ativos</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">442</context> <context context-type="linenumber">465</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2978009302056542263" datatype="html"> <trans-unit id="2978009302056542263" datatype="html">
@ -8152,7 +8208,7 @@
<target state="translated">Preço médio unitário</target> <target state="translated">Preço médio unitário</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">113</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
@ -8543,12 +8599,12 @@
<context context-type="linenumber">128</context> <context context-type="linenumber">128</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="339860602695747533" datatype="html"> <trans-unit id="889243574476657449" datatype="html">
<source>Registration Date</source> <source>Registration Date</source>
<target state="new">Registration Date</target> <target state="new">Registration Date</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">22</context> <context context-type="linenumber">23</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5162138648470294706" datatype="html"> <trans-unit id="5162138648470294706" datatype="html">

76
apps/client/src/locales/messages.tr.xlf

@ -1078,6 +1078,14 @@
<context context-type="linenumber">200</context> <context context-type="linenumber">200</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8119836022359386797" datatype="html">
<source>Activities</source>
<target state="new">Activities</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">61</context>
</context-group>
</trans-unit>
<trans-unit id="5487499696517396535" datatype="html"> <trans-unit id="5487499696517396535" datatype="html">
<source>Add Platform</source> <source>Add Platform</source>
<target state="translated">Platform Ekle</target> <target state="translated">Platform Ekle</target>
@ -1731,7 +1739,7 @@
<target state="translated">Rapor Veri Sorunu</target> <target state="translated">Rapor Veri Sorunu</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">452</context> <context context-type="linenumber">450</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5451369123952965511" datatype="html"> <trans-unit id="5451369123952965511" datatype="html">
@ -4131,6 +4139,14 @@
<context context-type="linenumber">210</context> <context context-type="linenumber">210</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1434671461968858301" datatype="html">
<source>User ID</source>
<target state="new">User ID</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">12</context>
</context-group>
</trans-unit>
<trans-unit id="1154843799824106777" datatype="html"> <trans-unit id="1154843799824106777" datatype="html">
<source>Free Plan</source> <source>Free Plan</source>
<target state="translated">Ücretsiz Plan</target> <target state="translated">Ücretsiz Plan</target>
@ -4470,10 +4486,6 @@
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context> <context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">252</context> <context context-type="linenumber">252</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">12</context>
</context-group>
</trans-unit> </trans-unit>
<trans-unit id="8604673556809626581" datatype="html"> <trans-unit id="8604673556809626581" datatype="html">
<source>Export Data</source> <source>Export Data</source>
@ -5747,6 +5759,14 @@
<context context-type="linenumber">364</context> <context context-type="linenumber">364</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1600023202562292052" datatype="html">
<source>Close Holding</source>
<target state="new">Close Holding</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">441</context>
</context-group>
</trans-unit>
<trans-unit id="1605678350626749943" datatype="html"> <trans-unit id="1605678350626749943" datatype="html">
<source>Absolute Asset Performance</source> <source>Absolute Asset Performance</source>
<target state="translated">Mutlak Varlık Performansı</target> <target state="translated">Mutlak Varlık Performansı</target>
@ -6565,7 +6585,7 @@
<target state="translated">Pasif</target> <target state="translated">Pasif</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">87</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2159130950882492111" datatype="html"> <trans-unit id="2159130950882492111" datatype="html">
@ -6668,6 +6688,14 @@
<context context-type="linenumber">11</context> <context context-type="linenumber">11</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2803298218425845065" datatype="html">
<source>Role</source>
<target state="new">Role</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">31</context>
</context-group>
</trans-unit>
<trans-unit id="2807800733729323332" datatype="html"> <trans-unit id="2807800733729323332" datatype="html">
<source>Yes</source> <source>Yes</source>
<target state="translated">Evet</target> <target state="translated">Evet</target>
@ -6679,6 +6707,10 @@
<trans-unit id="6574710269679413520" datatype="html"> <trans-unit id="6574710269679413520" datatype="html">
<source>Accounts</source> <source>Accounts</source>
<target state="new">Accounts</target> <target state="new">Accounts</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">51</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.html</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.html</context>
<context context-type="linenumber">84</context> <context context-type="linenumber">84</context>
@ -6972,6 +7004,14 @@
<context context-type="linenumber">293</context> <context context-type="linenumber">293</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7417020438124538834" datatype="html">
<source>Engagement per Day</source>
<target state="new">Engagement per Day</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">76</context>
</context-group>
</trans-unit>
<trans-unit id="7423212324650924366" datatype="html"> <trans-unit id="7423212324650924366" datatype="html">
<source>Guides</source> <source>Guides</source>
<target state="translated">Kılavuzlar</target> <target state="translated">Kılavuzlar</target>
@ -7110,6 +7150,14 @@
<context context-type="linenumber">167</context> <context context-type="linenumber">167</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8514765519764380399" datatype="html">
<source>Country</source>
<target state="new">Country</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">37</context>
</context-group>
</trans-unit>
<trans-unit id="8517109745758603034" datatype="html"> <trans-unit id="8517109745758603034" datatype="html">
<source>API Key</source> <source>API Key</source>
<target state="translated">API Anahtarı</target> <target state="translated">API Anahtarı</target>
@ -7258,6 +7306,14 @@
<context context-type="linenumber">234</context> <context context-type="linenumber">234</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8214324091109908102" datatype="html">
<source>API Requests Today</source>
<target state="new">API Requests Today</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">86</context>
</context-group>
</trans-unit>
<trans-unit id="8214660894894142610" datatype="html"> <trans-unit id="8214660894894142610" datatype="html">
<source>Default Market Price</source> <source>Default Market Price</source>
<target state="translated">Varsayılan Piyasa Fiyatı</target> <target state="translated">Varsayılan Piyasa Fiyatı</target>
@ -8128,7 +8184,7 @@
<target state="new">Manage Asset Profile</target> <target state="new">Manage Asset Profile</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">442</context> <context context-type="linenumber">465</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2978009302056542263" datatype="html"> <trans-unit id="2978009302056542263" datatype="html">
@ -8152,7 +8208,7 @@
<target state="new">Average Unit Price</target> <target state="new">Average Unit Price</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">113</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
@ -8543,12 +8599,12 @@
<context context-type="linenumber">128</context> <context context-type="linenumber">128</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="339860602695747533" datatype="html"> <trans-unit id="889243574476657449" datatype="html">
<source>Registration Date</source> <source>Registration Date</source>
<target state="new">Registration Date</target> <target state="new">Registration Date</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">22</context> <context context-type="linenumber">23</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5162138648470294706" datatype="html"> <trans-unit id="5162138648470294706" datatype="html">

76
apps/client/src/locales/messages.uk.xlf

@ -345,6 +345,10 @@
<trans-unit id="6574710269679413520" datatype="html"> <trans-unit id="6574710269679413520" datatype="html">
<source>Accounts</source> <source>Accounts</source>
<target state="new">Accounts</target> <target state="new">Accounts</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">51</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.html</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.html</context>
<context context-type="linenumber">84</context> <context context-type="linenumber">84</context>
@ -1362,6 +1366,14 @@
<context context-type="linenumber">200</context> <context context-type="linenumber">200</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8119836022359386797" datatype="html">
<source>Activities</source>
<target state="new">Activities</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">61</context>
</context-group>
</trans-unit>
<trans-unit id="5487499696517396535" datatype="html"> <trans-unit id="5487499696517396535" datatype="html">
<source>Add Platform</source> <source>Add Platform</source>
<target state="translated">Додати платформу</target> <target state="translated">Додати платформу</target>
@ -1875,7 +1887,7 @@
<target state="translated">Повідомити про збій даних</target> <target state="translated">Повідомити про збій даних</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">452</context> <context context-type="linenumber">450</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8204176479746810612" datatype="html"> <trans-unit id="8204176479746810612" datatype="html">
@ -2625,10 +2637,6 @@
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context> <context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">252</context> <context context-type="linenumber">252</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">12</context>
</context-group>
</trans-unit> </trans-unit>
<trans-unit id="7156797854368699223" datatype="html"> <trans-unit id="7156797854368699223" datatype="html">
<source>Me</source> <source>Me</source>
@ -4779,6 +4787,14 @@
<context context-type="linenumber">91</context> <context context-type="linenumber">91</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1600023202562292052" datatype="html">
<source>Close Holding</source>
<target state="new">Close Holding</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">441</context>
</context-group>
</trans-unit>
<trans-unit id="1605678350626749943" datatype="html"> <trans-unit id="1605678350626749943" datatype="html">
<source>Absolute Asset Performance</source> <source>Absolute Asset Performance</source>
<target state="translated">Абсолютна прибутковість активів</target> <target state="translated">Абсолютна прибутковість активів</target>
@ -4936,7 +4952,7 @@
<target state="translated">Неактивний</target> <target state="translated">Неактивний</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">87</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5080775557941296581" datatype="html"> <trans-unit id="5080775557941296581" datatype="html">
@ -5255,6 +5271,14 @@
<context context-type="linenumber">293</context> <context context-type="linenumber">293</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7417020438124538834" datatype="html">
<source>Engagement per Day</source>
<target state="new">Engagement per Day</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">76</context>
</context-group>
</trans-unit>
<trans-unit id="7423212324650924366" datatype="html"> <trans-unit id="7423212324650924366" datatype="html">
<source>Guides</source> <source>Guides</source>
<target state="translated">Посібники</target> <target state="translated">Посібники</target>
@ -5786,6 +5810,14 @@
<context context-type="linenumber">210</context> <context context-type="linenumber">210</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1434671461968858301" datatype="html">
<source>User ID</source>
<target state="new">User ID</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">12</context>
</context-group>
</trans-unit>
<trans-unit id="7900108539442184659" datatype="html"> <trans-unit id="7900108539442184659" datatype="html">
<source><x id="INTERPOLATION" equiv-text="{{ product1.name }}"/> can be used anonymously</source> <source><x id="INTERPOLATION" equiv-text="{{ product1.name }}"/> can be used anonymously</source>
<target state="translated"><x id="INTERPOLATION" equiv-text="{{ product1.name }}"/> може використовуватися анонімно</target> <target state="translated"><x id="INTERPOLATION" equiv-text="{{ product1.name }}"/> може використовуватися анонімно</target>
@ -6750,6 +6782,14 @@
<context context-type="linenumber">33</context> <context context-type="linenumber">33</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2803298218425845065" datatype="html">
<source>Role</source>
<target state="new">Role</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">31</context>
</context-group>
</trans-unit>
<trans-unit id="2807800733729323332" datatype="html"> <trans-unit id="2807800733729323332" datatype="html">
<source>Yes</source> <source>Yes</source>
<target state="translated">Так</target> <target state="translated">Так</target>
@ -7166,6 +7206,14 @@
<context context-type="linenumber">110</context> <context context-type="linenumber">110</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8514765519764380399" datatype="html">
<source>Country</source>
<target state="new">Country</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">37</context>
</context-group>
</trans-unit>
<trans-unit id="8517109745758603034" datatype="html"> <trans-unit id="8517109745758603034" datatype="html">
<source>API Key</source> <source>API Key</source>
<target state="translated">Ключ API</target> <target state="translated">Ключ API</target>
@ -7258,6 +7306,14 @@
<context context-type="linenumber">234</context> <context context-type="linenumber">234</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8214324091109908102" datatype="html">
<source>API Requests Today</source>
<target state="new">API Requests Today</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">86</context>
</context-group>
</trans-unit>
<trans-unit id="8214660894894142610" datatype="html"> <trans-unit id="8214660894894142610" datatype="html">
<source>Default Market Price</source> <source>Default Market Price</source>
<target state="new">Default Market Price</target> <target state="new">Default Market Price</target>
@ -8128,7 +8184,7 @@
<target state="new">Manage Asset Profile</target> <target state="new">Manage Asset Profile</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">442</context> <context context-type="linenumber">465</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2978009302056542263" datatype="html"> <trans-unit id="2978009302056542263" datatype="html">
@ -8152,7 +8208,7 @@
<target state="new">Average Unit Price</target> <target state="new">Average Unit Price</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">113</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
@ -8543,12 +8599,12 @@
<context context-type="linenumber">128</context> <context context-type="linenumber">128</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="339860602695747533" datatype="html"> <trans-unit id="889243574476657449" datatype="html">
<source>Registration Date</source> <source>Registration Date</source>
<target state="new">Registration Date</target> <target state="new">Registration Date</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">22</context> <context context-type="linenumber">23</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5162138648470294706" datatype="html"> <trans-unit id="5162138648470294706" datatype="html">

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

@ -1106,6 +1106,13 @@
<context context-type="linenumber">200</context> <context context-type="linenumber">200</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8119836022359386797" datatype="html">
<source>Activities</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">61</context>
</context-group>
</trans-unit>
<trans-unit id="5487499696517396535" datatype="html"> <trans-unit id="5487499696517396535" datatype="html">
<source>Add Platform</source> <source>Add Platform</source>
<context-group purpose="location"> <context-group purpose="location">
@ -1747,7 +1754,7 @@
<source>Report Data Glitch</source> <source>Report Data Glitch</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">452</context> <context context-type="linenumber">450</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5451369123952965511" datatype="html"> <trans-unit id="5451369123952965511" datatype="html">
@ -2181,10 +2188,6 @@
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context> <context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">252</context> <context context-type="linenumber">252</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">12</context>
</context-group>
</trans-unit> </trans-unit>
<trans-unit id="8604673556809626581" datatype="html"> <trans-unit id="8604673556809626581" datatype="html">
<source>Export Data</source> <source>Export Data</source>
@ -4261,6 +4264,13 @@
<context context-type="linenumber">210</context> <context context-type="linenumber">210</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1434671461968858301" datatype="html">
<source>User ID</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">12</context>
</context-group>
</trans-unit>
<trans-unit id="1154843799824106777" datatype="html"> <trans-unit id="1154843799824106777" datatype="html">
<source>Free Plan</source> <source>Free Plan</source>
<context-group purpose="location"> <context-group purpose="location">
@ -5233,6 +5243,13 @@
<context context-type="linenumber">193</context> <context context-type="linenumber">193</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1600023202562292052" datatype="html">
<source>Close Holding</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">441</context>
</context-group>
</trans-unit>
<trans-unit id="1605678350626749943" datatype="html"> <trans-unit id="1605678350626749943" datatype="html">
<source>Absolute Asset Performance</source> <source>Absolute Asset Performance</source>
<context-group purpose="location"> <context-group purpose="location">
@ -6000,6 +6017,13 @@
<context context-type="linenumber">9</context> <context context-type="linenumber">9</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2803298218425845065" datatype="html">
<source>Role</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">31</context>
</context-group>
</trans-unit>
<trans-unit id="2807800733729323332" datatype="html"> <trans-unit id="2807800733729323332" datatype="html">
<source>Yes</source> <source>Yes</source>
<context-group purpose="location"> <context-group purpose="location">
@ -6018,7 +6042,7 @@
<source>Inactive</source> <source>Inactive</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">87</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7819314041543176992" datatype="html"> <trans-unit id="7819314041543176992" datatype="html">
@ -6136,6 +6160,10 @@
</trans-unit> </trans-unit>
<trans-unit id="6574710269679413520" datatype="html"> <trans-unit id="6574710269679413520" datatype="html">
<source>Accounts</source> <source>Accounts</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">51</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.html</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.html</context>
<context context-type="linenumber">84</context> <context context-type="linenumber">84</context>
@ -6361,6 +6389,13 @@
<context context-type="linenumber">291</context> <context context-type="linenumber">291</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7417020438124538834" datatype="html">
<source>Engagement per Day</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">76</context>
</context-group>
</trans-unit>
<trans-unit id="7423212324650924366" datatype="html"> <trans-unit id="7423212324650924366" datatype="html">
<source>Guides</source> <source>Guides</source>
<context-group purpose="location"> <context-group purpose="location">
@ -6444,6 +6479,13 @@
<context context-type="linenumber">26</context> <context context-type="linenumber">26</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8514765519764380399" datatype="html">
<source>Country</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">37</context>
</context-group>
</trans-unit>
<trans-unit id="8517109745758603034" datatype="html"> <trans-unit id="8517109745758603034" datatype="html">
<source>API Key</source> <source>API Key</source>
<context-group purpose="location"> <context-group purpose="location">
@ -6600,6 +6642,13 @@
<context context-type="linenumber">450</context> <context context-type="linenumber">450</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8214324091109908102" datatype="html">
<source>API Requests Today</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">86</context>
</context-group>
</trans-unit>
<trans-unit id="8214660894894142610" datatype="html"> <trans-unit id="8214660894894142610" datatype="html">
<source>Default Market Price</source> <source>Default Market Price</source>
<context-group purpose="location"> <context-group purpose="location">
@ -7358,7 +7407,7 @@
<source>Manage Asset Profile</source> <source>Manage Asset Profile</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">442</context> <context context-type="linenumber">465</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2978009302056542263" datatype="html"> <trans-unit id="2978009302056542263" datatype="html">
@ -7379,7 +7428,7 @@
<source>Average Unit Price</source> <source>Average Unit Price</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">113</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
@ -7723,11 +7772,11 @@
<context context-type="linenumber">128</context> <context context-type="linenumber">128</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="339860602695747533" datatype="html"> <trans-unit id="889243574476657449" datatype="html">
<source>Registration Date</source> <source>Registration Date</source>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">22</context> <context context-type="linenumber">23</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5606994816647505945" datatype="html"> <trans-unit id="5606994816647505945" datatype="html">

76
apps/client/src/locales/messages.zh.xlf

@ -1175,6 +1175,14 @@
<context context-type="linenumber">200</context> <context context-type="linenumber">200</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8119836022359386797" datatype="html">
<source>Activities</source>
<target state="new">Activities</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">61</context>
</context-group>
</trans-unit>
<trans-unit id="5487499696517396535" datatype="html"> <trans-unit id="5487499696517396535" datatype="html">
<source>Add Platform</source> <source>Add Platform</source>
<target state="translated">添加平台</target> <target state="translated">添加平台</target>
@ -1884,7 +1892,7 @@
<target state="translated">报告数据故障</target> <target state="translated">报告数据故障</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">452</context> <context context-type="linenumber">450</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5451369123952965511" datatype="html"> <trans-unit id="5451369123952965511" datatype="html">
@ -2362,10 +2370,6 @@
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context> <context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.html</context>
<context context-type="linenumber">252</context> <context context-type="linenumber">252</context>
</context-group> </context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">12</context>
</context-group>
</trans-unit> </trans-unit>
<trans-unit id="8604673556809626581" datatype="html"> <trans-unit id="8604673556809626581" datatype="html">
<source>Export Data</source> <source>Export Data</source>
@ -4652,6 +4656,14 @@
<context context-type="linenumber">210</context> <context context-type="linenumber">210</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1434671461968858301" datatype="html">
<source>User ID</source>
<target state="new">User ID</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">12</context>
</context-group>
</trans-unit>
<trans-unit id="1154843799824106777" datatype="html"> <trans-unit id="1154843799824106777" datatype="html">
<source>Free Plan</source> <source>Free Plan</source>
<target state="translated">免费计划</target> <target state="translated">免费计划</target>
@ -5732,6 +5744,14 @@
<context context-type="linenumber">193</context> <context context-type="linenumber">193</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="1600023202562292052" datatype="html">
<source>Close Holding</source>
<target state="new">Close Holding</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">441</context>
</context-group>
</trans-unit>
<trans-unit id="1605678350626749943" datatype="html"> <trans-unit id="1605678350626749943" datatype="html">
<source>Absolute Asset Performance</source> <source>Absolute Asset Performance</source>
<target state="translated">绝对资产回报</target> <target state="translated">绝对资产回报</target>
@ -6566,7 +6586,7 @@
<target state="translated">非活跃</target> <target state="translated">非活跃</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context> <context context-type="sourcefile">apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html</context>
<context context-type="linenumber">87</context> <context context-type="linenumber">88</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2159130950882492111" datatype="html"> <trans-unit id="2159130950882492111" datatype="html">
@ -6669,6 +6689,14 @@
<context context-type="linenumber">11</context> <context context-type="linenumber">11</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2803298218425845065" datatype="html">
<source>Role</source>
<target state="new">Role</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">31</context>
</context-group>
</trans-unit>
<trans-unit id="2807800733729323332" datatype="html"> <trans-unit id="2807800733729323332" datatype="html">
<source>Yes</source> <source>Yes</source>
<target state="translated">是</target> <target state="translated">是</target>
@ -6680,6 +6708,10 @@
<trans-unit id="6574710269679413520" datatype="html"> <trans-unit id="6574710269679413520" datatype="html">
<source>Accounts</source> <source>Accounts</source>
<target state="new">Accounts</target> <target state="new">Accounts</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">51</context>
</context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.html</context> <context context-type="sourcefile">libs/ui/src/lib/assistant/assistant.html</context>
<context context-type="linenumber">84</context> <context context-type="linenumber">84</context>
@ -6973,6 +7005,14 @@
<context context-type="linenumber">293</context> <context context-type="linenumber">293</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="7417020438124538834" datatype="html">
<source>Engagement per Day</source>
<target state="new">Engagement per Day</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">76</context>
</context-group>
</trans-unit>
<trans-unit id="7423212324650924366" datatype="html"> <trans-unit id="7423212324650924366" datatype="html">
<source>Guides</source> <source>Guides</source>
<target state="translated">指南</target> <target state="translated">指南</target>
@ -7111,6 +7151,14 @@
<context context-type="linenumber">167</context> <context context-type="linenumber">167</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8514765519764380399" datatype="html">
<source>Country</source>
<target state="new">Country</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">37</context>
</context-group>
</trans-unit>
<trans-unit id="8517109745758603034" datatype="html"> <trans-unit id="8517109745758603034" datatype="html">
<source>API Key</source> <source>API Key</source>
<target state="translated">API 密钥</target> <target state="translated">API 密钥</target>
@ -7259,6 +7307,14 @@
<context context-type="linenumber">234</context> <context context-type="linenumber">234</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="8214324091109908102" datatype="html">
<source>API Requests Today</source>
<target state="new">API Requests Today</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">86</context>
</context-group>
</trans-unit>
<trans-unit id="8214660894894142610" datatype="html"> <trans-unit id="8214660894894142610" datatype="html">
<source>Default Market Price</source> <source>Default Market Price</source>
<target state="translated">默认市场价格</target> <target state="translated">默认市场价格</target>
@ -8129,7 +8185,7 @@
<target state="translated">管理资产概况</target> <target state="translated">管理资产概况</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
<context context-type="linenumber">442</context> <context context-type="linenumber">465</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="2978009302056542263" datatype="html"> <trans-unit id="2978009302056542263" datatype="html">
@ -8153,7 +8209,7 @@
<target state="translated">平均单位价格</target> <target state="translated">平均单位价格</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts</context>
<context context-type="linenumber">111</context> <context context-type="linenumber">113</context>
</context-group> </context-group>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html</context>
@ -8544,12 +8600,12 @@
<context context-type="linenumber">128</context> <context context-type="linenumber">128</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="339860602695747533" datatype="html"> <trans-unit id="889243574476657449" datatype="html">
<source>Registration Date</source> <source>Registration Date</source>
<target state="new">Registration Date</target> <target state="new">Registration Date</target>
<context-group purpose="location"> <context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context> <context context-type="sourcefile">apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html</context>
<context context-type="linenumber">22</context> <context context-type="linenumber">23</context>
</context-group> </context-group>
</trans-unit> </trans-unit>
<trans-unit id="5162138648470294706" datatype="html"> <trans-unit id="5162138648470294706" datatype="html">

14
libs/ui/src/lib/activities-table/activities-table.component.html

@ -437,6 +437,14 @@
class="no-max-width" class="no-max-width"
xPosition="before" xPosition="before"
> >
@if (canClickActivity(element)) {
<button mat-menu-item (click)="onClickActivity(element)">
<span class="align-items-center d-flex">
<ion-icon class="mr-2" name="wallet-outline" />
<span i18n>View Holding</span>
</span>
</button>
}
<button mat-menu-item (click)="onUpdateActivity(element)"> <button mat-menu-item (click)="onUpdateActivity(element)">
<span class="align-items-center d-flex"> <span class="align-items-center d-flex">
<ion-icon class="mr-2" name="create-outline" /> <ion-icon class="mr-2" name="create-outline" />
@ -479,11 +487,7 @@
*matRowDef="let row; columns: displayedColumns" *matRowDef="let row; columns: displayedColumns"
mat-row mat-row
[ngClass]="{ [ngClass]="{
'cursor-pointer': 'cursor-pointer': canClickActivity(row)
hasPermissionToOpenDetails &&
isExcludedFromAnalysis(row) === false &&
row.isDraft === false &&
['BUY', 'DIVIDEND', 'SELL'].includes(row.type)
}" }"
(click)="onClickActivity(row)" (click)="onClickActivity(row)"
></tr> ></tr>

22
libs/ui/src/lib/activities-table/activities-table.component.ts

@ -56,7 +56,8 @@ import {
documentTextOutline, documentTextOutline,
ellipsisHorizontal, ellipsisHorizontal,
ellipsisVertical, ellipsisVertical,
trashOutline trashOutline,
walletOutline
} from 'ionicons/icons'; } from 'ionicons/icons';
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader'; import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
import { Subject, Subscription, takeUntil } from 'rxjs'; import { Subject, Subscription, takeUntil } from 'rxjs';
@ -153,7 +154,8 @@ export class GfActivitiesTableComponent
documentTextOutline, documentTextOutline,
ellipsisHorizontal, ellipsisHorizontal,
ellipsisVertical, ellipsisVertical,
trashOutline trashOutline,
walletOutline
}); });
} }
@ -226,6 +228,15 @@ export class GfActivitiesTableComponent
return numSelectedRows === numTotalRows; return numSelectedRows === numTotalRows;
} }
public canClickActivity(activity: Activity) {
return (
this.hasPermissionToOpenDetails &&
this.isExcludedFromAnalysis(activity) === false &&
activity.isDraft === false &&
['BUY', 'DIVIDEND', 'SELL'].includes(activity.type)
);
}
public isExcludedFromAnalysis(activity: Activity) { public isExcludedFromAnalysis(activity: Activity) {
return ( return (
activity.account?.isExcluded || activity.account?.isExcluded ||
@ -244,12 +255,7 @@ export class GfActivitiesTableComponent
if (!activity.error) { if (!activity.error) {
this.selectedRows.toggle(activity); this.selectedRows.toggle(activity);
} }
} else if ( } else if (this.canClickActivity(activity)) {
this.hasPermissionToOpenDetails &&
this.isExcludedFromAnalysis(activity) === false &&
activity.isDraft === false &&
['BUY', 'DIVIDEND', 'SELL'].includes(activity.type)
) {
this.activityClicked.emit({ this.activityClicked.emit({
dataSource: activity.SymbolProfile.dataSource, dataSource: activity.SymbolProfile.dataSource,
symbol: activity.SymbolProfile.symbol symbol: activity.SymbolProfile.symbol

7
libs/ui/src/lib/benchmark/benchmark.component.ts

@ -155,14 +155,17 @@ export class GfBenchmarkComponent implements OnChanges, OnDestroy {
dataSource, dataSource,
symbol symbol
}: AssetProfileIdentifier) { }: AssetProfileIdentifier) {
const dialogRef = this.dialog.open(GfBenchmarkDetailDialogComponent, { const dialogRef = this.dialog.open<
GfBenchmarkDetailDialogComponent,
BenchmarkDetailDialogParams
>(GfBenchmarkDetailDialogComponent, {
data: { data: {
dataSource, dataSource,
symbol, symbol,
colorScheme: this.user?.settings?.colorScheme, colorScheme: this.user?.settings?.colorScheme,
deviceType: this.deviceType, deviceType: this.deviceType,
locale: this.locale locale: this.locale
} as BenchmarkDetailDialogParams, },
height: this.deviceType === 'mobile' ? '98vh' : undefined, height: this.deviceType === 'mobile' ? '98vh' : undefined,
width: this.deviceType === 'mobile' ? '100vw' : '50rem' width: this.deviceType === 'mobile' ? '100vw' : '50rem'
}); });

28
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts

@ -199,21 +199,21 @@ export class GfHistoricalMarketDataEditorComponent
}) { }) {
const marketPrice = this.marketDataByMonth[yearMonth]?.[day]?.marketPrice; const marketPrice = this.marketDataByMonth[yearMonth]?.[day]?.marketPrice;
const dialogRef = this.dialog.open( const dialogRef = this.dialog.open<
GfHistoricalMarketDataEditorDialogComponent, GfHistoricalMarketDataEditorDialogComponent,
{ HistoricalMarketDataEditorDialogParams
data: { >(GfHistoricalMarketDataEditorDialogComponent, {
marketPrice, data: {
currency: this.currency, marketPrice,
dataSource: this.dataSource, currency: this.currency,
dateString: `${yearMonth}-${day}`, dataSource: this.dataSource,
symbol: this.symbol, dateString: `${yearMonth}-${day}`,
user: this.user symbol: this.symbol,
} as HistoricalMarketDataEditorDialogParams, user: this.user
height: this.deviceType === 'mobile' ? '98vh' : '80vh', },
width: this.deviceType === 'mobile' ? '100vw' : '50rem' height: this.deviceType === 'mobile' ? '98vh' : '80vh',
} width: this.deviceType === 'mobile' ? '100vw' : '50rem'
); });
dialogRef dialogRef
.afterClosed() .afterClosed()

4
package-lock.json

@ -1,12 +1,12 @@
{ {
"name": "ghostfolio", "name": "ghostfolio",
"version": "2.211.0", "version": "2.212.0",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "ghostfolio", "name": "ghostfolio",
"version": "2.211.0", "version": "2.212.0",
"hasInstallScript": true, "hasInstallScript": true,
"license": "AGPL-3.0", "license": "AGPL-3.0",
"dependencies": { "dependencies": {

2
package.json

@ -1,6 +1,6 @@
{ {
"name": "ghostfolio", "name": "ghostfolio",
"version": "2.211.0", "version": "2.212.0",
"homepage": "https://ghostfol.io", "homepage": "https://ghostfol.io",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"repository": "https://github.com/ghostfolio/ghostfolio", "repository": "https://github.com/ghostfolio/ghostfolio",

Loading…
Cancel
Save