Browse Source

Merge remote-tracking branch 'origin/main' into feature/extend-holdings-endpoint-for-cash

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

27
CHANGELOG.md

@ -9,12 +9,37 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
- Added a close holding button to the holding detail dialog
- Extended the holdings endpoint to include the performance with currency effect for cash
## 2.213.0 - 2025-10-30
### Added
- Extended the activities table menu with a _View Holding_ item
- Added the error logging to the symbol lookup in the _Trackinsight_ data enhancer
### 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
- Migrated the tags selector component in the holding detail dialog to form control
- Improved the language localization for German (`de`)
- Upgraded `nestjs` from version `11.1.3` to `11.1.8`
## 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
### 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

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.
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

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

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

9
apps/api/src/services/data-provider/data-enhancer/trackinsight/trackinsight.service.ts

@ -4,7 +4,7 @@ import { Holding } from '@ghostfolio/common/interfaces';
import { Country } from '@ghostfolio/common/interfaces/country.interface';
import { Sector } from '@ghostfolio/common/interfaces/sector.interface';
import { Injectable } from '@nestjs/common';
import { Injectable, Logger } from '@nestjs/common';
import { SymbolProfile } from '@prisma/client';
import { countries } from 'countries-list';
@ -202,7 +202,12 @@ export class TrackinsightDataEnhancerService implements DataEnhancerInterface {
return undefined;
})
.catch(() => {
.catch(({ message }) => {
Logger.error(
`Failed to search Trackinsight symbol for ${symbol} (${message})`,
'TrackinsightDataEnhancerService'
);
return undefined;
});
}

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

@ -276,7 +276,10 @@ export class AppComponent implements OnDestroy, OnInit {
.subscribe((user) => {
this.user = user;
const dialogRef = this.dialog.open(GfHoldingDetailDialogComponent, {
const dialogRef = this.dialog.open<
GfHoldingDetailDialogComponent,
HoldingDetailDialogParams
>(GfHoldingDetailDialogComponent, {
autoFocus: false,
data: {
dataSource,
@ -302,7 +305,7 @@ export class AppComponent implements OnDestroy, OnInit {
hasPermission(this.user?.permissions, permissions.updateOrder) &&
!this.user?.settings?.isRestrictedView,
locale: this.user?.settings?.locale
} as HoldingDetailDialogParams,
},
height: this.deviceType === 'mobile' ? '98vh' : '80vh',
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 { addIcons } from 'ionicons';
import {
albumsOutline,
cashOutline,
swapVerticalOutline,
walletOutline
swapVerticalOutline
} from 'ionicons/icons';
import { isNumber } from 'lodash';
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() {

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

@ -98,7 +98,7 @@
>
<mat-tab>
<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>
</ng-template>
<gf-holdings-table

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

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

28
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 { GfCreateOrUpdatePlatformDialogComponent } from './create-or-update-platform-dialog/create-or-update-platform-dialog.component';
import { CreateOrUpdatePlatformDialogParams } from './create-or-update-platform-dialog/interfaces/interfaces';
@Component({
changeDetection: ChangeDetectionStrategy.OnPush,
@ -153,19 +154,20 @@ export class GfAdminPlatformComponent implements OnInit, OnDestroy {
}
private openCreatePlatformDialog() {
const dialogRef = this.dialog.open(
const dialogRef = this.dialog.open<
GfCreateOrUpdatePlatformDialogComponent,
{
CreateOrUpdatePlatformDialogParams
>(GfCreateOrUpdatePlatformDialogComponent, {
data: {
platform: {
id: null,
name: null,
url: null
}
},
height: this.deviceType === 'mobile' ? '98vh' : undefined,
width: this.deviceType === 'mobile' ? '100vw' : '50rem'
}
);
});
dialogRef
.afterClosed()
@ -191,10 +193,19 @@ export class GfAdminPlatformComponent implements OnInit, OnDestroy {
});
}
private openUpdatePlatformDialog({ id, name, url }) {
const dialogRef = this.dialog.open(
private openUpdatePlatformDialog({
id,
name,
url
}: {
id: string;
name: string;
url: string;
}) {
const dialogRef = this.dialog.open<
GfCreateOrUpdatePlatformDialogComponent,
{
CreateOrUpdatePlatformDialogParams
>(GfCreateOrUpdatePlatformDialogComponent, {
data: {
platform: {
id,
@ -204,8 +215,7 @@ export class GfAdminPlatformComponent implements OnInit, OnDestroy {
},
height: this.deviceType === 'mobile' ? '98vh' : undefined,
width: this.deviceType === 'mobile' ? '100vw' : '50rem'
}
);
});
dialogRef
.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 { GfCreateOrUpdateTagDialogComponent } from './create-or-update-tag-dialog/create-or-update-tag-dialog.component';
import { CreateOrUpdateTagDialogParams } from './create-or-update-tag-dialog/interfaces/interfaces';
@Component({
changeDetection: ChangeDetectionStrategy.OnPush,
@ -149,9 +150,13 @@ export class GfAdminTagComponent implements OnInit, OnDestroy {
}
private openCreateTagDialog() {
const dialogRef = this.dialog.open(GfCreateOrUpdateTagDialogComponent, {
const dialogRef = this.dialog.open<
GfCreateOrUpdateTagDialogComponent,
CreateOrUpdateTagDialogParams
>(GfCreateOrUpdateTagDialogComponent, {
data: {
tag: {
id: null,
name: null
}
},
@ -183,8 +188,11 @@ export class GfAdminTagComponent implements OnInit, OnDestroy {
});
}
private openUpdateTagDialog({ id, name }) {
const dialogRef = this.dialog.open(GfCreateOrUpdateTagDialogComponent, {
private openUpdateTagDialog({ id, name }: { id: string; name: string }) {
const dialogRef = this.dialog.open<
GfCreateOrUpdateTagDialogComponent,
CreateOrUpdateTagDialogParams
>(GfCreateOrUpdateTagDialogComponent, {
data: {
tag: {
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';
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;
}
const dialogRef = this.dialog.open(GfUserDetailDialogComponent, {
const dialogRef = this.dialog.open<
GfUserDetailDialogComponent,
UserDetailDialogParams
>(GfUserDetailDialogComponent, {
autoFocus: false,
data: {
userData,
deviceType: this.deviceType,
hasPermissionForSubscription: this.hasPermissionForSubscription,
locale: this.user?.settings?.locale
} as UserDetailDialogParams,
},
height: this.deviceType === 'mobile' ? '98vh' : '60vh',
width: this.deviceType === 'mobile' ? '100vw' : '50rem'
});
@ -304,7 +307,6 @@ export class GfAdminUsersComponent implements OnDestroy, OnInit {
.afterClosed()
.pipe(takeUntil(this.unsubscribeSubject))
.subscribe(() => {
this.fetchUsers();
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 { 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 { LayoutService } from '@ghostfolio/client/core/layout.service';
import { NotificationService } from '@ghostfolio/client/core/notification/notification.service';
@ -271,7 +272,10 @@ export class GfHeaderComponent implements OnChanges {
}
public openLoginDialog() {
const dialogRef = this.dialog.open(GfLoginWithAccessTokenDialogComponent, {
const dialogRef = this.dialog.open<
GfLoginWithAccessTokenDialogComponent,
LoginWithAccessTokenDialogParams
>(GfLoginWithAccessTokenDialogComponent, {
autoFocus: false,
data: {
accessToken: '',

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

@ -39,7 +39,7 @@ import {
OnDestroy,
OnInit
} from '@angular/core';
import { FormBuilder, FormGroup } from '@angular/forms';
import { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';
import { MatButtonModule } from '@angular/material/button';
import { MatChipsModule } from '@angular/material/chips';
import {
@ -94,6 +94,7 @@ import { HoldingDetailDialogParams } from './interfaces/interfaces';
MatFormFieldModule,
MatTabsModule,
NgxSkeletonLoaderModule,
ReactiveFormsModule,
RouterModule
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
@ -103,7 +104,6 @@ import { HoldingDetailDialogParams } from './interfaces/interfaces';
})
export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit {
public activitiesCount: number;
public activityForm: FormGroup;
public accounts: Account[];
public assetClass: string;
public assetSubClass: string;
@ -124,6 +124,7 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit {
public hasPermissionToCreateOwnTag: boolean;
public hasPermissionToReadMarketDataOfOwnAssetProfile: boolean;
public historicalDataItems: LineChartItem[];
public holdingForm: FormGroup;
public investmentInBaseCurrencyWithCurrencyEffect: number;
public investmentInBaseCurrencyWithCurrencyEffectPrecision = 2;
public isUUID = isUUID;
@ -180,16 +181,16 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit {
}
public ngOnInit() {
this.activityForm = this.formBuilder.group({
tags: [] as string[]
});
const filters: Filter[] = [
{ id: this.data.dataSource, type: 'DATA_SOURCE' },
{ id: this.data.symbol, type: 'SYMBOL' }
];
this.activityForm
this.holdingForm = this.formBuilder.group({
tags: [] as string[]
});
this.holdingForm
.get('tags')
.valueChanges.pipe(takeUntil(this.unsubscribeSubject))
.subscribe((tags: Tag[]) => {
@ -430,7 +431,7 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit {
};
});
this.activityForm.setValue({ tags: this.tags }, { emitEvent: false });
this.holdingForm.setValue({ tags: this.tags }, { emitEvent: false });
this.value = value;
@ -617,10 +618,6 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit {
}
}
public onTagsChanged(tags: Tag[]) {
this.activityForm.get('tags').setValue(tags);
}
public onUpdateActivity(aActivity: Activity) {
this.router.navigate(
internalRoutes.portfolio.subRoutes.activities.routerLink,

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

@ -411,13 +411,14 @@
}
</mat-tab-group>
<form [formGroup]="holdingForm">
<gf-tags-selector
formControlName="tags"
[hasPermissionToCreateTag]="hasPermissionToCreateOwnTag"
[readonly]="!data.hasPermissionToUpdateOrder"
[tags]="activityForm.get('tags')?.value"
[tagsAvailable]="tagsAvailable"
(tagsChanged)="onTagsChanged($event)"
/>
</form>
@if (
data.hasPermissionToAccessAdminControl ||

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

@ -149,17 +149,17 @@ export class GfHomeWatchlistComponent implements OnDestroy, OnInit {
.subscribe((user) => {
this.user = user;
const dialogRef = this.dialog.open(
const dialogRef = this.dialog.open<
GfCreateWatchlistItemDialogComponent,
{
CreateWatchlistItemDialogParams
>(GfCreateWatchlistItemDialogComponent, {
autoFocus: false,
data: {
deviceType: this.deviceType,
locale: this.user?.settings?.locale
} as CreateWatchlistItemDialogParams,
},
width: this.deviceType === 'mobile' ? '100vw' : '50rem'
}
);
});
dialogRef
.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 { eyeOffOutline, eyeOutline } from 'ionicons/icons';
import { LoginWithAccessTokenDialogParams } from './interfaces/interfaces';
@Component({
changeDetection: ChangeDetectionStrategy.OnPush,
imports: [
@ -51,7 +53,7 @@ export class GfLoginWithAccessTokenDialogComponent {
public isAccessTokenHidden = true;
public constructor(
@Inject(MAT_DIALOG_DATA) public data: any,
@Inject(MAT_DIALOG_DATA) public data: LoginWithAccessTokenDialogParams,
public dialogRef: MatDialogRef<GfLoginWithAccessTokenDialogComponent>,
private internetIdentityService: InternetIdentityService,
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) {
const dialogRef = this.dialog.open(GfRuleSettingsDialogComponent, {
const dialogRef = this.dialog.open<
GfRuleSettingsDialogComponent,
RuleSettingsDialogParams
>(GfRuleSettingsDialogComponent, {
data: {
rule,
categoryName: this.categoryName,
locale: this.locale,
settings: this.settings
} as RuleSettingsDialogParams,
},
width: this.deviceType === 'mobile' ? '100vw' : '50rem'
});

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

@ -31,6 +31,7 @@ import { EMPTY, Subject } from 'rxjs';
import { catchError, takeUntil } from 'rxjs/operators';
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({
changeDetection: ChangeDetectionStrategy.OnPush,
@ -187,10 +188,15 @@ export class GfUserAccountAccessComponent implements OnDestroy, OnInit {
}
private openCreateAccessDialog() {
const dialogRef = this.dialog.open(GfCreateOrUpdateAccessDialogComponent, {
const dialogRef = this.dialog.open<
GfCreateOrUpdateAccessDialogComponent,
CreateOrUpdateAccessDialogParams
>(GfCreateOrUpdateAccessDialogComponent, {
data: {
access: {
alias: '',
grantee: null,
id: null,
permissions: ['READ_RESTRICTED'],
type: 'PRIVATE'
}
@ -219,12 +225,15 @@ export class GfUserAccountAccessComponent implements OnDestroy, OnInit {
return;
}
const dialogRef = this.dialog.open(GfCreateOrUpdateAccessDialogComponent, {
const dialogRef = this.dialog.open<
GfCreateOrUpdateAccessDialogComponent,
CreateOrUpdateAccessDialogParams
>(GfCreateOrUpdateAccessDialogComponent, {
data: {
access: {
alias: access.alias,
id: access.id,
grantee: access.grantee === 'Public' ? null : access.grantee,
id: access.id,
permissions: access.permissions,
type: access.type
}

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

@ -175,7 +175,7 @@
</div>
</div>
<div class="row">
<div class="mb-5 row">
<div
class="col-md-6 col-xs-12 my-2"
[ngClass]="{ 'offset-md-3': hasPermissionForSubscription === false }"
@ -201,4 +201,26 @@
</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="../assets/images/sponsors/logo-lambdatest.png"
width="250"
/>
</a>
</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 { 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';
@Component({
@ -179,7 +181,10 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit {
name,
platformId
}: AccountModel) {
const dialogRef = this.dialog.open(GfCreateOrUpdateAccountDialogComponent, {
const dialogRef = this.dialog.open<
GfCreateOrUpdateAccountDialogComponent,
CreateOrUpdateAccountDialogParams
>(GfCreateOrUpdateAccountDialogComponent, {
data: {
account: {
balance,
@ -227,7 +232,10 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit {
}
private openAccountDetailDialog(aAccountId: string) {
const dialogRef = this.dialog.open(GfAccountDetailDialogComponent, {
const dialogRef = this.dialog.open<
GfAccountDetailDialogComponent,
AccountDetailDialogParams
>(GfAccountDetailDialogComponent, {
autoFocus: false,
data: {
accountId: aAccountId,
@ -237,7 +245,7 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit {
!this.hasImpersonationId &&
hasPermission(this.user?.permissions, permissions.createOrder) &&
!this.user?.settings?.isRestrictedView
} as AccountDetailDialogParams,
},
height: this.deviceType === 'mobile' ? '98vh' : '80vh',
width: this.deviceType === 'mobile' ? '100vw' : '50rem'
});
@ -253,12 +261,16 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit {
}
private openCreateAccountDialog() {
const dialogRef = this.dialog.open(GfCreateOrUpdateAccountDialogComponent, {
const dialogRef = this.dialog.open<
GfCreateOrUpdateAccountDialogComponent,
CreateOrUpdateAccountDialogParams
>(GfCreateOrUpdateAccountDialogComponent, {
data: {
account: {
balance: 0,
comment: null,
currency: this.user?.settings?.baseCurrency,
id: null,
isExcluded: false,
name: null,
platformId: null
@ -295,7 +307,10 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit {
}
private openTransferBalanceDialog() {
const dialogRef = this.dialog.open(GfTransferBalanceDialogComponent, {
const dialogRef = this.dialog.open<
GfTransferBalanceDialogComponent,
TransferBalanceDialogParams
>(GfTransferBalanceDialogComponent, {
data: {
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';
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 { addIcons } from 'ionicons';
import {
albumsOutline,
analyticsOutline,
bookmarkOutline,
newspaperOutline,
readerOutline,
walletOutline
readerOutline
} from 'ionicons/icons';
import { DeviceDetectorService } from 'ngx-device-detector';
import { Subject } from 'rxjs';
@ -61,7 +61,7 @@ export class GfHomePageComponent implements OnDestroy, OnInit {
routerLink: internalRoutes.home.routerLink
},
{
iconName: 'wallet-outline',
iconName: 'albums-outline',
label: internalRoutes.home.subRoutes.holdings.title,
routerLink: internalRoutes.home.subRoutes.holdings.routerLink
},
@ -97,11 +97,11 @@ export class GfHomePageComponent implements OnDestroy, OnInit {
});
addIcons({
albumsOutline,
analyticsOutline,
bookmarkOutline,
newspaperOutline,
readerOutline,
walletOutline
readerOutline
});
}

31
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 { 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 { ImportActivitiesDialogParams } from './import-activities-dialog/interfaces/interfaces';
@ -245,11 +246,14 @@ export class GfActivitiesPageComponent implements OnDestroy, OnInit {
}
public onImport() {
const dialogRef = this.dialog.open(GfImportActivitiesDialogComponent, {
const dialogRef = this.dialog.open<
GfImportActivitiesDialogComponent,
ImportActivitiesDialogParams
>(GfImportActivitiesDialogComponent, {
data: {
deviceType: this.deviceType,
user: this.user
} as ImportActivitiesDialogParams,
},
height: this.deviceType === 'mobile' ? '98vh' : undefined,
width: this.deviceType === 'mobile' ? '100vw' : '50rem'
});
@ -268,12 +272,15 @@ export class GfActivitiesPageComponent implements OnDestroy, OnInit {
}
public onImportDividends() {
const dialogRef = this.dialog.open(GfImportActivitiesDialogComponent, {
const dialogRef = this.dialog.open<
GfImportActivitiesDialogComponent,
ImportActivitiesDialogParams
>(GfImportActivitiesDialogComponent, {
data: {
activityTypes: ['DIVIDEND'],
deviceType: this.deviceType,
user: this.user
} as ImportActivitiesDialogParams,
},
height: this.deviceType === 'mobile' ? '98vh' : undefined,
width: this.deviceType === 'mobile' ? '100vw' : '50rem'
});
@ -306,9 +313,10 @@ export class GfActivitiesPageComponent implements OnDestroy, OnInit {
}
public openUpdateActivityDialog(aActivity: Activity) {
const dialogRef = this.dialog.open(
const dialogRef = this.dialog.open<
GfCreateOrUpdateActivityDialogComponent,
{
CreateOrUpdateActivityDialogParams
>(GfCreateOrUpdateActivityDialogComponent, {
data: {
activity: aActivity,
accounts: this.user?.accounts,
@ -316,8 +324,7 @@ export class GfActivitiesPageComponent implements OnDestroy, OnInit {
},
height: this.deviceType === 'mobile' ? '98vh' : '80vh',
width: this.deviceType === 'mobile' ? '100vw' : '50rem'
}
);
});
dialogRef
.afterClosed()
@ -350,9 +357,10 @@ export class GfActivitiesPageComponent implements OnDestroy, OnInit {
.subscribe((user) => {
this.updateUser(user);
const dialogRef = this.dialog.open(
const dialogRef = this.dialog.open<
GfCreateOrUpdateActivityDialogComponent,
{
CreateOrUpdateActivityDialogParams
>(GfCreateOrUpdateActivityDialogComponent, {
data: {
accounts: this.user?.accounts,
activity: {
@ -368,8 +376,7 @@ export class GfActivitiesPageComponent implements OnDestroy, OnInit {
},
height: this.deviceType === 'mobile' ? '98vh' : '80vh',
width: this.deviceType === 'mobile' ? '100vw' : '50rem'
}
);
});
dialogRef
.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';
export interface CreateOrUpdateActivityDialogParams {
accountId: string;
accounts: Account[];
activity: Activity;
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';
export interface ImportActivitiesDialogParams {
activityTypes: Type[];
activityTypes?: Type[];
deviceType: string;
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) {
const dialogRef = this.dialog.open(GfAccountDetailDialogComponent, {
const dialogRef = this.dialog.open<
GfAccountDetailDialogComponent,
AccountDetailDialogParams
>(GfAccountDetailDialogComponent, {
autoFocus: false,
data: {
accountId: aAccountId,
@ -568,7 +571,7 @@ export class GfAllocationsPageComponent implements OnDestroy, OnInit {
!this.hasImpersonationId &&
hasPermission(this.user?.permissions, permissions.createOrder) &&
!this.user?.settings?.isRestrictedView
} as AccountDetailDialogParams,
},
height: this.deviceType === 'mobile' ? '98vh' : '80vh',
width: this.deviceType === 'mobile' ? '100vw' : '50rem'
});

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

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

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

@ -5,7 +5,7 @@
<div>
<div class="mb-4 media">
<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">
Buy and hold is a passive investment strategy where you buy assets
and hold them for a long period regardless of fluctuations in the
@ -22,7 +22,7 @@
</div>
<div class="mb-4 media">
<div class="media-body">
<h3 class="h5 mt-0">Deflation</h3>
<h2 class="h5 mb-1 mt-0">Deflation</h2>
<div class="mb-1">
Deflation is a decrease of the general price level for goods and
services in an economy over a period of time.
@ -38,7 +38,7 @@
</div>
<div class="mb-4 media">
<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">
Dollar-cost averaging is an investment strategy where you split
the total amount to be invested across periodic purchases of a
@ -56,7 +56,7 @@
</div>
<div class="mb-4 media">
<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">
Financial independence is the status of having enough income, for
example with a passive income like dividends, to cover your living
@ -73,7 +73,7 @@
</div>
<div class="mb-4 media">
<div class="media-body">
<h3 class="h5 mt-0">FIRE</h3>
<h2 class="h5 mb-1 mt-0">FIRE</h2>
<div class="mb-1">
FIRE is a movement that promotes saving and investing to achieve
financial independence and early retirement.
@ -85,7 +85,7 @@
</div>
<div class="mb-4 media">
<div class="media-body">
<h3 class="h5 mt-0">Inflation</h3>
<h2 class="h5 mb-1 mt-0">Inflation</h2>
<div class="mb-1">
Inflation is an increase of the general price level for goods and
services in an economy over a period of time.
@ -102,7 +102,7 @@
@if (hasPermissionForSubscription) {
<div class="mb-4 media">
<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">
Personal finance tools are software applications that help
manage your money, track expenses, set budgets, monitor
@ -118,7 +118,7 @@
}
<div class="mb-4 media">
<div class="media-body">
<h3 class="h5 mt-0">Stagflation</h3>
<h2 class="h5 mb-1 mt-0">Stagflation</h2>
<div class="mb-1">
Stagflation describes a situation in which there is a stagnant
economy with high unemployment and high inflation.
@ -134,7 +134,7 @@
</div>
<div class="mb-4 media">
<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">
Stealth wealth is a lifestyle choice where you don’t openly show
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-4 media">
<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">
The <i>Boringly Getting Rich</i> guide supports you to get started
with investing. It introduces a strategy utilizing a broadly
@ -21,7 +21,7 @@
</div>
<div class="mb-4 media">
<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">
Before you can think of long-term investing, you have to get your
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-4 media">
<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">
With the <i>Crypto Coins Heatmap</i> you can track the daily market
movements of cryptocurrencies as a visual snapshot.
@ -17,7 +17,7 @@
</div>
<div class="mb-4 media">
<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">
The fear and greed index was developed by <i>CNNMoney</i> to measure
the primary emotions (fear and greed) that influence how much
@ -32,7 +32,7 @@
</div>
<div class="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">
<i>Inflation Chart</i> helps you find the intrinsic value of stock
markets, stock prices, goods and services by adjusting them to the
@ -48,7 +48,7 @@
</div>
<div class="media">
<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">
With the <i>Stock Heatmap</i> you can track the daily market movements
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">
@for (item of overviewItems; track item) {
<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>
<a [routerLink]="item.routerLink">Explore {{ item.title }} →</a>
</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 { IonIcon } from '@ionic/angular/standalone';
import { addIcons } from 'ionicons';
import { analyticsOutline, walletOutline } from 'ionicons/icons';
import { albumsOutline, analyticsOutline } from 'ionicons/icons';
import { DeviceDetectorService } from 'ngx-device-detector';
import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';
@ -43,7 +43,7 @@ export class GfZenPageComponent implements OnDestroy, OnInit {
routerLink: internalRoutes.zen.routerLink
},
{
iconName: 'wallet-outline',
iconName: 'albums-outline',
label: internalRoutes.zen.subRoutes.holdings.title,
routerLink: internalRoutes.zen.subRoutes.holdings.routerLink
}
@ -54,7 +54,7 @@ export class GfZenPageComponent implements OnDestroy, OnInit {
}
});
addIcons({ analyticsOutline, walletOutline });
addIcons({ albumsOutline, analyticsOutline });
}
public ngOnInit() {

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

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

BIN
apps/client/src/assets/images/sponsors/logo-lambdatest.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

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

@ -38,7 +38,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">279</context>
<context context-type="linenumber">283</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html</context>
@ -603,7 +603,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">443</context>
<context context-type="linenumber">451</context>
</context-group>
</trans-unit>
<trans-unit id="7022070615528435141" datatype="html">
@ -639,7 +639,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">470</context>
<context context-type="linenumber">478</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/benchmark/benchmark.component.html</context>
@ -1387,7 +1387,7 @@
<target state="translated">Està segur que vol eliminar aquesta plataforma?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.ts</context>
<context context-type="linenumber">107</context>
<context context-type="linenumber">108</context>
</context-group>
</trans-unit>
<trans-unit id="774722884061553775" datatype="html">
@ -1451,7 +1451,7 @@
<target state="translated">Està segur que vol eliminar aquesta etiqueta?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-tag/admin-tag.component.ts</context>
<context context-type="linenumber">103</context>
<context context-type="linenumber">104</context>
</context-group>
</trans-unit>
<trans-unit id="3653624484380347431" datatype="html">
@ -1659,11 +1659,11 @@
<target state="translated">Oooh! El testimoni de seguretat és incorrecte.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">294</context>
<context context-type="linenumber">298</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">153</context>
<context context-type="linenumber">154</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.component.ts</context>
@ -2895,7 +2895,7 @@
<target state="translated">Vaja, la transferència del saldo en efectiu ha fallat.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/accounts/accounts-page.component.ts</context>
<context context-type="linenumber">324</context>
<context context-type="linenumber">339</context>
</context-group>
</trans-unit>
<trans-unit id="4154970040744792968" datatype="html">
@ -5325,7 +5325,7 @@
<target state="translated">Clonar</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">449</context>
<context context-type="linenumber">457</context>
</context-group>
</trans-unit>
<trans-unit id="4631493229601603593" datatype="html">
@ -5333,7 +5333,7 @@
<target state="translated">Exporta l’esborrany com a ICS</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">459</context>
<context context-type="linenumber">467</context>
</context-group>
</trans-unit>
<trans-unit id="4239552960465242484" datatype="html">
@ -5341,7 +5341,7 @@
<target state="translated">De veritat vols suprimir aquestes activitats?</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">270</context>
<context context-type="linenumber">276</context>
</context-group>
</trans-unit>
<trans-unit id="670983159637074283" datatype="html">
@ -5349,7 +5349,7 @@
<target state="translated">Realment vols suprimir aquesta activitat?</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">280</context>
<context context-type="linenumber">286</context>
</context-group>
</trans-unit>
<trans-unit id="3105754554141014845" datatype="html">
@ -6428,6 +6428,14 @@
<context context-type="linenumber">83</context>
</context-group>
</trans-unit>
<trans-unit id="3477953895055172777" datatype="html">
<source>View Holding</source>
<target state="new">View Holding</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">444</context>
</context-group>
</trans-unit>
<trans-unit id="3486679398271885916" datatype="html">
<source>Canada</source>
<target state="new">Canada</target>
@ -7247,7 +7255,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">251</context>
<context context-type="linenumber">260</context>
</context-group>
</trans-unit>
<trans-unit id="1769610706135259386" datatype="html">
@ -7511,7 +7519,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">170</context>
</context-group>
</trans-unit>
<trans-unit id="6751986162338860240" datatype="html">
@ -8128,7 +8136,7 @@
<target state="new">Do you really want to generate a new security token?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">174</context>
<context context-type="linenumber">175</context>
</context-group>
</trans-unit>
<trans-unit id="5193539160604294602" datatype="html">

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

@ -242,7 +242,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">443</context>
<context context-type="linenumber">451</context>
</context-group>
</trans-unit>
<trans-unit id="7022070615528435141" datatype="html">
@ -278,7 +278,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">470</context>
<context context-type="linenumber">478</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/benchmark/benchmark.component.html</context>
@ -718,7 +718,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">279</context>
<context context-type="linenumber">283</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html</context>
@ -738,11 +738,11 @@
<target state="translated">Ups! Falsches Sicherheits-Token.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">294</context>
<context context-type="linenumber">298</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">153</context>
<context context-type="linenumber">154</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.component.ts</context>
@ -2242,7 +2242,7 @@
<target state="translated">Kopieren</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">449</context>
<context context-type="linenumber">457</context>
</context-group>
</trans-unit>
<trans-unit id="4631493229601603593" datatype="html">
@ -2250,7 +2250,7 @@
<target state="translated">Geplante Aktivität als ICS exportieren</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">459</context>
<context context-type="linenumber">467</context>
</context-group>
</trans-unit>
<trans-unit id="670983159637074283" datatype="html">
@ -2258,7 +2258,7 @@
<target state="translated">Möchtest du diese Aktivität wirklich löschen?</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">280</context>
<context context-type="linenumber">286</context>
</context-group>
</trans-unit>
<trans-unit id="5425547984857378790" datatype="html">
@ -3750,7 +3750,7 @@
<target state="translated">Möchtest du diese Aktivitäten wirklich löschen?</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">270</context>
<context context-type="linenumber">276</context>
</context-group>
</trans-unit>
<trans-unit id="7462039419171681274" datatype="html">
@ -3810,7 +3810,7 @@
<target state="translated">Möchtest du diese Plattform wirklich löschen?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.ts</context>
<context context-type="linenumber">107</context>
<context context-type="linenumber">108</context>
</context-group>
</trans-unit>
<trans-unit id="7966917302907632321" datatype="html">
@ -5376,7 +5376,7 @@
<target state="translated">Möchtest du diesen Tag wirklich löschen?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-tag/admin-tag.component.ts</context>
<context context-type="linenumber">103</context>
<context context-type="linenumber">104</context>
</context-group>
</trans-unit>
<trans-unit id="3653624484380347431" datatype="html">
@ -5568,7 +5568,7 @@
<target state="translated">Ups, der Cash-Bestand Transfer ist fehlgeschlagen.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/accounts/accounts-page.component.ts</context>
<context context-type="linenumber">324</context>
<context context-type="linenumber">339</context>
</context-group>
</trans-unit>
<trans-unit id="1189482335778578193" datatype="html">
@ -6452,6 +6452,14 @@
<context context-type="linenumber">83</context>
</context-group>
</trans-unit>
<trans-unit id="3477953895055172777" datatype="html">
<source>View Holding</source>
<target state="translated">Position ansehen</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">444</context>
</context-group>
</trans-unit>
<trans-unit id="3486679398271885916" datatype="html">
<source>Canada</source>
<target state="translated">Kanada</target>
@ -7271,7 +7279,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">251</context>
<context context-type="linenumber">260</context>
</context-group>
</trans-unit>
<trans-unit id="1769610706135259386" datatype="html">
@ -7535,7 +7543,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">170</context>
</context-group>
</trans-unit>
<trans-unit id="6751986162338860240" datatype="html">
@ -8128,7 +8136,7 @@
<target state="translated">Möchtest du wirklich ein neues Sicherheits-Token generieren?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">174</context>
<context context-type="linenumber">175</context>
</context-group>
</trans-unit>
<trans-unit id="5193539160604294602" datatype="html">

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

@ -243,7 +243,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">443</context>
<context context-type="linenumber">451</context>
</context-group>
</trans-unit>
<trans-unit id="7022070615528435141" datatype="html">
@ -279,7 +279,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">470</context>
<context context-type="linenumber">478</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/benchmark/benchmark.component.html</context>
@ -703,7 +703,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">279</context>
<context context-type="linenumber">283</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html</context>
@ -723,11 +723,11 @@
<target state="translated">Vaya! Token de seguridad incorrecto.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">294</context>
<context context-type="linenumber">298</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">153</context>
<context context-type="linenumber">154</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.component.ts</context>
@ -2227,7 +2227,7 @@
<target state="translated">Clonar</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">449</context>
<context context-type="linenumber">457</context>
</context-group>
</trans-unit>
<trans-unit id="4631493229601603593" datatype="html">
@ -2235,7 +2235,7 @@
<target state="translated">Exportar borrador como ICS</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">459</context>
<context context-type="linenumber">467</context>
</context-group>
</trans-unit>
<trans-unit id="670983159637074283" datatype="html">
@ -2243,7 +2243,7 @@
<target state="translated">¿Estás seguro de eliminar esta operación?</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">280</context>
<context context-type="linenumber">286</context>
</context-group>
</trans-unit>
<trans-unit id="5425547984857378790" datatype="html">
@ -3727,7 +3727,7 @@
<target state="translated">¿Realmente deseas eliminar estas actividades?</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">270</context>
<context context-type="linenumber">276</context>
</context-group>
</trans-unit>
<trans-unit id="7462039419171681274" datatype="html">
@ -3787,7 +3787,7 @@
<target state="translated">¿Realmente deseas eliminar esta plataforma?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.ts</context>
<context context-type="linenumber">107</context>
<context context-type="linenumber">108</context>
</context-group>
</trans-unit>
<trans-unit id="7966917302907632321" datatype="html">
@ -5353,7 +5353,7 @@
<target state="translated">¿Realmente deseas eliminar esta etiqueta?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-tag/admin-tag.component.ts</context>
<context context-type="linenumber">103</context>
<context context-type="linenumber">104</context>
</context-group>
</trans-unit>
<trans-unit id="3653624484380347431" datatype="html">
@ -5545,7 +5545,7 @@
<target state="translated">Oops, el saldo de efectivo no se ha transferido.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/accounts/accounts-page.component.ts</context>
<context context-type="linenumber">324</context>
<context context-type="linenumber">339</context>
</context-group>
</trans-unit>
<trans-unit id="1189482335778578193" datatype="html">
@ -6429,6 +6429,14 @@
<context context-type="linenumber">83</context>
</context-group>
</trans-unit>
<trans-unit id="3477953895055172777" datatype="html">
<source>View Holding</source>
<target state="new">View Holding</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">444</context>
</context-group>
</trans-unit>
<trans-unit id="3486679398271885916" datatype="html">
<source>Canada</source>
<target state="translated">Canadá</target>
@ -7248,7 +7256,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">251</context>
<context context-type="linenumber">260</context>
</context-group>
</trans-unit>
<trans-unit id="1769610706135259386" datatype="html">
@ -7512,7 +7520,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">170</context>
</context-group>
</trans-unit>
<trans-unit id="6751986162338860240" datatype="html">
@ -8129,7 +8137,7 @@
<target state="translated">¿Realmente deseas generar un nuevo token de seguridad?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">174</context>
<context context-type="linenumber">175</context>
</context-group>
</trans-unit>
<trans-unit id="5193539160604294602" datatype="html">

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

@ -298,7 +298,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">443</context>
<context context-type="linenumber">451</context>
</context-group>
</trans-unit>
<trans-unit id="7022070615528435141" datatype="html">
@ -334,7 +334,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">470</context>
<context context-type="linenumber">478</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/benchmark/benchmark.component.html</context>
@ -950,7 +950,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">279</context>
<context context-type="linenumber">283</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html</context>
@ -970,11 +970,11 @@
<target state="translated">Oups! Jeton de Sécurité Incorrect.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">294</context>
<context context-type="linenumber">298</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">153</context>
<context context-type="linenumber">154</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.component.ts</context>
@ -2702,7 +2702,7 @@
<target state="translated">Dupliquer</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">449</context>
<context context-type="linenumber">457</context>
</context-group>
</trans-unit>
<trans-unit id="4631493229601603593" datatype="html">
@ -2710,7 +2710,7 @@
<target state="translated">Exporter Brouillon sous ICS</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">459</context>
<context context-type="linenumber">467</context>
</context-group>
</trans-unit>
<trans-unit id="670983159637074283" datatype="html">
@ -2718,7 +2718,7 @@
<target state="translated">Voulez-vous vraiment supprimer cette activité ?</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">280</context>
<context context-type="linenumber">286</context>
</context-group>
</trans-unit>
<trans-unit id="5425547984857378790" datatype="html">
@ -3726,7 +3726,7 @@
<target state="translated">Voulez-vous vraiment supprimer toutes vos activités ?</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">270</context>
<context context-type="linenumber">276</context>
</context-group>
</trans-unit>
<trans-unit id="7462039419171681274" datatype="html">
@ -3786,7 +3786,7 @@
<target state="translated">Voulez-vous vraiment supprimer cette plateforme ?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.ts</context>
<context context-type="linenumber">107</context>
<context context-type="linenumber">108</context>
</context-group>
</trans-unit>
<trans-unit id="7966917302907632321" datatype="html">
@ -5352,7 +5352,7 @@
<target state="translated">Confirmez la suppression de ce tag ?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-tag/admin-tag.component.ts</context>
<context context-type="linenumber">103</context>
<context context-type="linenumber">104</context>
</context-group>
</trans-unit>
<trans-unit id="3653624484380347431" datatype="html">
@ -5544,7 +5544,7 @@
<target state="translated">Oops, échec du transfert de la cash balance.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/accounts/accounts-page.component.ts</context>
<context context-type="linenumber">324</context>
<context context-type="linenumber">339</context>
</context-group>
</trans-unit>
<trans-unit id="1189482335778578193" datatype="html">
@ -6428,6 +6428,14 @@
<context context-type="linenumber">83</context>
</context-group>
</trans-unit>
<trans-unit id="3477953895055172777" datatype="html">
<source>View Holding</source>
<target state="new">View Holding</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">444</context>
</context-group>
</trans-unit>
<trans-unit id="3486679398271885916" datatype="html">
<source>Canada</source>
<target state="translated">Canada</target>
@ -7247,7 +7255,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">251</context>
<context context-type="linenumber">260</context>
</context-group>
</trans-unit>
<trans-unit id="1769610706135259386" datatype="html">
@ -7511,7 +7519,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">170</context>
</context-group>
</trans-unit>
<trans-unit id="6751986162338860240" datatype="html">
@ -8128,7 +8136,7 @@
<target state="translated">Voulez-vous vraiment générer un nouveau jeton de sécurité?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">174</context>
<context context-type="linenumber">175</context>
</context-group>
</trans-unit>
<trans-unit id="5193539160604294602" datatype="html">

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

@ -243,7 +243,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">443</context>
<context context-type="linenumber">451</context>
</context-group>
</trans-unit>
<trans-unit id="7022070615528435141" datatype="html">
@ -279,7 +279,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">470</context>
<context context-type="linenumber">478</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/benchmark/benchmark.component.html</context>
@ -703,7 +703,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">279</context>
<context context-type="linenumber">283</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html</context>
@ -723,11 +723,11 @@
<target state="translated">Ops! Token di sicurezza errato.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">294</context>
<context context-type="linenumber">298</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">153</context>
<context context-type="linenumber">154</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.component.ts</context>
@ -2227,7 +2227,7 @@
<target state="translated">Clona</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">449</context>
<context context-type="linenumber">457</context>
</context-group>
</trans-unit>
<trans-unit id="4631493229601603593" datatype="html">
@ -2235,7 +2235,7 @@
<target state="translated">Esporta la bozza come ICS</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">459</context>
<context context-type="linenumber">467</context>
</context-group>
</trans-unit>
<trans-unit id="670983159637074283" datatype="html">
@ -2243,7 +2243,7 @@
<target state="translated">Vuoi davvero eliminare questa attività?</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">280</context>
<context context-type="linenumber">286</context>
</context-group>
</trans-unit>
<trans-unit id="5425547984857378790" datatype="html">
@ -3727,7 +3727,7 @@
<target state="translated">Vuoi davvero eliminare tutte le tue attività?</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">270</context>
<context context-type="linenumber">276</context>
</context-group>
</trans-unit>
<trans-unit id="7462039419171681274" datatype="html">
@ -3787,7 +3787,7 @@
<target state="translated">Vuoi davvero eliminare questa piattaforma?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.ts</context>
<context context-type="linenumber">107</context>
<context context-type="linenumber">108</context>
</context-group>
</trans-unit>
<trans-unit id="7966917302907632321" datatype="html">
@ -5353,7 +5353,7 @@
<target state="translated">Sei sicuro di voler eliminare questo tag?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-tag/admin-tag.component.ts</context>
<context context-type="linenumber">103</context>
<context context-type="linenumber">104</context>
</context-group>
</trans-unit>
<trans-unit id="3653624484380347431" datatype="html">
@ -5545,7 +5545,7 @@
<target state="translated">Ops, il trasferimento del saldo di cassa è fallito.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/accounts/accounts-page.component.ts</context>
<context context-type="linenumber">324</context>
<context context-type="linenumber">339</context>
</context-group>
</trans-unit>
<trans-unit id="1189482335778578193" datatype="html">
@ -6429,6 +6429,14 @@
<context context-type="linenumber">83</context>
</context-group>
</trans-unit>
<trans-unit id="3477953895055172777" datatype="html">
<source>View Holding</source>
<target state="new">View Holding</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">444</context>
</context-group>
</trans-unit>
<trans-unit id="3486679398271885916" datatype="html">
<source>Canada</source>
<target state="translated">Canada</target>
@ -7248,7 +7256,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">251</context>
<context context-type="linenumber">260</context>
</context-group>
</trans-unit>
<trans-unit id="1769610706135259386" datatype="html">
@ -7512,7 +7520,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">170</context>
</context-group>
</trans-unit>
<trans-unit id="6751986162338860240" datatype="html">
@ -8129,7 +8137,7 @@
<target state="translated">Vuoi davvero generare un nuovo token di sicurezza?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">174</context>
<context context-type="linenumber">175</context>
</context-group>
</trans-unit>
<trans-unit id="5193539160604294602" datatype="html">

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

@ -242,7 +242,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">443</context>
<context context-type="linenumber">451</context>
</context-group>
</trans-unit>
<trans-unit id="7022070615528435141" datatype="html">
@ -278,7 +278,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">470</context>
<context context-type="linenumber">478</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/benchmark/benchmark.component.html</context>
@ -702,7 +702,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">279</context>
<context context-type="linenumber">283</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html</context>
@ -722,11 +722,11 @@
<target state="translated">Oeps! Onjuiste beveiligingstoken.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">294</context>
<context context-type="linenumber">298</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">153</context>
<context context-type="linenumber">154</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.component.ts</context>
@ -2226,7 +2226,7 @@
<target state="translated">Kloon</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">449</context>
<context context-type="linenumber">457</context>
</context-group>
</trans-unit>
<trans-unit id="4631493229601603593" datatype="html">
@ -2234,7 +2234,7 @@
<target state="translated">Concept exporteren als ICS</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">459</context>
<context context-type="linenumber">467</context>
</context-group>
</trans-unit>
<trans-unit id="670983159637074283" datatype="html">
@ -2242,7 +2242,7 @@
<target state="translated">Wil je deze activiteit echt verwijderen?</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">280</context>
<context context-type="linenumber">286</context>
</context-group>
</trans-unit>
<trans-unit id="5425547984857378790" datatype="html">
@ -3726,7 +3726,7 @@
<target state="translated">Weet je zeker dat je alle activiteiten wilt verwijderen?</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">270</context>
<context context-type="linenumber">276</context>
</context-group>
</trans-unit>
<trans-unit id="7462039419171681274" datatype="html">
@ -3786,7 +3786,7 @@
<target state="translated">Wil je dit platform echt verwijderen?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.ts</context>
<context context-type="linenumber">107</context>
<context context-type="linenumber">108</context>
</context-group>
</trans-unit>
<trans-unit id="7966917302907632321" datatype="html">
@ -5352,7 +5352,7 @@
<target state="translated">Weet u zetker dat u dit label wilt verwijderen?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-tag/admin-tag.component.ts</context>
<context context-type="linenumber">103</context>
<context context-type="linenumber">104</context>
</context-group>
</trans-unit>
<trans-unit id="3653624484380347431" datatype="html">
@ -5544,7 +5544,7 @@
<target state="translated">Oeps, geldoverdracht is mislukt.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/accounts/accounts-page.component.ts</context>
<context context-type="linenumber">324</context>
<context context-type="linenumber">339</context>
</context-group>
</trans-unit>
<trans-unit id="1189482335778578193" datatype="html">
@ -6428,6 +6428,14 @@
<context context-type="linenumber">83</context>
</context-group>
</trans-unit>
<trans-unit id="3477953895055172777" datatype="html">
<source>View Holding</source>
<target state="new">View Holding</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">444</context>
</context-group>
</trans-unit>
<trans-unit id="3486679398271885916" datatype="html">
<source>Canada</source>
<target state="translated">Canada</target>
@ -7247,7 +7255,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">251</context>
<context context-type="linenumber">260</context>
</context-group>
</trans-unit>
<trans-unit id="1769610706135259386" datatype="html">
@ -7511,7 +7519,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">170</context>
</context-group>
</trans-unit>
<trans-unit id="6751986162338860240" datatype="html">
@ -8128,7 +8136,7 @@
<target state="translated">Wilt u echt een nieuwe securitytoken genereren?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">174</context>
<context context-type="linenumber">175</context>
</context-group>
</trans-unit>
<trans-unit id="5193539160604294602" datatype="html">

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

@ -519,7 +519,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">443</context>
<context context-type="linenumber">451</context>
</context-group>
</trans-unit>
<trans-unit id="7022070615528435141" datatype="html">
@ -555,7 +555,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">470</context>
<context context-type="linenumber">478</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/benchmark/benchmark.component.html</context>
@ -1207,7 +1207,7 @@
<target state="translated">Czy naprawdę chcesz usunąć tę platformę?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.ts</context>
<context context-type="linenumber">107</context>
<context context-type="linenumber">108</context>
</context-group>
</trans-unit>
<trans-unit id="774722884061553775" datatype="html">
@ -1271,7 +1271,7 @@
<target state="translated">Czy naprawdę chcesz usunąć ten tag?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-tag/admin-tag.component.ts</context>
<context context-type="linenumber">103</context>
<context context-type="linenumber">104</context>
</context-group>
</trans-unit>
<trans-unit id="3653624484380347431" datatype="html">
@ -1439,7 +1439,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">279</context>
<context context-type="linenumber">283</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html</context>
@ -1459,11 +1459,11 @@
<target state="translated">Ups! Nieprawidłowy token bezpieczeństwa.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">294</context>
<context context-type="linenumber">298</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">153</context>
<context context-type="linenumber">154</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.component.ts</context>
@ -2563,7 +2563,7 @@
<target state="translated">Ups, transfer salda nie powiódł się.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/accounts/accounts-page.component.ts</context>
<context context-type="linenumber">324</context>
<context context-type="linenumber">339</context>
</context-group>
</trans-unit>
<trans-unit id="4154970040744792968" datatype="html">
@ -3567,7 +3567,7 @@
<target state="translated">Czy na pewno chcesz usunąć te aktywności?</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">270</context>
<context context-type="linenumber">276</context>
</context-group>
</trans-unit>
<trans-unit id="1111435290645444471" datatype="html">
@ -4844,7 +4844,7 @@
<target state="translated">Sklonuj</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">449</context>
<context context-type="linenumber">457</context>
</context-group>
</trans-unit>
<trans-unit id="4631493229601603593" datatype="html">
@ -4852,7 +4852,7 @@
<target state="translated">Eksportuj Wersję Roboczą jako ICS</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">459</context>
<context context-type="linenumber">467</context>
</context-group>
</trans-unit>
<trans-unit id="670983159637074283" datatype="html">
@ -4860,7 +4860,7 @@
<target state="translated">Czy na pewno chcesz usunąć tę działalność?</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">280</context>
<context context-type="linenumber">286</context>
</context-group>
</trans-unit>
<trans-unit id="3060494754215793943" datatype="html">
@ -6428,6 +6428,14 @@
<context context-type="linenumber">83</context>
</context-group>
</trans-unit>
<trans-unit id="3477953895055172777" datatype="html">
<source>View Holding</source>
<target state="new">View Holding</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">444</context>
</context-group>
</trans-unit>
<trans-unit id="3486679398271885916" datatype="html">
<source>Canada</source>
<target state="translated">Kanada</target>
@ -7247,7 +7255,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">251</context>
<context context-type="linenumber">260</context>
</context-group>
</trans-unit>
<trans-unit id="1769610706135259386" datatype="html">
@ -7511,7 +7519,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">170</context>
</context-group>
</trans-unit>
<trans-unit id="6751986162338860240" datatype="html">
@ -8128,7 +8136,7 @@
<target state="translated">Czy na pewno chcesz wygenerować nowy token bezpieczeństwa?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">174</context>
<context context-type="linenumber">175</context>
</context-group>
</trans-unit>
<trans-unit id="5193539160604294602" datatype="html">

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

@ -298,7 +298,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">443</context>
<context context-type="linenumber">451</context>
</context-group>
</trans-unit>
<trans-unit id="7022070615528435141" datatype="html">
@ -334,7 +334,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">470</context>
<context context-type="linenumber">478</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/benchmark/benchmark.component.html</context>
@ -822,7 +822,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">279</context>
<context context-type="linenumber">283</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html</context>
@ -842,11 +842,11 @@
<target state="translated">Oops! Token de Segurança Incorreto.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">294</context>
<context context-type="linenumber">298</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">153</context>
<context context-type="linenumber">154</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.component.ts</context>
@ -2602,7 +2602,7 @@
<target state="translated">Clonar</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">449</context>
<context context-type="linenumber">457</context>
</context-group>
</trans-unit>
<trans-unit id="4631493229601603593" datatype="html">
@ -2610,7 +2610,7 @@
<target state="translated">Exportar Rascunho como ICS</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">459</context>
<context context-type="linenumber">467</context>
</context-group>
</trans-unit>
<trans-unit id="670983159637074283" datatype="html">
@ -2618,7 +2618,7 @@
<target state="translated">Deseja realmente eliminar esta atividade?</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">280</context>
<context context-type="linenumber">286</context>
</context-group>
</trans-unit>
<trans-unit id="5425547984857378790" datatype="html">
@ -3726,7 +3726,7 @@
<target state="translated">Deseja mesmo eliminar estas atividades?</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">270</context>
<context context-type="linenumber">276</context>
</context-group>
</trans-unit>
<trans-unit id="7462039419171681274" datatype="html">
@ -3786,7 +3786,7 @@
<target state="translated">Deseja mesmo eliminar esta plataforma?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.ts</context>
<context context-type="linenumber">107</context>
<context context-type="linenumber">108</context>
</context-group>
</trans-unit>
<trans-unit id="7966917302907632321" datatype="html">
@ -5352,7 +5352,7 @@
<target state="translated">Você realmente deseja excluir esta tag?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-tag/admin-tag.component.ts</context>
<context context-type="linenumber">103</context>
<context context-type="linenumber">104</context>
</context-group>
</trans-unit>
<trans-unit id="3653624484380347431" datatype="html">
@ -5544,7 +5544,7 @@
<target state="translated">Ops, a transferência do saldo em dinheiro falhou.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/accounts/accounts-page.component.ts</context>
<context context-type="linenumber">324</context>
<context context-type="linenumber">339</context>
</context-group>
</trans-unit>
<trans-unit id="1189482335778578193" datatype="html">
@ -6428,6 +6428,14 @@
<context context-type="linenumber">83</context>
</context-group>
</trans-unit>
<trans-unit id="3477953895055172777" datatype="html">
<source>View Holding</source>
<target state="new">View Holding</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">444</context>
</context-group>
</trans-unit>
<trans-unit id="3486679398271885916" datatype="html">
<source>Canada</source>
<target state="translated">Canadá</target>
@ -7247,7 +7255,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">251</context>
<context context-type="linenumber">260</context>
</context-group>
</trans-unit>
<trans-unit id="1769610706135259386" datatype="html">
@ -7511,7 +7519,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">170</context>
</context-group>
</trans-unit>
<trans-unit id="6751986162338860240" datatype="html">
@ -8128,7 +8136,7 @@
<target state="new">Do you really want to generate a new security token?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">174</context>
<context context-type="linenumber">175</context>
</context-group>
</trans-unit>
<trans-unit id="5193539160604294602" datatype="html">

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

@ -479,7 +479,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">443</context>
<context context-type="linenumber">451</context>
</context-group>
</trans-unit>
<trans-unit id="7022070615528435141" datatype="html">
@ -515,7 +515,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">470</context>
<context context-type="linenumber">478</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/benchmark/benchmark.component.html</context>
@ -1119,7 +1119,7 @@
<target state="translated">Bu platformu silmeyi gerçekten istiyor musunuz?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.ts</context>
<context context-type="linenumber">107</context>
<context context-type="linenumber">108</context>
</context-group>
</trans-unit>
<trans-unit id="774722884061553775" datatype="html">
@ -1295,7 +1295,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">279</context>
<context context-type="linenumber">283</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html</context>
@ -1315,11 +1315,11 @@
<target state="translated">Hay Allah! Güvenlik anahtarı yanlış.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">294</context>
<context context-type="linenumber">298</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">153</context>
<context context-type="linenumber">154</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.component.ts</context>
@ -3071,7 +3071,7 @@
<target state="translated">Tüm işlemlerinizi silmeyi gerçekten istiyor musunuz?</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">270</context>
<context context-type="linenumber">276</context>
</context-group>
</trans-unit>
<trans-unit id="1111435290645444471" datatype="html">
@ -4564,7 +4564,7 @@
<target state="translated">Klonla</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">449</context>
<context context-type="linenumber">457</context>
</context-group>
</trans-unit>
<trans-unit id="4631493229601603593" datatype="html">
@ -4572,7 +4572,7 @@
<target state="translated">Taslakları ICS Olarak Dışa Aktar</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">459</context>
<context context-type="linenumber">467</context>
</context-group>
</trans-unit>
<trans-unit id="670983159637074283" datatype="html">
@ -4580,7 +4580,7 @@
<target state="translated">TBu işlemi silmeyi gerçekten istiyor musunuz?</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">280</context>
<context context-type="linenumber">286</context>
</context-group>
</trans-unit>
<trans-unit id="5425547984857378790" datatype="html">
@ -5352,7 +5352,7 @@
<target state="translated">Bu etiketi silmeyi gerçekten istiyor musunuz?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-tag/admin-tag.component.ts</context>
<context context-type="linenumber">103</context>
<context context-type="linenumber">104</context>
</context-group>
</trans-unit>
<trans-unit id="3653624484380347431" datatype="html">
@ -5544,7 +5544,7 @@
<target state="translated">Hay Allah, Nakit bakiyesi tranferi başarısız oldu.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/accounts/accounts-page.component.ts</context>
<context context-type="linenumber">324</context>
<context context-type="linenumber">339</context>
</context-group>
</trans-unit>
<trans-unit id="1189482335778578193" datatype="html">
@ -6428,6 +6428,14 @@
<context context-type="linenumber">83</context>
</context-group>
</trans-unit>
<trans-unit id="3477953895055172777" datatype="html">
<source>View Holding</source>
<target state="new">View Holding</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">444</context>
</context-group>
</trans-unit>
<trans-unit id="3486679398271885916" datatype="html">
<source>Canada</source>
<target state="translated">Kanada</target>
@ -7247,7 +7255,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">251</context>
<context context-type="linenumber">260</context>
</context-group>
</trans-unit>
<trans-unit id="1769610706135259386" datatype="html">
@ -7511,7 +7519,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">170</context>
</context-group>
</trans-unit>
<trans-unit id="6751986162338860240" datatype="html">
@ -8128,7 +8136,7 @@
<target state="new">Do you really want to generate a new security token?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">174</context>
<context context-type="linenumber">175</context>
</context-group>
</trans-unit>
<trans-unit id="5193539160604294602" datatype="html">

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

@ -38,7 +38,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">279</context>
<context context-type="linenumber">283</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html</context>
@ -631,7 +631,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">443</context>
<context context-type="linenumber">451</context>
</context-group>
</trans-unit>
<trans-unit id="7022070615528435141" datatype="html">
@ -667,7 +667,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">470</context>
<context context-type="linenumber">478</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/benchmark/benchmark.component.html</context>
@ -1387,7 +1387,7 @@
<target state="translated">Ви дійсно хочете видалити цю платформу?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.ts</context>
<context context-type="linenumber">107</context>
<context context-type="linenumber">108</context>
</context-group>
</trans-unit>
<trans-unit id="774722884061553775" datatype="html">
@ -1571,7 +1571,7 @@
<target state="translated">Ви дійсно хочете видалити цей тег?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-tag/admin-tag.component.ts</context>
<context context-type="linenumber">103</context>
<context context-type="linenumber">104</context>
</context-group>
</trans-unit>
<trans-unit id="3653624484380347431" datatype="html">
@ -1775,11 +1775,11 @@
<target state="translated">Упс! Неправильний Секретний Токен.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">294</context>
<context context-type="linenumber">298</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">153</context>
<context context-type="linenumber">154</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.component.ts</context>
@ -2647,7 +2647,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">251</context>
<context context-type="linenumber">260</context>
</context-group>
</trans-unit>
<trans-unit id="1769610706135259386" datatype="html">
@ -3183,7 +3183,7 @@
<target state="translated">Упс, перенесення балансу готівки не вдалося.</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/accounts/accounts-page.component.ts</context>
<context context-type="linenumber">324</context>
<context context-type="linenumber">339</context>
</context-group>
</trans-unit>
<trans-unit id="4154970040744792968" datatype="html">
@ -6067,7 +6067,7 @@
<target state="translated">Клонувати</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">449</context>
<context context-type="linenumber">457</context>
</context-group>
</trans-unit>
<trans-unit id="4631493229601603593" datatype="html">
@ -6075,7 +6075,7 @@
<target state="translated">Експортувати чернетку як ICS</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">459</context>
<context context-type="linenumber">467</context>
</context-group>
</trans-unit>
<trans-unit id="4239552960465242484" datatype="html">
@ -6083,7 +6083,7 @@
<target state="translated">Ви дійсно хочете видалити ці дії?</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">270</context>
<context context-type="linenumber">276</context>
</context-group>
</trans-unit>
<trans-unit id="670983159637074283" datatype="html">
@ -6091,7 +6091,7 @@
<target state="translated">Ви дійсно хочете видалити цю активність?</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">280</context>
<context context-type="linenumber">286</context>
</context-group>
</trans-unit>
<trans-unit id="3105754554141014845" datatype="html">
@ -7054,6 +7054,14 @@
<context context-type="linenumber">83</context>
</context-group>
</trans-unit>
<trans-unit id="3477953895055172777" datatype="html">
<source>View Holding</source>
<target state="new">View Holding</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">444</context>
</context-group>
</trans-unit>
<trans-unit id="3486679398271885916" datatype="html">
<source>Canada</source>
<target state="translated">Канада</target>
@ -7511,7 +7519,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">170</context>
</context-group>
</trans-unit>
<trans-unit id="6751986162338860240" datatype="html">
@ -8128,7 +8136,7 @@
<target state="new">Do you really want to generate a new security token?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">174</context>
<context context-type="linenumber">175</context>
</context-group>
</trans-unit>
<trans-unit id="5193539160604294602" datatype="html">

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

@ -498,7 +498,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">443</context>
<context context-type="linenumber">451</context>
</context-group>
</trans-unit>
<trans-unit id="7022070615528435141" datatype="html">
@ -533,7 +533,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">470</context>
<context context-type="linenumber">478</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/benchmark/benchmark.component.html</context>
@ -1143,7 +1143,7 @@
<source>Do you really want to delete this platform?</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.ts</context>
<context context-type="linenumber">107</context>
<context context-type="linenumber">108</context>
</context-group>
</trans-unit>
<trans-unit id="774722884061553775" datatype="html">
@ -1200,7 +1200,7 @@
<source>Do you really want to delete this tag?</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-tag/admin-tag.component.ts</context>
<context context-type="linenumber">103</context>
<context context-type="linenumber">104</context>
</context-group>
</trans-unit>
<trans-unit id="3653624484380347431" datatype="html">
@ -1351,7 +1351,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">279</context>
<context context-type="linenumber">283</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html</context>
@ -1370,11 +1370,11 @@
<source>Oops! Incorrect Security Token.</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">294</context>
<context context-type="linenumber">298</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">153</context>
<context context-type="linenumber">154</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.component.ts</context>
@ -2375,7 +2375,7 @@
<source>Oops, cash balance transfer has failed.</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/accounts/accounts-page.component.ts</context>
<context context-type="linenumber">324</context>
<context context-type="linenumber">339</context>
</context-group>
</trans-unit>
<trans-unit id="4154970040744792968" datatype="html">
@ -3290,7 +3290,7 @@
<source>Do you really want to delete these activities?</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">270</context>
<context context-type="linenumber">276</context>
</context-group>
</trans-unit>
<trans-unit id="1111435290645444471" datatype="html">
@ -4459,21 +4459,21 @@
<source>Clone</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">449</context>
<context context-type="linenumber">457</context>
</context-group>
</trans-unit>
<trans-unit id="4631493229601603593" datatype="html">
<source>Export Draft as ICS</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">459</context>
<context context-type="linenumber">467</context>
</context-group>
</trans-unit>
<trans-unit id="670983159637074283" datatype="html">
<source>Do you really want to delete this activity?</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">280</context>
<context context-type="linenumber">286</context>
</context-group>
</trans-unit>
<trans-unit id="3060494754215793943" datatype="html">
@ -5807,6 +5807,13 @@
<context context-type="linenumber">99</context>
</context-group>
</trans-unit>
<trans-unit id="3477953895055172777" datatype="html">
<source>View Holding</source>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">444</context>
</context-group>
</trans-unit>
<trans-unit id="3486679398271885916" datatype="html">
<source>Canada</source>
<context-group purpose="location">
@ -6611,7 +6618,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">251</context>
<context context-type="linenumber">260</context>
</context-group>
</trans-unit>
<trans-unit id="4068738931505527681" datatype="html">
@ -6845,7 +6852,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">170</context>
</context-group>
</trans-unit>
<trans-unit id="5343721620901142551" datatype="html">
@ -7371,7 +7378,7 @@
<source>Do you really want to generate a new security token?</source>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">174</context>
<context context-type="linenumber">175</context>
</context-group>
</trans-unit>
<trans-unit id="1419479195323304896" datatype="html">

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

@ -528,7 +528,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">443</context>
<context context-type="linenumber">451</context>
</context-group>
</trans-unit>
<trans-unit id="7022070615528435141" datatype="html">
@ -564,7 +564,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">470</context>
<context context-type="linenumber">478</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/benchmark/benchmark.component.html</context>
@ -1216,7 +1216,7 @@
<target state="translated">您真的要删除这个平台吗?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-platform/admin-platform.component.ts</context>
<context context-type="linenumber">107</context>
<context context-type="linenumber">108</context>
</context-group>
</trans-unit>
<trans-unit id="774722884061553775" datatype="html">
@ -1280,7 +1280,7 @@
<target state="translated">您真的要删除此标签吗?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/admin-tag/admin-tag.component.ts</context>
<context context-type="linenumber">103</context>
<context context-type="linenumber">104</context>
</context-group>
</trans-unit>
<trans-unit id="3653624484380347431" datatype="html">
@ -1448,7 +1448,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">279</context>
<context context-type="linenumber">283</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html</context>
@ -1468,11 +1468,11 @@
<target state="translated">哎呀!安全令牌不正确。</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/header/header.component.ts</context>
<context context-type="linenumber">294</context>
<context context-type="linenumber">298</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">153</context>
<context context-type="linenumber">154</context>
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-settings/user-account-settings.component.ts</context>
@ -2572,7 +2572,7 @@
<target state="translated">糟糕,现金余额转账失败。</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/pages/accounts/accounts-page.component.ts</context>
<context context-type="linenumber">324</context>
<context context-type="linenumber">339</context>
</context-group>
</trans-unit>
<trans-unit id="4154970040744792968" datatype="html">
@ -3576,7 +3576,7 @@
<target state="translated">您确定要删除这些活动吗?</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">270</context>
<context context-type="linenumber">276</context>
</context-group>
</trans-unit>
<trans-unit id="1111435290645444471" datatype="html">
@ -4873,7 +4873,7 @@
<target state="translated">克隆</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">449</context>
<context context-type="linenumber">457</context>
</context-group>
</trans-unit>
<trans-unit id="4631493229601603593" datatype="html">
@ -4881,7 +4881,7 @@
<target state="translated">将汇票导出为 ICS</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">459</context>
<context context-type="linenumber">467</context>
</context-group>
</trans-unit>
<trans-unit id="670983159637074283" datatype="html">
@ -4889,7 +4889,7 @@
<target state="translated">您确实要删除此活动吗?</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.ts</context>
<context context-type="linenumber">280</context>
<context context-type="linenumber">286</context>
</context-group>
</trans-unit>
<trans-unit id="3060494754215793943" datatype="html">
@ -6429,6 +6429,14 @@
<context context-type="linenumber">83</context>
</context-group>
</trans-unit>
<trans-unit id="3477953895055172777" datatype="html">
<source>View Holding</source>
<target state="new">View Holding</target>
<context-group purpose="location">
<context context-type="sourcefile">libs/ui/src/lib/activities-table/activities-table.component.html</context>
<context context-type="linenumber">444</context>
</context-group>
</trans-unit>
<trans-unit id="3486679398271885916" datatype="html">
<source>Canada</source>
<target state="translated">加拿大</target>
@ -7248,7 +7256,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">251</context>
<context context-type="linenumber">260</context>
</context-group>
</trans-unit>
<trans-unit id="1769610706135259386" datatype="html">
@ -7512,7 +7520,7 @@
</context-group>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">169</context>
<context context-type="linenumber">170</context>
</context-group>
</trans-unit>
<trans-unit id="6751986162338860240" datatype="html">
@ -8129,7 +8137,7 @@
<target state="translated">您真的想要生成一个新的安全令牌吗?</target>
<context-group purpose="location">
<context context-type="sourcefile">apps/client/src/app/components/user-account-access/user-account-access.component.ts</context>
<context context-type="linenumber">174</context>
<context context-type="linenumber">175</context>
</context-group>
</trans-unit>
<trans-unit id="5193539160604294602" datatype="html">

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

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

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

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

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

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

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

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

6
libs/ui/src/lib/tags-selector/tags-selector.component.ts

@ -5,12 +5,10 @@ import {
Component,
CUSTOM_ELEMENTS_SCHEMA,
ElementRef,
EventEmitter,
Input,
OnChanges,
OnDestroy,
OnInit,
Output,
signal,
ViewChild
} from '@angular/core';
@ -66,8 +64,6 @@ export class GfTagsSelectorComponent
@Input() tags: Tag[];
@Input() tagsAvailable: Tag[];
@Output() tagsChanged = new EventEmitter<Tag[]>();
@ViewChild('tagInput') tagInput: ElementRef<HTMLInputElement>;
public filteredOptions: Subject<Tag[]> = new BehaviorSubject([]);
@ -115,7 +111,6 @@ export class GfTagsSelectorComponent
});
const newTags = this.tagsSelected();
this.tagsChanged.emit(newTags);
this.onChange(newTags);
this.onTouched();
this.tagInput.nativeElement.value = '';
@ -130,7 +125,6 @@ export class GfTagsSelectorComponent
});
const newTags = this.tagsSelected();
this.tagsChanged.emit(newTags);
this.onChange(newTags);
this.onTouched();
this.updateFilters();

206
package-lock.json

@ -1,12 +1,12 @@
{
"name": "ghostfolio",
"version": "2.211.0",
"version": "2.213.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "ghostfolio",
"version": "2.211.0",
"version": "2.213.0",
"hasInstallScript": true,
"license": "AGPL-3.0",
"dependencies": {
@ -31,17 +31,17 @@
"@internationalized/number": "3.6.3",
"@ionic/angular": "8.7.3",
"@keyv/redis": "4.4.0",
"@nestjs/bull": "11.0.2",
"@nestjs/bull": "11.0.4",
"@nestjs/cache-manager": "3.0.1",
"@nestjs/common": "11.1.3",
"@nestjs/common": "11.1.8",
"@nestjs/config": "4.0.2",
"@nestjs/core": "11.1.3",
"@nestjs/core": "11.1.8",
"@nestjs/event-emitter": "3.0.1",
"@nestjs/jwt": "11.0.0",
"@nestjs/jwt": "11.0.1",
"@nestjs/passport": "11.0.5",
"@nestjs/platform-express": "11.1.3",
"@nestjs/schedule": "6.0.0",
"@nestjs/serve-static": "5.0.3",
"@nestjs/platform-express": "11.1.8",
"@nestjs/schedule": "6.0.1",
"@nestjs/serve-static": "5.0.4",
"@openrouter/ai-sdk-provider": "0.7.2",
"@prisma/client": "6.18.0",
"@simplewebauthn/browser": "13.1.0",
@ -112,8 +112,8 @@
"@angular/pwa": "20.2.2",
"@eslint/eslintrc": "3.3.1",
"@eslint/js": "9.35.0",
"@nestjs/schematics": "11.0.5",
"@nestjs/testing": "11.1.3",
"@nestjs/schematics": "11.0.9",
"@nestjs/testing": "11.1.8",
"@nx/angular": "21.5.1",
"@nx/cypress": "21.5.1",
"@nx/eslint-plugin": "21.5.1",
@ -8997,12 +8997,12 @@
}
},
"node_modules/@nestjs/bull": {
"version": "11.0.2",
"resolved": "https://registry.npmjs.org/@nestjs/bull/-/bull-11.0.2.tgz",
"integrity": "sha512-RjyP9JZUuLmMhmq1TMNIZqolkAd14az1jyXMMVki+C9dYvaMjWzBSwcZAtKs9Pk15Rm7qN1xn3R11aMV2Xv4gg==",
"version": "11.0.4",
"resolved": "https://registry.npmjs.org/@nestjs/bull/-/bull-11.0.4.tgz",
"integrity": "sha512-QVz2PR/rJF/isy7otVnMTSqLf/O71p9Ka7lBZt9Gm+NQFv8fcH2L11GL7TA0whyCcw/kAX5iRepUXz/wed4JoA==",
"license": "MIT",
"dependencies": {
"@nestjs/bull-shared": "^11.0.2",
"@nestjs/bull-shared": "^11.0.4",
"tslib": "2.8.1"
},
"peerDependencies": {
@ -9012,9 +9012,9 @@
}
},
"node_modules/@nestjs/bull-shared": {
"version": "11.0.3",
"resolved": "https://registry.npmjs.org/@nestjs/bull-shared/-/bull-shared-11.0.3.tgz",
"integrity": "sha512-CaHniPkLAxis6fAB1DB8WZELQv8VPCLedbj7iP0VQ1pz74i6NSzG9mBg6tOomXq/WW4la4P4OMGEQ48UAJh20A==",
"version": "11.0.4",
"resolved": "https://registry.npmjs.org/@nestjs/bull-shared/-/bull-shared-11.0.4.tgz",
"integrity": "sha512-VBJcDHSAzxQnpcDfA0kt9MTGUD1XZzfByV70su0W0eDCQ9aqIEBlzWRW21tv9FG9dIut22ysgDidshdjlnczLw==",
"license": "MIT",
"dependencies": {
"tslib": "2.8.1"
@ -9038,14 +9038,14 @@
}
},
"node_modules/@nestjs/common": {
"version": "11.1.3",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.3.tgz",
"integrity": "sha512-ogEK+GriWodIwCw6buQ1rpcH4Kx+G7YQ9EwuPySI3rS05pSdtQ++UhucjusSI9apNidv+QURBztJkRecwwJQXg==",
"version": "11.1.8",
"resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.8.tgz",
"integrity": "sha512-bbsOqwld/GdBfiRNc4nnjyWWENDEicq4SH+R5AuYatvf++vf1x5JIsHB1i1KtfZMD3eRte0D4K9WXuAYil6XAg==",
"license": "MIT",
"dependencies": {
"file-type": "21.0.0",
"iterare": "1.2.1",
"load-esm": "1.0.2",
"load-esm": "1.0.3",
"tslib": "2.8.1",
"uid": "2.0.2"
},
@ -9111,16 +9111,16 @@
}
},
"node_modules/@nestjs/core": {
"version": "11.1.3",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.3.tgz",
"integrity": "sha512-5lTni0TCh8x7bXETRD57pQFnKnEg1T6M+VLE7wAmyQRIecKQU+2inRGZD+A4v2DC1I04eA0WffP0GKLxjOKlzw==",
"version": "11.1.8",
"resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.8.tgz",
"integrity": "sha512-7riWfmTmMhCJHZ5ZiaG+crj4t85IPCq/wLRuOUSigBYyFT2JZj0lVHtAdf4Davp9ouNI8GINBDt9h9b5Gz9nTw==",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
"@nuxt/opencollective": "0.4.1",
"fast-safe-stringify": "2.1.1",
"iterare": "1.2.1",
"path-to-regexp": "8.2.0",
"path-to-regexp": "8.3.0",
"tslib": "2.8.1",
"uid": "2.0.2"
},
@ -9165,12 +9165,12 @@
}
},
"node_modules/@nestjs/jwt": {
"version": "11.0.0",
"resolved": "https://registry.npmjs.org/@nestjs/jwt/-/jwt-11.0.0.tgz",
"integrity": "sha512-v7YRsW3Xi8HNTsO+jeHSEEqelX37TVWgwt+BcxtkG/OfXJEOs6GZdbdza200d6KqId1pJQZ6UPj1F0M6E+mxaA==",
"version": "11.0.1",
"resolved": "https://registry.npmjs.org/@nestjs/jwt/-/jwt-11.0.1.tgz",
"integrity": "sha512-HXSsc7SAnCnjA98TsZqrE7trGtHDnYXWp4Ffy6LwSmck1QvbGYdMzBquXofX5l6tIRpeY4Qidl2Ti2CVG77Pdw==",
"license": "MIT",
"dependencies": {
"@types/jsonwebtoken": "9.0.7",
"@types/jsonwebtoken": "9.0.10",
"jsonwebtoken": "9.0.2"
},
"peerDependencies": {
@ -9188,15 +9188,15 @@
}
},
"node_modules/@nestjs/platform-express": {
"version": "11.1.3",
"resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.3.tgz",
"integrity": "sha512-hEDNMlaPiBO72fxxX/CuRQL3MEhKRc/sIYGVoXjrnw6hTxZdezvvM6A95UaLsYknfmcZZa/CdG1SMBZOu9agHQ==",
"version": "11.1.8",
"resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.8.tgz",
"integrity": "sha512-rL6pZH9BW7BnL5X2eWbJMtt86uloAKjFgyY5+L2UkizgfEp7rgAs0+Z1z0BcW2Pgu5+q8O7RKPNyHJ/9ZNz/ZQ==",
"license": "MIT",
"dependencies": {
"cors": "2.8.5",
"express": "5.1.0",
"multer": "2.0.1",
"path-to-regexp": "8.2.0",
"multer": "2.0.2",
"path-to-regexp": "8.3.0",
"tslib": "2.8.1"
},
"funding": {
@ -9209,12 +9209,12 @@
}
},
"node_modules/@nestjs/schedule": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/@nestjs/schedule/-/schedule-6.0.0.tgz",
"integrity": "sha512-aQySMw6tw2nhitELXd3EiRacQRgzUKD9mFcUZVOJ7jPLqIBvXOyvRWLsK9SdurGA+jjziAlMef7iB5ZEFFoQpw==",
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/@nestjs/schedule/-/schedule-6.0.1.tgz",
"integrity": "sha512-v3yO6cSPAoBSSyH67HWnXHzuhPhSNZhRmLY38JvCt2sqY8sPMOODpcU1D79iUMFf7k16DaMEbL4Mgx61ZhiC8Q==",
"license": "MIT",
"dependencies": {
"cron": "4.3.0"
"cron": "4.3.3"
},
"peerDependencies": {
"@nestjs/common": "^10.0.0 || ^11.0.0",
@ -9222,15 +9222,15 @@
}
},
"node_modules/@nestjs/schematics": {
"version": "11.0.5",
"resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-11.0.5.tgz",
"integrity": "sha512-T50SCNyqCZ/fDssaOD7meBKLZ87ebRLaJqZTJPvJKjlib1VYhMOCwXYsr7bjMPmuPgiQHOwvppz77xN/m6GM7A==",
"version": "11.0.9",
"resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-11.0.9.tgz",
"integrity": "sha512-0NfPbPlEaGwIT8/TCThxLzrlz3yzDNkfRNpbL7FiplKq3w4qXpJg0JYwqgMEJnLQZm3L/L/5XjoyfJHUO3qX9g==",
"dev": true,
"license": "MIT",
"dependencies": {
"@angular-devkit/core": "19.2.6",
"@angular-devkit/schematics": "19.2.6",
"comment-json": "4.2.5",
"@angular-devkit/core": "19.2.17",
"@angular-devkit/schematics": "19.2.17",
"comment-json": "4.4.1",
"jsonc-parser": "3.3.1",
"pluralize": "8.0.0"
},
@ -9239,9 +9239,9 @@
}
},
"node_modules/@nestjs/schematics/node_modules/@angular-devkit/core": {
"version": "19.2.6",
"resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.6.tgz",
"integrity": "sha512-WFgiYhrDMq83UNaGRAneIM7CYYdBozD+yYA9BjoU8AgBLKtrvn6S8ZcjKAk5heoHtY/u8pEb0mwDTz9gxFmJZQ==",
"version": "19.2.17",
"resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.17.tgz",
"integrity": "sha512-Ah008x2RJkd0F+NLKqIpA34/vUGwjlprRCkvddjDopAWRzYn6xCkz1Tqwuhn0nR1Dy47wTLKYD999TYl5ONOAQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -9267,13 +9267,13 @@
}
},
"node_modules/@nestjs/schematics/node_modules/@angular-devkit/schematics": {
"version": "19.2.6",
"resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.6.tgz",
"integrity": "sha512-YTAxNnT++5eflx19OUHmOWu597/TbTel+QARiZCv1xQw99+X8DCKKOUXtqBRd53CAHlREDI33Rn/JLY3NYgMLQ==",
"version": "19.2.17",
"resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.17.tgz",
"integrity": "sha512-ADfbaBsrG8mBF6Mfs+crKA/2ykB8AJI50Cv9tKmZfwcUcyAdmTr+vVvhsBCfvUAEokigSsgqgpYxfkJVxhJYeg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@angular-devkit/core": "19.2.6",
"@angular-devkit/core": "19.2.17",
"jsonc-parser": "3.3.1",
"magic-string": "0.30.17",
"ora": "5.4.1",
@ -9371,12 +9371,12 @@
"license": "ISC"
},
"node_modules/@nestjs/serve-static": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/@nestjs/serve-static/-/serve-static-5.0.3.tgz",
"integrity": "sha512-0jFjTlSVSLrI+mot8lfm+h2laXtKzCvgsVStv9T1ZBZTDwS26gM5czIhIESmWAod0PfrbCDFiu9C1MglObL8VA==",
"version": "5.0.4",
"resolved": "https://registry.npmjs.org/@nestjs/serve-static/-/serve-static-5.0.4.tgz",
"integrity": "sha512-3kO1M9D3vsPyWPFardxIjUYeuolS58PnhCoBTkS7t3BrdZFZCKHnBZ15js+UOzOR2Q6HmD7ssGjLd0DVYVdvOw==",
"license": "MIT",
"dependencies": {
"path-to-regexp": "8.2.0"
"path-to-regexp": "8.3.0"
},
"peerDependencies": {
"@fastify/static": "^8.0.4",
@ -9398,9 +9398,9 @@
}
},
"node_modules/@nestjs/testing": {
"version": "11.1.3",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.3.tgz",
"integrity": "sha512-CeXG6/eEqgFIkPkmU00y18Dd3DLOIDFhPItzJK1SWckKo6IhcnfoRJzGx75bmuvUMjb51j6An96S/+MJ2ty9jA==",
"version": "11.1.8",
"resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.8.tgz",
"integrity": "sha512-E6K+0UTKztcPxJzLnQa7S34lFjZbrj3Z1r7c5y5WDrL1m5HD1H4AeyBhicHgdaFmxjLAva2bq0sYKy/S7cdeYA==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -14449,11 +14449,12 @@
"license": "MIT"
},
"node_modules/@types/jsonwebtoken": {
"version": "9.0.7",
"resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.7.tgz",
"integrity": "sha512-ugo316mmTYBl2g81zDFnZ7cfxlut3o+/EQdaP7J8QN2kY6lJ22hmQYCK5EHcJHbrW+dkCGSCPgbG8JtYj6qSrg==",
"version": "9.0.10",
"resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.10.tgz",
"integrity": "sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA==",
"license": "MIT",
"dependencies": {
"@types/ms": "*",
"@types/node": "*"
}
},
@ -14465,9 +14466,9 @@
"license": "MIT"
},
"node_modules/@types/luxon": {
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.6.2.tgz",
"integrity": "sha512-R/BdP7OxEMc44l2Ex5lSXHoIXTB2JLNa3y2QISIbr58U/YcsffyQrYW//hZSdrfxrjRZj3GcUoxMPGdO8gSYuw==",
"version": "3.7.1",
"resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.7.1.tgz",
"integrity": "sha512-H3iskjFIAn5SlJU7OuxUmTEpebK6TKB8rxZShDslBMZJ5u9S//KM1sbdAisiSrqwLQncVjnpi2OK2J51h+4lsg==",
"license": "MIT"
},
"node_modules/@types/mdx": {
@ -14484,6 +14485,12 @@
"dev": true,
"license": "MIT"
},
"node_modules/@types/ms": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz",
"integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==",
"license": "MIT"
},
"node_modules/@types/node": {
"version": "22.15.17",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.17.tgz",
@ -18266,17 +18273,15 @@
}
},
"node_modules/comment-json": {
"version": "4.2.5",
"resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.5.tgz",
"integrity": "sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw==",
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.4.1.tgz",
"integrity": "sha512-r1To31BQD5060QdkC+Iheai7gHwoSZobzunqkf2/kQ6xIAfJyrKNAFUwdKvkK7Qgu7pVTKQEa7ok7Ed3ycAJgg==",
"dev": true,
"license": "MIT",
"dependencies": {
"array-timsort": "^1.0.3",
"core-util-is": "^1.0.3",
"esprima": "^4.0.1",
"has-own-prop": "^2.0.0",
"repeat-string": "^1.6.1"
"esprima": "^4.0.1"
},
"engines": {
"node": ">= 6"
@ -19323,13 +19328,13 @@
"license": "MIT"
},
"node_modules/cron": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/cron/-/cron-4.3.0.tgz",
"integrity": "sha512-ciiYNLfSlF9MrDqnbMdRWFiA6oizSF7kA1osPP9lRzNu0Uu+AWog1UKy7SkckiDY2irrNjeO6qLyKnXC8oxmrw==",
"version": "4.3.3",
"resolved": "https://registry.npmjs.org/cron/-/cron-4.3.3.tgz",
"integrity": "sha512-B/CJj5yL3sjtlun6RtYHvoSB26EmQ2NUmhq9ZiJSyKIM4K/fqfh9aelDFlIayD2YMeFZqWLi9hHV+c+pq2Djkw==",
"license": "MIT",
"dependencies": {
"@types/luxon": "~3.6.0",
"luxon": "~3.6.0"
"@types/luxon": "~3.7.0",
"luxon": "~3.7.0"
},
"engines": {
"node": ">=18.x"
@ -24205,16 +24210,6 @@
"node": ">=8"
}
},
"node_modules/has-own-prop": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz",
"integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/has-property-descriptors": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
@ -31620,9 +31615,9 @@
}
},
"node_modules/load-esm": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/load-esm/-/load-esm-1.0.2.tgz",
"integrity": "sha512-nVAvWk/jeyrWyXEAs84mpQCYccxRqgKY4OznLuJhJCa0XsPSfdOIr2zvBZEj3IHEHbX97jjscKRRV539bW0Gpw==",
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/load-esm/-/load-esm-1.0.3.tgz",
"integrity": "sha512-v5xlu8eHD1+6r8EHTg6hfmO97LN8ugKtiXcy5e6oN72iD2r6u0RPfLl6fxM+7Wnh2ZRq15o0russMst44WauPA==",
"funding": [
{
"type": "github",
@ -32040,9 +32035,9 @@
"license": "ISC"
},
"node_modules/luxon": {
"version": "3.6.1",
"resolved": "https://registry.npmjs.org/luxon/-/luxon-3.6.1.tgz",
"integrity": "sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ==",
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz",
"integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==",
"license": "MIT",
"engines": {
"node": ">=12"
@ -32633,9 +32628,9 @@
}
},
"node_modules/multer": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/multer/-/multer-2.0.1.tgz",
"integrity": "sha512-Ug8bXeTIUlxurg8xLTEskKShvcKDZALo1THEX5E41pYCD2sCVub5/kIRIGqWNoqV6szyLyQKV6mD4QUrWE5GCQ==",
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/multer/-/multer-2.0.2.tgz",
"integrity": "sha512-u7f2xaZ/UG8oLXHvtF/oWTRvT44p9ecwBBqTwgJVq0+4BW1g8OW01TyMEGWBHbyMOYVHXslaut7qEQ1meATXgw==",
"license": "MIT",
"dependencies": {
"append-field": "^1.0.0",
@ -34756,12 +34751,13 @@
"license": "ISC"
},
"node_modules/path-to-regexp": {
"version": "8.2.0",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz",
"integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==",
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz",
"integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==",
"license": "MIT",
"engines": {
"node": ">=16"
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/express"
}
},
"node_modules/path-type": {
@ -36514,16 +36510,6 @@
"entities": "^2.0.0"
}
},
"node_modules/repeat-string": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
"integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=0.10"
}
},
"node_modules/replace-in-file": {
"version": "8.3.0",
"resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-8.3.0.tgz",

20
package.json

@ -1,6 +1,6 @@
{
"name": "ghostfolio",
"version": "2.211.0",
"version": "2.213.0",
"homepage": "https://ghostfol.io",
"license": "AGPL-3.0",
"repository": "https://github.com/ghostfolio/ghostfolio",
@ -77,17 +77,17 @@
"@internationalized/number": "3.6.3",
"@ionic/angular": "8.7.3",
"@keyv/redis": "4.4.0",
"@nestjs/bull": "11.0.2",
"@nestjs/bull": "11.0.4",
"@nestjs/cache-manager": "3.0.1",
"@nestjs/common": "11.1.3",
"@nestjs/common": "11.1.8",
"@nestjs/config": "4.0.2",
"@nestjs/core": "11.1.3",
"@nestjs/core": "11.1.8",
"@nestjs/event-emitter": "3.0.1",
"@nestjs/jwt": "11.0.0",
"@nestjs/jwt": "11.0.1",
"@nestjs/passport": "11.0.5",
"@nestjs/platform-express": "11.1.3",
"@nestjs/schedule": "6.0.0",
"@nestjs/serve-static": "5.0.3",
"@nestjs/platform-express": "11.1.8",
"@nestjs/schedule": "6.0.1",
"@nestjs/serve-static": "5.0.4",
"@openrouter/ai-sdk-provider": "0.7.2",
"@prisma/client": "6.18.0",
"@simplewebauthn/browser": "13.1.0",
@ -158,8 +158,8 @@
"@angular/pwa": "20.2.2",
"@eslint/eslintrc": "3.3.1",
"@eslint/js": "9.35.0",
"@nestjs/schematics": "11.0.5",
"@nestjs/testing": "11.1.3",
"@nestjs/schematics": "11.0.9",
"@nestjs/testing": "11.1.8",
"@nx/angular": "21.5.1",
"@nx/cypress": "21.5.1",
"@nx/eslint-plugin": "21.5.1",

Loading…
Cancel
Save