-
+
Name
@@ -102,7 +114,12 @@
-
+
Asset Profiles
@@ -193,13 +210,13 @@
diff --git a/apps/client/src/app/components/admin-settings/admin-settings.component.ts b/apps/client/src/app/components/admin-settings/admin-settings.component.ts
index 446221058..d030abb82 100644
--- a/apps/client/src/app/components/admin-settings/admin-settings.component.ts
+++ b/apps/client/src/app/components/admin-settings/admin-settings.component.ts
@@ -22,20 +22,24 @@ import {
ChangeDetectionStrategy,
ChangeDetectorRef,
Component,
- OnDestroy,
- OnInit
+ DestroyRef,
+ OnInit,
+ ViewChild
} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { MatButtonModule } from '@angular/material/button';
import { MatCardModule } from '@angular/material/card';
import { MatMenuModule } from '@angular/material/menu';
import { MatProgressBarModule } from '@angular/material/progress-bar';
+import { MatSort, MatSortModule } from '@angular/material/sort';
import { MatTableDataSource, MatTableModule } from '@angular/material/table';
import { RouterModule } from '@angular/router';
import { IonIcon } from '@ionic/angular/standalone';
import { addIcons } from 'ionicons';
import { ellipsisHorizontal, trashOutline } from 'ionicons/icons';
+import { get } from 'lodash';
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
-import { catchError, filter, of, Subject, takeUntil } from 'rxjs';
+import { catchError, filter, of } from 'rxjs';
@Component({
changeDetection: ChangeDetectionStrategy.OnPush,
@@ -52,6 +56,7 @@ import { catchError, filter, of, Subject, takeUntil } from 'rxjs';
MatCardModule,
MatMenuModule,
MatProgressBarModule,
+ MatSortModule,
MatTableModule,
NgxSkeletonLoaderModule,
RouterModule
@@ -60,7 +65,9 @@ import { catchError, filter, of, Subject, takeUntil } from 'rxjs';
styleUrls: ['./admin-settings.component.scss'],
templateUrl: './admin-settings.component.html'
})
-export class GfAdminSettingsComponent implements OnDestroy, OnInit {
+export class GfAdminSettingsComponent implements OnInit {
+ @ViewChild(MatSort) sort: MatSort;
+
public dataSource = new MatTableDataSource();
public defaultDateFormat: string;
public displayedColumns = [
@@ -74,14 +81,13 @@ export class GfAdminSettingsComponent implements OnDestroy, OnInit {
public isGhostfolioApiKeyValid: boolean;
public isLoading = false;
public pricingUrl: string;
-
- private unsubscribeSubject = new Subject();
- private user: User;
+ public user: User;
public constructor(
private adminService: AdminService,
private changeDetectorRef: ChangeDetectorRef,
private dataService: DataService,
+ private destroyRef: DestroyRef,
private notificationService: NotificationService,
private userService: UserService
) {
@@ -90,7 +96,7 @@ export class GfAdminSettingsComponent implements OnDestroy, OnInit {
public ngOnInit() {
this.userService.stateChanged
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((state) => {
if (state?.user) {
this.user = state.user;
@@ -147,11 +153,6 @@ export class GfAdminSettingsComponent implements OnDestroy, OnInit {
});
}
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
-
private initialize() {
this.isLoading = true;
@@ -159,13 +160,15 @@ export class GfAdminSettingsComponent implements OnDestroy, OnInit {
this.adminService
.fetchAdminData()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ dataProviders, settings }) => {
const filteredProviders = dataProviders.filter(({ dataSource }) => {
return dataSource !== 'MANUAL';
});
this.dataSource = new MatTableDataSource(filteredProviders);
+ this.dataSource.sort = this.sort;
+ this.dataSource.sortingDataAccessor = get;
const ghostfolioApiKey = settings[
PROPERTY_API_KEY_GHOSTFOLIO
@@ -185,7 +188,7 @@ export class GfAdminSettingsComponent implements OnDestroy, OnInit {
filter((status) => {
return status !== null;
}),
- takeUntil(this.unsubscribeSubject)
+ takeUntilDestroyed(this.destroyRef)
)
.subscribe((status) => {
this.ghostfolioApiStatus = status;
diff --git a/apps/client/src/app/components/admin-tag/admin-tag.component.html b/apps/client/src/app/components/admin-tag/admin-tag.component.html
index 98919abd8..463a817ff 100644
--- a/apps/client/src/app/components/admin-tag/admin-tag.component.html
+++ b/apps/client/src/app/components/admin-tag/admin-tag.component.html
@@ -45,7 +45,11 @@
Activities
- {{ element.activityCount }}
+
diff --git a/apps/client/src/app/components/admin-tag/admin-tag.component.ts b/apps/client/src/app/components/admin-tag/admin-tag.component.ts
index ca7950291..506736156 100644
--- a/apps/client/src/app/components/admin-tag/admin-tag.component.ts
+++ b/apps/client/src/app/components/admin-tag/admin-tag.component.ts
@@ -1,17 +1,21 @@
import { UserService } from '@ghostfolio/client/services/user/user.service';
import { CreateTagDto, UpdateTagDto } from '@ghostfolio/common/dtos';
import { ConfirmationDialogType } from '@ghostfolio/common/enums';
+import { getLocale } from '@ghostfolio/common/helper';
import { NotificationService } from '@ghostfolio/ui/notifications';
import { DataService } from '@ghostfolio/ui/services';
+import { GfValueComponent } from '@ghostfolio/ui/value';
import {
ChangeDetectionStrategy,
ChangeDetectorRef,
Component,
- OnDestroy,
+ DestroyRef,
+ Input,
OnInit,
ViewChild
} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { MatButtonModule } from '@angular/material/button';
import { MatDialog } from '@angular/material/dialog';
import { MatMenuModule } from '@angular/material/menu';
@@ -28,7 +32,6 @@ import {
} from 'ionicons/icons';
import { get } from 'lodash';
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';
@@ -36,6 +39,7 @@ import { CreateOrUpdateTagDialogParams } from './create-or-update-tag-dialog/int
@Component({
changeDetection: ChangeDetectionStrategy.OnPush,
imports: [
+ GfValueComponent,
IonIcon,
MatButtonModule,
MatMenuModule,
@@ -47,7 +51,9 @@ import { CreateOrUpdateTagDialogParams } from './create-or-update-tag-dialog/int
styleUrls: ['./admin-tag.component.scss'],
templateUrl: './admin-tag.component.html'
})
-export class GfAdminTagComponent implements OnDestroy, OnInit {
+export class GfAdminTagComponent implements OnInit {
+ @Input() locale = getLocale();
+
@ViewChild(MatSort) sort: MatSort;
public dataSource = new MatTableDataSource();
@@ -55,11 +61,10 @@ export class GfAdminTagComponent implements OnDestroy, OnInit {
public displayedColumns = ['name', 'userId', 'activities', 'actions'];
public tags: Tag[];
- private unsubscribeSubject = new Subject();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
private dataService: DataService,
+ private destroyRef: DestroyRef,
private deviceService: DeviceDetectorService,
private dialog: MatDialog,
private notificationService: NotificationService,
@@ -68,7 +73,7 @@ export class GfAdminTagComponent implements OnDestroy, OnInit {
private userService: UserService
) {
this.route.queryParams
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((params) => {
if (params['createTagDialog']) {
this.openCreateTagDialog();
@@ -110,20 +115,15 @@ export class GfAdminTagComponent implements OnDestroy, OnInit {
});
}
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
-
private deleteTag(aId: string) {
this.dataService
.deleteTag(aId)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe({
next: () => {
this.userService
.get(true)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe();
this.fetchTags();
@@ -134,7 +134,7 @@ export class GfAdminTagComponent implements OnDestroy, OnInit {
private fetchTags() {
this.dataService
.fetchTags()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((tags) => {
this.tags = tags;
@@ -165,17 +165,17 @@ export class GfAdminTagComponent implements OnDestroy, OnInit {
dialogRef
.afterClosed()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((tag: CreateTagDto | null) => {
if (tag) {
this.dataService
.postTag(tag)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe({
next: () => {
this.userService
.get(true)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe();
this.fetchTags();
@@ -204,17 +204,17 @@ export class GfAdminTagComponent implements OnDestroy, OnInit {
dialogRef
.afterClosed()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((tag: UpdateTagDto | null) => {
if (tag) {
this.dataService
.putTag(tag)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe({
next: () => {
this.userService
.get(true)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe();
this.fetchTags();
diff --git a/apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.component.ts b/apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.component.ts
index 323609a48..e22c73478 100644
--- a/apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.component.ts
+++ b/apps/client/src/app/components/admin-tag/create-or-update-tag-dialog/create-or-update-tag-dialog.component.ts
@@ -1,12 +1,7 @@
import { CreateTagDto, UpdateTagDto } from '@ghostfolio/common/dtos';
import { validateObjectForForm } from '@ghostfolio/common/utils';
-import {
- ChangeDetectionStrategy,
- Component,
- Inject,
- OnDestroy
-} from '@angular/core';
+import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';
import {
FormBuilder,
FormGroup,
@@ -21,7 +16,6 @@ import {
} from '@angular/material/dialog';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatInputModule } from '@angular/material/input';
-import { Subject } from 'rxjs';
import { CreateOrUpdateTagDialogParams } from './interfaces/interfaces';
@@ -40,11 +34,9 @@ import { CreateOrUpdateTagDialogParams } from './interfaces/interfaces';
styleUrls: ['./create-or-update-tag-dialog.scss'],
templateUrl: 'create-or-update-tag-dialog.html'
})
-export class GfCreateOrUpdateTagDialogComponent implements OnDestroy {
+export class GfCreateOrUpdateTagDialogComponent {
public tagForm: FormGroup;
- private unsubscribeSubject = new Subject();
-
public constructor(
@Inject(MAT_DIALOG_DATA) public data: CreateOrUpdateTagDialogParams,
public dialogRef: MatDialogRef,
@@ -85,9 +77,4 @@ export class GfCreateOrUpdateTagDialogComponent implements OnDestroy {
console.error(error);
}
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/components/admin-users/admin-users.component.ts b/apps/client/src/app/components/admin-users/admin-users.component.ts
index d479f2037..874bbc1db 100644
--- a/apps/client/src/app/components/admin-users/admin-users.component.ts
+++ b/apps/client/src/app/components/admin-users/admin-users.component.ts
@@ -1,7 +1,6 @@
import { UserDetailDialogParams } from '@ghostfolio/client/components/user-detail-dialog/interfaces/interfaces';
import { GfUserDetailDialogComponent } from '@ghostfolio/client/components/user-detail-dialog/user-detail-dialog.component';
import { ImpersonationStorageService } from '@ghostfolio/client/services/impersonation-storage.service';
-import { TokenStorageService } from '@ghostfolio/client/services/token-storage.service';
import { UserService } from '@ghostfolio/client/services/user/user.service';
import { DEFAULT_PAGE_SIZE } from '@ghostfolio/common/config';
import { ConfirmationDialogType } from '@ghostfolio/common/enums';
@@ -26,10 +25,11 @@ import { CommonModule } from '@angular/common';
import {
ChangeDetectorRef,
Component,
- OnDestroy,
+ DestroyRef,
OnInit,
ViewChild
} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { MatButtonModule } from '@angular/material/button';
import { MatDialog } from '@angular/material/dialog';
import { MatMenuModule } from '@angular/material/menu';
@@ -56,8 +56,7 @@ import {
} from 'ionicons/icons';
import { DeviceDetectorService } from 'ngx-device-detector';
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
-import { Subject } from 'rxjs';
-import { switchMap, takeUntil, tap } from 'rxjs/operators';
+import { switchMap, tap } from 'rxjs/operators';
@Component({
imports: [
@@ -76,7 +75,7 @@ import { switchMap, takeUntil, tap } from 'rxjs/operators';
styleUrls: ['./admin-users.scss'],
templateUrl: './admin-users.html'
})
-export class GfAdminUsersComponent implements OnDestroy, OnInit {
+export class GfAdminUsersComponent implements OnInit {
@ViewChild(MatPaginator) paginator: MatPaginator;
public dataSource = new MatTableDataSource();
@@ -94,19 +93,17 @@ export class GfAdminUsersComponent implements OnDestroy, OnInit {
public totalItems = 0;
public user: User;
- private unsubscribeSubject = new Subject();
-
public constructor(
private adminService: AdminService,
private changeDetectorRef: ChangeDetectorRef,
private dataService: DataService,
+ private destroyRef: DestroyRef,
private deviceService: DeviceDetectorService,
private dialog: MatDialog,
private impersonationStorageService: ImpersonationStorageService,
private notificationService: NotificationService,
private route: ActivatedRoute,
private router: Router,
- private tokenStorageService: TokenStorageService,
private userService: UserService
) {
this.deviceType = this.deviceService.getDeviceInfo().deviceType;
@@ -141,7 +138,7 @@ export class GfAdminUsersComponent implements OnDestroy, OnInit {
this.userService.stateChanged
.pipe(
- takeUntil(this.unsubscribeSubject),
+ takeUntilDestroyed(this.destroyRef),
tap((state) => {
if (state?.user) {
this.user = state.user;
@@ -206,7 +203,7 @@ export class GfAdminUsersComponent implements OnDestroy, OnInit {
confirmFn: () => {
this.dataService
.deleteUser(aId)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
this.router.navigate(['..'], { relativeTo: this.route });
});
@@ -224,13 +221,12 @@ export class GfAdminUsersComponent implements OnDestroy, OnInit {
confirmFn: () => {
this.dataService
.updateUserAccessToken(aUserId)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ accessToken }) => {
this.notificationService.alert({
discardFn: () => {
if (aUserId === this.user.id) {
- this.tokenStorageService.signOut();
- this.userService.remove();
+ this.userService.signOut();
document.location.href = `/${document.documentElement.lang}`;
}
@@ -261,11 +257,6 @@ export class GfAdminUsersComponent implements OnDestroy, OnInit {
);
}
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
-
private fetchUsers({ pageIndex }: { pageIndex: number } = { pageIndex: 0 }) {
this.isLoading = true;
@@ -278,7 +269,7 @@ export class GfAdminUsersComponent implements OnDestroy, OnInit {
skip: pageIndex * this.pageSize,
take: this.pageSize
})
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ count, users }) => {
this.dataSource = new MatTableDataSource(users);
this.totalItems = count;
@@ -308,7 +299,7 @@ export class GfAdminUsersComponent implements OnDestroy, OnInit {
dialogRef
.afterClosed()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((data) => {
if (data?.action === 'delete' && data?.userId) {
this.onDeleteUser(data.userId);
diff --git a/apps/client/src/app/components/data-provider-status/data-provider-status.component.ts b/apps/client/src/app/components/data-provider-status/data-provider-status.component.ts
index e44e81be9..a77d65961 100644
--- a/apps/client/src/app/components/data-provider-status/data-provider-status.component.ts
+++ b/apps/client/src/app/components/data-provider-status/data-provider-status.component.ts
@@ -4,13 +4,14 @@ import { CommonModule } from '@angular/common';
import {
ChangeDetectionStrategy,
Component,
+ DestroyRef,
Input,
- OnDestroy,
OnInit
} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import type { DataSource } from '@prisma/client';
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
-import { catchError, map, type Observable, of, Subject, takeUntil } from 'rxjs';
+import { catchError, map, type Observable, of } from 'rxjs';
import { DataProviderStatus } from './interfaces/interfaces';
@@ -20,14 +21,15 @@ import { DataProviderStatus } from './interfaces/interfaces';
selector: 'gf-data-provider-status',
templateUrl: './data-provider-status.component.html'
})
-export class GfDataProviderStatusComponent implements OnDestroy, OnInit {
+export class GfDataProviderStatusComponent implements OnInit {
@Input() dataSource: DataSource;
public status$: Observable;
- private unsubscribeSubject = new Subject();
-
- public constructor(private dataService: DataService) {}
+ public constructor(
+ private dataService: DataService,
+ private destroyRef: DestroyRef
+ ) {}
public ngOnInit() {
this.status$ = this.dataService
@@ -39,12 +41,7 @@ export class GfDataProviderStatusComponent implements OnDestroy, OnInit {
catchError(() => {
return of({ isHealthy: false });
}),
- takeUntil(this.unsubscribeSubject)
+ takeUntilDestroyed(this.destroyRef)
);
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/components/header/header.component.ts b/apps/client/src/app/components/header/header.component.ts
index 9b003a590..ab329251f 100644
--- a/apps/client/src/app/components/header/header.component.ts
+++ b/apps/client/src/app/components/header/header.component.ts
@@ -24,6 +24,7 @@ import {
ChangeDetectionStrategy,
Component,
CUSTOM_ELEMENTS_SCHEMA,
+ DestroyRef,
EventEmitter,
HostListener,
Input,
@@ -31,6 +32,7 @@ import {
Output,
ViewChild
} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { MatBadgeModule } from '@angular/material/badge';
import { MatButtonModule } from '@angular/material/button';
import { MatDialog } from '@angular/material/dialog';
@@ -48,8 +50,8 @@ import {
radioButtonOffOutline,
radioButtonOnOutline
} from 'ionicons/icons';
-import { EMPTY, Subject } from 'rxjs';
-import { catchError, takeUntil } from 'rxjs/operators';
+import { EMPTY } from 'rxjs';
+import { catchError } from 'rxjs/operators';
@Component({
changeDetection: ChangeDetectionStrategy.OnPush,
@@ -131,10 +133,9 @@ export class GfHeaderComponent implements OnChanges {
public routerLinkRegister = publicRoutes.register.routerLink;
public routerLinkResources = publicRoutes.resources.routerLink;
- private unsubscribeSubject = new Subject();
-
public constructor(
private dataService: DataService,
+ private destroyRef: DestroyRef,
private dialog: MatDialog,
private impersonationStorageService: ImpersonationStorageService,
private layoutService: LayoutService,
@@ -146,7 +147,7 @@ export class GfHeaderComponent implements OnChanges {
) {
this.impersonationStorageService
.onChangeHasImpersonation()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((impersonationId) => {
this.hasImpersonationId = !!impersonationId;
this.impersonationId = impersonationId;
@@ -224,11 +225,11 @@ export class GfHeaderComponent implements OnChanges {
public onDateRangeChange(dateRange: DateRange) {
this.dataService
.putUserSetting({ dateRange })
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
this.userService
.get(true)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe();
});
}
@@ -252,11 +253,11 @@ export class GfHeaderComponent implements OnChanges {
this.dataService
.putUserSetting(userSetting)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
this.userService
.get(true)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe();
});
}
@@ -301,7 +302,7 @@ export class GfHeaderComponent implements OnChanges {
dialogRef
.afterClosed()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((data) => {
if (data?.accessToken) {
this.dataService
@@ -314,7 +315,7 @@ export class GfHeaderComponent implements OnChanges {
return EMPTY;
}),
- takeUntil(this.unsubscribeSubject)
+ takeUntilDestroyed(this.destroyRef)
)
.subscribe(({ authToken }) => {
this.setToken(authToken);
@@ -331,7 +332,7 @@ export class GfHeaderComponent implements OnChanges {
this.userService
.get()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((user) => {
const userLanguage = user?.settings?.language;
@@ -342,9 +343,4 @@ export class GfHeaderComponent implements OnChanges {
}
});
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts
index 427386796..13ded73eb 100644
--- a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts
+++ b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.component.ts
@@ -35,10 +35,11 @@ import {
ChangeDetectionStrategy,
ChangeDetectorRef,
Component,
+ DestroyRef,
Inject,
- OnDestroy,
OnInit
} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';
import { MatButtonModule } from '@angular/material/button';
import { MatChipsModule } from '@angular/material/chips';
@@ -67,8 +68,7 @@ import {
walletOutline
} from 'ionicons/icons';
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
-import { Subject } from 'rxjs';
-import { switchMap, takeUntil } from 'rxjs/operators';
+import { switchMap } from 'rxjs/operators';
import { HoldingDetailDialogParams } from './interfaces/interfaces';
@@ -102,7 +102,7 @@ import { HoldingDetailDialogParams } from './interfaces/interfaces';
styleUrls: ['./holding-detail-dialog.component.scss'],
templateUrl: 'holding-detail-dialog.html'
})
-export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit {
+export class GfHoldingDetailDialogComponent implements OnInit {
public activitiesCount: number;
public accounts: Account[];
public assetClass: string;
@@ -158,11 +158,10 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit {
public user: User;
public value: number;
- private unsubscribeSubject = new Subject();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
private dataService: DataService,
+ private destroyRef: DestroyRef,
public dialogRef: MatDialogRef,
@Inject(MAT_DIALOG_DATA) public data: HoldingDetailDialogParams,
private formBuilder: FormBuilder,
@@ -192,7 +191,7 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit {
this.holdingForm
.get('tags')
- .valueChanges.pipe(takeUntil(this.unsubscribeSubject))
+ .valueChanges.pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((tags: Tag[]) => {
const newTag = tags.find(({ id }) => {
return id === undefined;
@@ -217,7 +216,7 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit {
switchMap(() => {
return this.userService.get(true);
}),
- takeUntil(this.unsubscribeSubject)
+ takeUntilDestroyed(this.destroyRef)
)
.subscribe();
} else {
@@ -227,7 +226,7 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit {
dataSource: this.data.dataSource,
symbol: this.data.symbol
})
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe();
}
});
@@ -236,7 +235,7 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit {
.fetchAccounts({
filters
})
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ accounts }) => {
this.accounts = accounts;
@@ -249,7 +248,7 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit {
sortColumn: this.sortColumn,
sortDirection: this.sortDirection
})
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ activities }) => {
this.dataSource = new MatTableDataSource(activities);
@@ -261,7 +260,7 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit {
dataSource: this.data.dataSource,
symbol: this.data.symbol
})
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(
({
activitiesCount,
@@ -524,7 +523,7 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit {
);
this.userService.stateChanged
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((state) => {
if (state?.user) {
this.user = state.user;
@@ -581,8 +580,8 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit {
};
this.dataService
- .postOrder(activity)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .postActivity(activity)
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
this.router.navigate(
internalRoutes.portfolio.subRoutes.activities.routerLink
@@ -599,7 +598,7 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit {
this.dataService
.fetchExport({ activityIds })
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((data) => {
downloadAsFile({
content: data,
@@ -629,18 +628,13 @@ export class GfHoldingDetailDialogComponent implements OnDestroy, OnInit {
this.dialogRef.close();
}
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
-
private fetchMarketData() {
this.dataService
.fetchMarketDataBySymbol({
dataSource: this.data.dataSource,
symbol: this.data.symbol
})
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ marketData }) => {
this.marketDataItems = marketData;
diff --git a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
index 86f4676f3..11771dee2 100644
--- a/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
+++ b/apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -286,7 +286,7 @@
[baseCurrency]="data.baseCurrency"
[colorScheme]="data.colorScheme"
[data]="sectors"
- [isInPercent]="true"
+ [isInPercentage]="true"
[keys]="['name']"
[locale]="data.locale"
[maxItems]="10"
@@ -298,7 +298,7 @@
[baseCurrency]="data.baseCurrency"
[colorScheme]="data.colorScheme"
[data]="countries"
- [isInPercent]="true"
+ [isInPercentage]="true"
[keys]="['name']"
[locale]="data.locale"
[maxItems]="10"
@@ -310,6 +310,9 @@
Symbol
ISIN
diff --git a/apps/client/src/app/components/holding-detail-dialog/interfaces/interfaces.ts b/apps/client/src/app/components/holding-detail-dialog/interfaces/interfaces.ts
index aab854384..527b13636 100644
--- a/apps/client/src/app/components/holding-detail-dialog/interfaces/interfaces.ts
+++ b/apps/client/src/app/components/holding-detail-dialog/interfaces/interfaces.ts
@@ -11,7 +11,7 @@ export interface HoldingDetailDialogParams {
hasPermissionToAccessAdminControl: boolean;
hasPermissionToCreateActivity: boolean;
hasPermissionToReportDataGlitch: boolean;
- hasPermissionToUpdateOrder: boolean;
+ hasPermissionToUpdateActivity: boolean;
locale: string;
symbol: string;
}
diff --git a/apps/client/src/app/components/home-holdings/home-holdings.component.ts b/apps/client/src/app/components/home-holdings/home-holdings.component.ts
index dc444977d..19a48ccd8 100644
--- a/apps/client/src/app/components/home-holdings/home-holdings.component.ts
+++ b/apps/client/src/app/components/home-holdings/home-holdings.component.ts
@@ -19,9 +19,10 @@ import {
ChangeDetectorRef,
Component,
CUSTOM_ELEMENTS_SCHEMA,
- OnDestroy,
+ DestroyRef,
OnInit
} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
import { MatButtonModule } from '@angular/material/button';
import { MatButtonToggleModule } from '@angular/material/button-toggle';
@@ -30,8 +31,6 @@ import { IonIcon } from '@ionic/angular/standalone';
import { addIcons } from 'ionicons';
import { gridOutline, reorderFourOutline } from 'ionicons/icons';
import { DeviceDetectorService } from 'ngx-device-detector';
-import { Subject } from 'rxjs';
-import { takeUntil } from 'rxjs/operators';
@Component({
imports: [
@@ -51,7 +50,7 @@ import { takeUntil } from 'rxjs/operators';
styleUrls: ['./home-holdings.scss'],
templateUrl: './home-holdings.html'
})
-export class GfHomeHoldingsComponent implements OnDestroy, OnInit {
+export class GfHomeHoldingsComponent implements OnInit {
public static DEFAULT_HOLDINGS_VIEW_MODE: HoldingsViewMode = 'TABLE';
public deviceType: string;
@@ -71,11 +70,10 @@ export class GfHomeHoldingsComponent implements OnDestroy, OnInit {
GfHomeHoldingsComponent.DEFAULT_HOLDINGS_VIEW_MODE
);
- private unsubscribeSubject = new Subject();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
private dataService: DataService,
+ private destroyRef: DestroyRef,
private deviceService: DeviceDetectorService,
private impersonationStorageService: ImpersonationStorageService,
private router: Router,
@@ -89,13 +87,13 @@ export class GfHomeHoldingsComponent implements OnDestroy, OnInit {
this.impersonationStorageService
.onChangeHasImpersonation()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((impersonationId) => {
this.hasImpersonationId = !!impersonationId;
});
this.userService.stateChanged
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((state) => {
if (state?.user) {
this.user = state.user;
@@ -107,7 +105,7 @@ export class GfHomeHoldingsComponent implements OnDestroy, OnInit {
this.hasPermissionToCreateActivity = hasPermission(
this.user.permissions,
- permissions.createOrder
+ permissions.createActivity
);
this.initialize();
@@ -117,15 +115,15 @@ export class GfHomeHoldingsComponent implements OnDestroy, OnInit {
});
this.viewModeFormControl.valueChanges
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((holdingsViewMode) => {
this.dataService
.putUserSetting({ holdingsViewMode })
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
this.userService
.get(true)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((user) => {
this.user = user;
@@ -149,11 +147,6 @@ export class GfHomeHoldingsComponent implements OnDestroy, OnInit {
}
}
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
-
private fetchHoldings() {
const filters = this.userService.getFilters();
@@ -193,7 +186,7 @@ export class GfHomeHoldingsComponent implements OnDestroy, OnInit {
this.holdings = undefined;
this.fetchHoldings()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ holdings }) => {
this.holdings = holdings;
diff --git a/apps/client/src/app/components/home-holdings/home-holdings.html b/apps/client/src/app/components/home-holdings/home-holdings.html
index 8b4e4c5d3..175c88606 100644
--- a/apps/client/src/app/components/home-holdings/home-holdings.html
+++ b/apps/client/src/app/components/home-holdings/home-holdings.html
@@ -46,9 +46,6 @@
}
();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
private dataService: DataService,
+ private destroyRef: DestroyRef,
private deviceService: DeviceDetectorService,
private userService: UserService
) {
@@ -59,7 +57,7 @@ export class GfHomeMarketComponent implements OnDestroy, OnInit {
this.info = this.dataService.fetchInfo();
this.userService.stateChanged
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((state) => {
if (state?.user) {
this.user = state.user;
@@ -82,7 +80,7 @@ export class GfHomeMarketComponent implements OnDestroy, OnInit {
includeHistoricalData: this.numberOfDays,
symbol: ghostfolioFearAndGreedIndexSymbol
})
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ historicalData, marketPrice }) => {
this.fearAndGreedIndex = marketPrice;
this.historicalDataItems = [
@@ -99,16 +97,11 @@ export class GfHomeMarketComponent implements OnDestroy, OnInit {
this.dataService
.fetchBenchmarks()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ benchmarks }) => {
this.benchmarks = benchmarks;
this.changeDetectorRef.markForCheck();
});
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/components/home-overview/home-overview.component.ts b/apps/client/src/app/components/home-overview/home-overview.component.ts
index 0d5020904..58284d27d 100644
--- a/apps/client/src/app/components/home-overview/home-overview.component.ts
+++ b/apps/client/src/app/components/home-overview/home-overview.component.ts
@@ -19,14 +19,13 @@ import {
ChangeDetectorRef,
Component,
CUSTOM_ELEMENTS_SCHEMA,
- OnDestroy,
+ DestroyRef,
OnInit
} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router';
import { DeviceDetectorService } from 'ngx-device-detector';
-import { Subject } from 'rxjs';
-import { takeUntil } from 'rxjs/operators';
@Component({
imports: [
@@ -41,7 +40,7 @@ import { takeUntil } from 'rxjs/operators';
styleUrls: ['./home-overview.scss'],
templateUrl: './home-overview.html'
})
-export class GfHomeOverviewComponent implements OnDestroy, OnInit {
+export class GfHomeOverviewComponent implements OnInit {
public deviceType: string;
public errors: AssetProfileIdentifier[];
public hasError: boolean;
@@ -62,25 +61,24 @@ export class GfHomeOverviewComponent implements OnDestroy, OnInit {
public unit: string;
public user: User;
- private unsubscribeSubject = new Subject();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
private dataService: DataService,
+ private destroyRef: DestroyRef,
private deviceService: DeviceDetectorService,
private impersonationStorageService: ImpersonationStorageService,
private layoutService: LayoutService,
private userService: UserService
) {
this.userService.stateChanged
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((state) => {
if (state?.user) {
this.user = state.user;
this.hasPermissionToCreateActivity = hasPermission(
this.user.permissions,
- permissions.createOrder
+ permissions.createActivity
);
this.update();
@@ -99,7 +97,7 @@ export class GfHomeOverviewComponent implements OnDestroy, OnInit {
this.impersonationStorageService
.onChangeHasImpersonation()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((impersonationId) => {
this.hasImpersonationId = !!impersonationId;
@@ -107,17 +105,12 @@ export class GfHomeOverviewComponent implements OnDestroy, OnInit {
});
this.layoutService.shouldReloadContent$
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
this.update();
});
}
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
-
private update() {
this.historicalDataItems = null;
this.isLoadingPerformance = true;
@@ -126,7 +119,7 @@ export class GfHomeOverviewComponent implements OnDestroy, OnInit {
.fetchPortfolioPerformance({
range: this.user?.settings?.dateRange
})
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ chart, errors, performance }) => {
this.errors = errors;
this.performance = performance;
diff --git a/apps/client/src/app/components/home-summary/home-summary.component.ts b/apps/client/src/app/components/home-summary/home-summary.component.ts
index 454d05689..719cfbd29 100644
--- a/apps/client/src/app/components/home-summary/home-summary.component.ts
+++ b/apps/client/src/app/components/home-summary/home-summary.component.ts
@@ -13,14 +13,13 @@ import {
ChangeDetectorRef,
Component,
CUSTOM_ELEMENTS_SCHEMA,
- OnDestroy,
+ DestroyRef,
OnInit
} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { MatCardModule } from '@angular/material/card';
import { MatSnackBarRef, TextOnlySnackBar } from '@angular/material/snack-bar';
import { DeviceDetectorService } from 'ngx-device-detector';
-import { Subject } from 'rxjs';
-import { takeUntil } from 'rxjs/operators';
@Component({
imports: [GfPortfolioSummaryComponent, MatCardModule],
@@ -29,7 +28,7 @@ import { takeUntil } from 'rxjs/operators';
styleUrls: ['./home-summary.scss'],
templateUrl: './home-summary.html'
})
-export class GfHomeSummaryComponent implements OnDestroy, OnInit {
+export class GfHomeSummaryComponent implements OnInit {
public deviceType: string;
public hasImpersonationId: boolean;
public hasPermissionForSubscription: boolean;
@@ -40,11 +39,10 @@ export class GfHomeSummaryComponent implements OnDestroy, OnInit {
public summary: PortfolioSummary;
public user: User;
- private unsubscribeSubject = new Subject();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
private dataService: DataService,
+ private destroyRef: DestroyRef,
private deviceService: DeviceDetectorService,
private impersonationStorageService: ImpersonationStorageService,
private userService: UserService
@@ -57,7 +55,7 @@ export class GfHomeSummaryComponent implements OnDestroy, OnInit {
);
this.userService.stateChanged
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((state) => {
if (state?.user) {
this.user = state.user;
@@ -77,7 +75,7 @@ export class GfHomeSummaryComponent implements OnDestroy, OnInit {
this.impersonationStorageService
.onChangeHasImpersonation()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((impersonationId) => {
this.hasImpersonationId = !!impersonationId;
});
@@ -86,11 +84,11 @@ export class GfHomeSummaryComponent implements OnDestroy, OnInit {
public onChangeEmergencyFund(emergencyFund: number) {
this.dataService
.putUserSetting({ emergencyFund })
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
this.userService
.get(true)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((user) => {
this.user = user;
@@ -99,17 +97,12 @@ export class GfHomeSummaryComponent implements OnDestroy, OnInit {
});
}
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
-
private update() {
this.isLoading = true;
this.dataService
.fetchPortfolioDetails()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ summary }) => {
this.summary = summary;
this.isLoading = false;
diff --git a/apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.component.ts b/apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.component.ts
index 60d74be92..4669a827d 100644
--- a/apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.component.ts
+++ b/apps/client/src/app/components/home-watchlist/create-watchlist-item-dialog/create-watchlist-item-dialog.component.ts
@@ -1,11 +1,6 @@
import { GfSymbolAutocompleteComponent } from '@ghostfolio/ui/symbol-autocomplete';
-import {
- ChangeDetectionStrategy,
- Component,
- OnDestroy,
- OnInit
-} from '@angular/core';
+import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';
import {
AbstractControl,
FormBuilder,
@@ -19,7 +14,6 @@ import {
import { MatButtonModule } from '@angular/material/button';
import { MatDialogModule, MatDialogRef } from '@angular/material/dialog';
import { MatFormFieldModule } from '@angular/material/form-field';
-import { Subject } from 'rxjs';
@Component({
changeDetection: ChangeDetectionStrategy.OnPush,
@@ -36,11 +30,9 @@ import { Subject } from 'rxjs';
styleUrls: ['./create-watchlist-item-dialog.component.scss'],
templateUrl: 'create-watchlist-item-dialog.html'
})
-export class GfCreateWatchlistItemDialogComponent implements OnDestroy, OnInit {
+export class GfCreateWatchlistItemDialogComponent implements OnInit {
public createWatchlistItemForm: FormGroup;
- private unsubscribeSubject = new Subject();
-
public constructor(
public readonly dialogRef: MatDialogRef,
public readonly formBuilder: FormBuilder
@@ -69,11 +61,6 @@ export class GfCreateWatchlistItemDialogComponent implements OnDestroy, OnInit {
});
}
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
-
private validator(control: AbstractControl): ValidationErrors {
const searchSymbolControl = control.get('searchSymbol');
diff --git a/apps/client/src/app/components/home-watchlist/home-watchlist.component.ts b/apps/client/src/app/components/home-watchlist/home-watchlist.component.ts
index 4adb4e54f..e6f366351 100644
--- a/apps/client/src/app/components/home-watchlist/home-watchlist.component.ts
+++ b/apps/client/src/app/components/home-watchlist/home-watchlist.component.ts
@@ -15,9 +15,10 @@ import {
ChangeDetectorRef,
Component,
CUSTOM_ELEMENTS_SCHEMA,
- OnDestroy,
+ DestroyRef,
OnInit
} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { MatButtonModule } from '@angular/material/button';
import { MatDialog } from '@angular/material/dialog';
import { ActivatedRoute, Router, RouterModule } from '@angular/router';
@@ -25,8 +26,6 @@ import { IonIcon } from '@ionic/angular/standalone';
import { addIcons } from 'ionicons';
import { addOutline } from 'ionicons/icons';
import { DeviceDetectorService } from 'ngx-device-detector';
-import { Subject } from 'rxjs';
-import { takeUntil } from 'rxjs/operators';
import { GfCreateWatchlistItemDialogComponent } from './create-watchlist-item-dialog/create-watchlist-item-dialog.component';
import { CreateWatchlistItemDialogParams } from './create-watchlist-item-dialog/interfaces/interfaces';
@@ -45,7 +44,7 @@ import { CreateWatchlistItemDialogParams } from './create-watchlist-item-dialog/
styleUrls: ['./home-watchlist.scss'],
templateUrl: './home-watchlist.html'
})
-export class GfHomeWatchlistComponent implements OnDestroy, OnInit {
+export class GfHomeWatchlistComponent implements OnInit {
public deviceType: string;
public hasImpersonationId: boolean;
public hasPermissionToCreateWatchlistItem: boolean;
@@ -53,11 +52,10 @@ export class GfHomeWatchlistComponent implements OnDestroy, OnInit {
public user: User;
public watchlist: Benchmark[];
- private unsubscribeSubject = new Subject();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
private dataService: DataService,
+ private destroyRef: DestroyRef,
private deviceService: DeviceDetectorService,
private dialog: MatDialog,
private impersonationStorageService: ImpersonationStorageService,
@@ -69,13 +67,13 @@ export class GfHomeWatchlistComponent implements OnDestroy, OnInit {
this.impersonationStorageService
.onChangeHasImpersonation()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((impersonationId) => {
this.hasImpersonationId = !!impersonationId;
});
this.route.queryParams
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((params) => {
if (params['createWatchlistItemDialog']) {
this.openCreateWatchlistItemDialog();
@@ -83,7 +81,7 @@ export class GfHomeWatchlistComponent implements OnDestroy, OnInit {
});
this.userService.stateChanged
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((state) => {
if (state?.user) {
this.user = state.user;
@@ -118,7 +116,7 @@ export class GfHomeWatchlistComponent implements OnDestroy, OnInit {
}: AssetProfileIdentifier) {
this.dataService
.deleteWatchlistItem({ dataSource, symbol })
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe({
next: () => {
return this.loadWatchlistData();
@@ -126,15 +124,10 @@ export class GfHomeWatchlistComponent implements OnDestroy, OnInit {
});
}
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
-
private loadWatchlistData() {
this.dataService
.fetchWatchlist()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ watchlist }) => {
this.watchlist = watchlist;
@@ -145,7 +138,7 @@ export class GfHomeWatchlistComponent implements OnDestroy, OnInit {
private openCreateWatchlistItemDialog() {
this.userService
.get()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((user) => {
this.user = user;
@@ -163,12 +156,12 @@ export class GfHomeWatchlistComponent implements OnDestroy, OnInit {
dialogRef
.afterClosed()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ dataSource, symbol } = {}) => {
if (dataSource && symbol) {
this.dataService
.postWatchlistItem({ dataSource, symbol })
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe({
next: () => this.loadWatchlistData()
});
diff --git a/apps/client/src/app/components/investment-chart/investment-chart.component.ts b/apps/client/src/app/components/investment-chart/investment-chart.component.ts
index 53d4f5693..21a7ac85a 100644
--- a/apps/client/src/app/components/investment-chart/investment-chart.component.ts
+++ b/apps/client/src/app/components/investment-chart/investment-chart.component.ts
@@ -61,7 +61,7 @@ export class GfInvestmentChartComponent implements OnChanges, OnDestroy {
@Input() currency: string;
@Input() groupBy: GroupBy;
@Input() historicalDataItems: LineChartItem[] = [];
- @Input() isInPercent = false;
+ @Input() isInPercentage = false;
@Input() isLoading = false;
@Input() locale = getLocale();
@Input() savingsRate = 0;
@@ -119,7 +119,7 @@ export class GfInvestmentChartComponent implements OnChanges, OnDestroy {
data: this.investments.map(({ date, investment }) => {
return {
x: parseDate(date).getTime(),
- y: this.isInPercent ? investment * 100 : investment
+ y: this.isInPercentage ? investment * 100 : investment
};
}),
label: this.benchmarkDataLabel,
@@ -139,7 +139,7 @@ export class GfInvestmentChartComponent implements OnChanges, OnDestroy {
data: this.values.map(({ date, value }) => {
return {
x: parseDate(date).getTime(),
- y: this.isInPercent ? value * 100 : value
+ y: this.isInPercentage ? value * 100 : value
};
}),
fill: false,
@@ -251,7 +251,7 @@ export class GfInvestmentChartComponent implements OnChanges, OnDestroy {
border: {
display: false
},
- display: !this.isInPercent,
+ display: !this.isInPercentage,
grid: {
color: ({ scale, tick }) => {
if (
@@ -292,10 +292,10 @@ export class GfInvestmentChartComponent implements OnChanges, OnDestroy {
return {
...getTooltipOptions({
colorScheme: this.colorScheme,
- currency: this.isInPercent ? undefined : this.currency,
+ currency: this.isInPercentage ? undefined : this.currency,
groupBy: this.groupBy,
- locale: this.isInPercent ? undefined : this.locale,
- unit: this.isInPercent ? '%' : undefined
+ locale: this.isInPercentage ? undefined : this.locale,
+ unit: this.isInPercentage ? '%' : undefined
}),
mode: 'index',
position: 'top',
diff --git a/apps/client/src/app/components/markets/markets.component.ts b/apps/client/src/app/components/markets/markets.component.ts
index 4b83e897f..4214ee989 100644
--- a/apps/client/src/app/components/markets/markets.component.ts
+++ b/apps/client/src/app/components/markets/markets.component.ts
@@ -19,12 +19,11 @@ import {
ChangeDetectorRef,
Component,
CUSTOM_ELEMENTS_SCHEMA,
- OnDestroy,
+ DestroyRef,
OnInit
} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { DeviceDetectorService } from 'ngx-device-detector';
-import { Subject } from 'rxjs';
-import { takeUntil } from 'rxjs/operators';
@Component({
changeDetection: ChangeDetectionStrategy.OnPush,
@@ -39,7 +38,7 @@ import { takeUntil } from 'rxjs/operators';
styleUrls: ['./markets.scss'],
templateUrl: './markets.html'
})
-export class GfMarketsComponent implements OnDestroy, OnInit {
+export class GfMarketsComponent implements OnInit {
public benchmarks: Benchmark[];
public deviceType: string;
public fearAndGreedIndex: number;
@@ -55,18 +54,17 @@ export class GfMarketsComponent implements OnDestroy, OnInit {
public readonly numberOfDays = 365;
public user: User;
- private unsubscribeSubject = new Subject();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
private dataService: DataService,
+ private destroyRef: DestroyRef,
private deviceService: DeviceDetectorService,
private userService: UserService
) {
this.deviceType = this.deviceService.getDeviceInfo().deviceType;
this.userService.stateChanged
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((state) => {
if (state?.user) {
this.user = state.user;
@@ -79,7 +77,7 @@ export class GfMarketsComponent implements OnDestroy, OnInit {
public ngOnInit() {
this.dataService
.fetchMarketDataOfMarkets({ includeHistoricalData: this.numberOfDays })
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ fearAndGreedIndex }) => {
this.fearAndGreedIndexData = fearAndGreedIndex;
@@ -90,7 +88,7 @@ export class GfMarketsComponent implements OnDestroy, OnInit {
this.dataService
.fetchBenchmarks()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ benchmarks }) => {
this.benchmarks = benchmarks;
@@ -119,9 +117,4 @@ export class GfMarketsComponent implements OnDestroy, OnInit {
this.initialize();
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html b/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
index 46eb2845c..0e26a49a8 100644
--- a/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
+++ b/apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
@@ -65,7 +65,11 @@
[locale]="locale"
[precision]="precision"
[unit]="baseCurrency"
- [value]="isLoading ? undefined : summary?.committedFunds"
+ [value]="
+ isLoading
+ ? undefined
+ : summary?.totalInvestmentValueWithCurrencyEffect
+ "
/>
@@ -180,18 +184,21 @@
[ngClass]="{
'cursor-pointer':
hasPermissionToUpdateUserSettings &&
+ !user?.settings?.isRestrictedView &&
user?.subscription?.type !== 'Basic'
}"
(click)="
hasPermissionToUpdateUserSettings &&
+ !user?.settings?.isRestrictedView &&
user?.subscription?.type !== 'Basic' &&
onEditEmergencyFund()
"
>
@if (
hasPermissionToUpdateUserSettings &&
- user?.subscription?.type !== 'Basic' &&
- !isLoading
+ !isLoading &&
+ !user?.settings?.isRestrictedView &&
+ user?.subscription?.type !== 'Basic'
) {
();
private deviceType: string;
- private unsubscribeSubject = new Subject();
-
public constructor(
+ private destroyRef: DestroyRef,
private deviceService: DeviceDetectorService,
private dialog: MatDialog
) {
@@ -94,7 +94,7 @@ export class GfRuleComponent implements OnInit {
dialogRef
.afterClosed()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((settings: RuleSettings) => {
if (settings) {
this.ruleUpdated.emit({
@@ -115,9 +115,4 @@ export class GfRuleComponent implements OnInit {
this.ruleUpdated.emit(settings);
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts b/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts
index 0d616b92e..d10be10bd 100644
--- a/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts
+++ b/apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.component.ts
@@ -7,9 +7,11 @@ import {
ChangeDetectorRef,
Component,
CUSTOM_ELEMENTS_SCHEMA,
+ DestroyRef,
Inject,
OnInit
} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { MatButtonModule } from '@angular/material/button';
import {
MAT_DIALOG_DATA,
@@ -21,8 +23,8 @@ import { IonIcon } from '@ionic/angular/standalone';
import { addIcons } from 'ionicons';
import { arrowForwardOutline, checkmarkCircleOutline } from 'ionicons/icons';
import ms from 'ms';
-import { interval, Subject } from 'rxjs';
-import { take, takeUntil, tap } from 'rxjs/operators';
+import { interval } from 'rxjs';
+import { take, tap } from 'rxjs/operators';
import { SubscriptionInterstitialDialogParams } from './interfaces/interfaces';
@@ -51,11 +53,10 @@ export class GfSubscriptionInterstitialDialogComponent implements OnInit {
public routerLinkPricing = publicRoutes.pricing.routerLink;
public variantIndex: number;
- private unsubscribeSubject = new Subject();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
@Inject(MAT_DIALOG_DATA) public data: SubscriptionInterstitialDialogParams,
+ private destroyRef: DestroyRef,
public dialogRef: MatDialogRef
) {
this.variantIndex = Math.floor(
@@ -76,7 +77,7 @@ export class GfSubscriptionInterstitialDialogComponent implements OnInit {
this.changeDetectorRef.markForCheck();
}),
- takeUntil(this.unsubscribeSubject)
+ takeUntilDestroyed(this.destroyRef)
)
.subscribe();
}
@@ -84,9 +85,4 @@ export class GfSubscriptionInterstitialDialogComponent implements OnInit {
public closeDialog() {
this.dialogRef.close({});
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts b/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts
index 5c87b2f63..97bd272d4 100644
--- a/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts
+++ b/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts
@@ -3,14 +3,16 @@ import { validateObjectForForm } from '@ghostfolio/common/utils';
import { NotificationService } from '@ghostfolio/ui/notifications';
import { DataService } from '@ghostfolio/ui/services';
+import type { HttpErrorResponse } from '@angular/common/http';
import {
ChangeDetectionStrategy,
ChangeDetectorRef,
Component,
- Inject,
- OnDestroy,
+ DestroyRef,
+ inject,
OnInit
} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import {
FormBuilder,
FormGroup,
@@ -28,7 +30,7 @@ import { MatFormFieldModule } from '@angular/material/form-field';
import { MatInputModule } from '@angular/material/input';
import { MatSelectModule } from '@angular/material/select';
import { StatusCodes } from 'http-status-codes';
-import { EMPTY, Subject, catchError, takeUntil } from 'rxjs';
+import { EMPTY, catchError } from 'rxjs';
import { CreateOrUpdateAccessDialogParams } from './interfaces/interfaces';
@@ -48,22 +50,25 @@ import { CreateOrUpdateAccessDialogParams } from './interfaces/interfaces';
styleUrls: ['./create-or-update-access-dialog.scss'],
templateUrl: 'create-or-update-access-dialog.html'
})
-export class GfCreateOrUpdateAccessDialogComponent
- implements OnDestroy, OnInit
-{
- public accessForm: FormGroup;
- public mode: 'create' | 'update';
-
- private unsubscribeSubject = new Subject();
-
- public constructor(
- private changeDetectorRef: ChangeDetectorRef,
- @Inject(MAT_DIALOG_DATA) private data: CreateOrUpdateAccessDialogParams,
- public dialogRef: MatDialogRef,
- private dataService: DataService,
- private formBuilder: FormBuilder,
- private notificationService: NotificationService
- ) {
+export class GfCreateOrUpdateAccessDialogComponent implements OnInit {
+ protected accessForm: FormGroup;
+ protected mode: 'create' | 'update';
+
+ private readonly changeDetectorRef = inject(ChangeDetectorRef);
+
+ private readonly data =
+ inject(MAT_DIALOG_DATA);
+
+ private readonly dataService = inject(DataService);
+ private readonly destroyRef = inject(DestroyRef);
+
+ private readonly dialogRef =
+ inject>(MatDialogRef);
+
+ private readonly formBuilder = inject(FormBuilder);
+ private readonly notificationService = inject(NotificationService);
+
+ public constructor() {
this.mode = this.data.access?.id ? 'update' : 'create';
}
@@ -83,22 +88,25 @@ export class GfCreateOrUpdateAccessDialogComponent
]
});
- this.accessForm.get('type').valueChanges.subscribe((accessType) => {
- const granteeUserIdControl = this.accessForm.get('granteeUserId');
- const permissionsControl = this.accessForm.get('permissions');
+ this.accessForm
+ .get('type')
+ ?.valueChanges.pipe(takeUntilDestroyed(this.destroyRef))
+ .subscribe((accessType) => {
+ const granteeUserIdControl = this.accessForm.get('granteeUserId');
+ const permissionsControl = this.accessForm.get('permissions');
- if (accessType === 'PRIVATE') {
- granteeUserIdControl.setValidators(Validators.required);
- } else {
- granteeUserIdControl.clearValidators();
- granteeUserIdControl.setValue(null);
- permissionsControl.setValue(this.data.access.permissions[0]);
- }
+ if (accessType === 'PRIVATE') {
+ granteeUserIdControl?.setValidators(Validators.required);
+ } else {
+ granteeUserIdControl?.clearValidators();
+ granteeUserIdControl?.setValue(null);
+ permissionsControl?.setValue(this.data.access.permissions[0]);
+ }
- granteeUserIdControl.updateValueAndValidity();
+ granteeUserIdControl?.updateValueAndValidity();
- this.changeDetectorRef.markForCheck();
- });
+ this.changeDetectorRef.markForCheck();
+ });
}
public onCancel() {
@@ -113,16 +121,11 @@ export class GfCreateOrUpdateAccessDialogComponent
}
}
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
-
private async createAccess() {
const access: CreateAccessDto = {
- alias: this.accessForm.get('alias').value,
- granteeUserId: this.accessForm.get('granteeUserId').value,
- permissions: [this.accessForm.get('permissions').value]
+ alias: this.accessForm.get('alias')?.value,
+ granteeUserId: this.accessForm.get('granteeUserId')?.value,
+ permissions: [this.accessForm.get('permissions')?.value]
};
try {
@@ -135,7 +138,7 @@ export class GfCreateOrUpdateAccessDialogComponent
this.dataService
.postAccess(access)
.pipe(
- catchError((error) => {
+ catchError((error: HttpErrorResponse) => {
if (error.status === StatusCodes.BAD_REQUEST) {
this.notificationService.alert({
title: $localize`Oops! Could not grant access.`
@@ -144,7 +147,7 @@ export class GfCreateOrUpdateAccessDialogComponent
return EMPTY;
}),
- takeUntil(this.unsubscribeSubject)
+ takeUntilDestroyed(this.destroyRef)
)
.subscribe(() => {
this.dialogRef.close(access);
@@ -156,10 +159,10 @@ export class GfCreateOrUpdateAccessDialogComponent
private async updateAccess() {
const access: UpdateAccessDto = {
- alias: this.accessForm.get('alias').value,
- granteeUserId: this.accessForm.get('granteeUserId').value,
+ alias: this.accessForm.get('alias')?.value,
+ granteeUserId: this.accessForm.get('granteeUserId')?.value,
id: this.data.access.id,
- permissions: [this.accessForm.get('permissions').value]
+ permissions: [this.accessForm.get('permissions')?.value]
};
try {
@@ -172,8 +175,8 @@ export class GfCreateOrUpdateAccessDialogComponent
this.dataService
.putAccess(access)
.pipe(
- catchError(({ status }) => {
- if (status.status === StatusCodes.BAD_REQUEST) {
+ catchError(({ status }: HttpErrorResponse) => {
+ if (status === StatusCodes.BAD_REQUEST) {
this.notificationService.alert({
title: $localize`Oops! Could not update access.`
});
@@ -181,7 +184,7 @@ export class GfCreateOrUpdateAccessDialogComponent
return EMPTY;
}),
- takeUntil(this.unsubscribeSubject)
+ takeUntilDestroyed(this.destroyRef)
)
.subscribe(() => {
this.dialogRef.close(access);
diff --git a/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html b/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
index 11669041d..93614b55a 100644
--- a/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
+++ b/apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
@@ -38,13 +38,13 @@
Permission
Restricted view
- @if (accessForm.get('type').value === 'PRIVATE') {
+ @if (accessForm.get('type')?.value === 'PRIVATE') {
View
}
- @if (accessForm.get('type').value === 'PRIVATE') {
+ @if (accessForm.get('type')?.value === 'PRIVATE') {
diff --git a/apps/client/src/app/components/user-account-access/user-account-access.component.ts b/apps/client/src/app/components/user-account-access/user-account-access.component.ts
index ef78cccff..f8620c745 100644
--- a/apps/client/src/app/components/user-account-access/user-account-access.component.ts
+++ b/apps/client/src/app/components/user-account-access/user-account-access.component.ts
@@ -1,5 +1,4 @@
import { GfAccessTableComponent } from '@ghostfolio/client/components/access-table/access-table.component';
-import { TokenStorageService } from '@ghostfolio/client/services/token-storage.service';
import { UserService } from '@ghostfolio/client/services/user/user.service';
import { CreateAccessDto } from '@ghostfolio/common/dtos';
import { ConfirmationDialogType } from '@ghostfolio/common/enums';
@@ -14,9 +13,10 @@ import {
ChangeDetectorRef,
Component,
CUSTOM_ELEMENTS_SCHEMA,
- OnDestroy,
+ DestroyRef,
OnInit
} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';
import { MatButtonModule } from '@angular/material/button';
import { MatDialog, MatDialogModule } from '@angular/material/dialog';
@@ -27,8 +27,8 @@ import { IonIcon } from '@ionic/angular/standalone';
import { addIcons } from 'ionicons';
import { addOutline, eyeOffOutline, eyeOutline } from 'ionicons/icons';
import { DeviceDetectorService } from 'ngx-device-detector';
-import { EMPTY, Subject } from 'rxjs';
-import { catchError, takeUntil } from 'rxjs/operators';
+import { EMPTY } from 'rxjs';
+import { catchError } 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';
@@ -52,7 +52,7 @@ import { CreateOrUpdateAccessDialogParams } from './create-or-update-access-dial
styleUrls: ['./user-account-access.scss'],
templateUrl: './user-account-access.html'
})
-export class GfUserAccountAccessComponent implements OnDestroy, OnInit {
+export class GfUserAccountAccessComponent implements OnInit {
public accessesGet: Access[];
public accessesGive: Access[];
public deviceType: string;
@@ -65,18 +65,16 @@ export class GfUserAccountAccessComponent implements OnDestroy, OnInit {
});
public user: User;
- private unsubscribeSubject = new Subject();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
private dataService: DataService,
+ private destroyRef: DestroyRef,
private deviceService: DeviceDetectorService,
private dialog: MatDialog,
private formBuilder: FormBuilder,
private notificationService: NotificationService,
private route: ActivatedRoute,
private router: Router,
- private tokenStorageService: TokenStorageService,
private userService: UserService
) {
const { globalPermissions } = this.dataService.fetchInfo();
@@ -87,7 +85,7 @@ export class GfUserAccountAccessComponent implements OnDestroy, OnInit {
);
this.userService.stateChanged
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((state) => {
if (state?.user) {
this.user = state.user;
@@ -112,7 +110,7 @@ export class GfUserAccountAccessComponent implements OnDestroy, OnInit {
});
this.route.queryParams
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((params) => {
if (params['createDialog']) {
this.openCreateAccessDialog();
@@ -133,7 +131,7 @@ export class GfUserAccountAccessComponent implements OnDestroy, OnInit {
public onDeleteAccess(aId: string) {
this.dataService
.deleteAccess(aId)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe({
next: () => {
this.update();
@@ -156,13 +154,12 @@ export class GfUserAccountAccessComponent implements OnDestroy, OnInit {
return EMPTY;
}),
- takeUntil(this.unsubscribeSubject)
+ takeUntilDestroyed(this.destroyRef)
)
.subscribe(({ accessToken }) => {
this.notificationService.alert({
discardFn: () => {
- this.tokenStorageService.signOut();
- this.userService.remove();
+ this.userService.signOut();
document.location.href = `/${document.documentElement.lang}`;
},
@@ -182,11 +179,6 @@ export class GfUserAccountAccessComponent implements OnDestroy, OnInit {
});
}
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
-
private openCreateAccessDialog() {
const dialogRef = this.dialog.open<
GfCreateOrUpdateAccessDialogComponent,
@@ -220,8 +212,6 @@ export class GfUserAccountAccessComponent implements OnDestroy, OnInit {
});
if (!access) {
- console.log('Could not find access.');
-
return;
}
@@ -264,7 +254,7 @@ export class GfUserAccountAccessComponent implements OnDestroy, OnInit {
this.dataService
.fetchAccesses()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((accesses) => {
this.accessesGive = accesses;
diff --git a/apps/client/src/app/components/user-account-membership/user-account-membership.component.ts b/apps/client/src/app/components/user-account-membership/user-account-membership.component.ts
index 92fd0d590..b13a983fc 100644
--- a/apps/client/src/app/components/user-account-membership/user-account-membership.component.ts
+++ b/apps/client/src/app/components/user-account-membership/user-account-membership.component.ts
@@ -14,15 +14,16 @@ import {
ChangeDetectionStrategy,
ChangeDetectorRef,
Component,
- OnDestroy
+ DestroyRef
} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { MatButtonModule } from '@angular/material/button';
import { MatCardModule } from '@angular/material/card';
import { MatSnackBar } from '@angular/material/snack-bar';
import { RouterModule } from '@angular/router';
import ms, { StringValue } from 'ms';
-import { EMPTY, Subject } from 'rxjs';
-import { catchError, takeUntil } from 'rxjs/operators';
+import { EMPTY } from 'rxjs';
+import { catchError } from 'rxjs/operators';
@Component({
changeDetection: ChangeDetectionStrategy.OnPush,
@@ -38,7 +39,7 @@ import { catchError, takeUntil } from 'rxjs/operators';
styleUrls: ['./user-account-membership.scss'],
templateUrl: './user-account-membership.html'
})
-export class GfUserAccountMembershipComponent implements OnDestroy {
+export class GfUserAccountMembershipComponent {
public baseCurrency: string;
public coupon: number;
public couponId: string;
@@ -54,11 +55,10 @@ export class GfUserAccountMembershipComponent implements OnDestroy {
'mailto:hi@ghostfol.io?Subject=Ghostfolio Premium Trial&body=Hello%0D%0DI am interested in Ghostfolio Premium. Can you please send me a coupon code to try it for some time?%0D%0DKind regards';
public user: User;
- private unsubscribeSubject = new Subject();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
private dataService: DataService,
+ private destroyRef: DestroyRef,
private notificationService: NotificationService,
private snackBar: MatSnackBar,
private userService: UserService
@@ -73,7 +73,7 @@ export class GfUserAccountMembershipComponent implements OnDestroy {
);
this.userService.stateChanged
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((state) => {
if (state?.user) {
this.user = state.user;
@@ -118,7 +118,7 @@ export class GfUserAccountMembershipComponent implements OnDestroy {
return EMPTY;
}),
- takeUntil(this.unsubscribeSubject)
+ takeUntilDestroyed(this.destroyRef)
)
.subscribe(({ sessionUrl }) => {
window.location.href = sessionUrl;
@@ -142,7 +142,7 @@ export class GfUserAccountMembershipComponent implements OnDestroy {
return EMPTY;
}),
- takeUntil(this.unsubscribeSubject)
+ takeUntilDestroyed(this.destroyRef)
)
.subscribe(({ apiKey }) => {
this.notificationService.alert({
@@ -180,7 +180,7 @@ export class GfUserAccountMembershipComponent implements OnDestroy {
return EMPTY;
}),
- takeUntil(this.unsubscribeSubject)
+ takeUntilDestroyed(this.destroyRef)
)
.subscribe(() => {
const snackBarRef = this.snackBar.open(
@@ -193,14 +193,14 @@ export class GfUserAccountMembershipComponent implements OnDestroy {
snackBarRef
.afterDismissed()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
window.location.reload();
});
snackBarRef
.onAction()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
window.location.reload();
});
@@ -210,9 +210,4 @@ export class GfUserAccountMembershipComponent implements OnDestroy {
title: $localize`Please enter your coupon code.`
});
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts b/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
index 44be30b9a..72bbfc2c6 100644
--- a/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
+++ b/apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
@@ -3,7 +3,6 @@ import {
KEY_TOKEN,
SettingsStorageService
} from '@ghostfolio/client/services/settings-storage.service';
-import { TokenStorageService } from '@ghostfolio/client/services/token-storage.service';
import { UserService } from '@ghostfolio/client/services/user/user.service';
import { WebAuthnService } from '@ghostfolio/client/services/web-authn.service';
import { ConfirmationDialogType } from '@ghostfolio/common/enums';
@@ -19,9 +18,10 @@ import {
ChangeDetectorRef,
Component,
CUSTOM_ELEMENTS_SCHEMA,
- OnDestroy,
+ DestroyRef,
OnInit
} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import {
FormBuilder,
FormsModule,
@@ -44,8 +44,8 @@ import { format, parseISO } from 'date-fns';
import { addIcons } from 'ionicons';
import { eyeOffOutline, eyeOutline } from 'ionicons/icons';
import ms from 'ms';
-import { EMPTY, Subject, throwError } from 'rxjs';
-import { catchError, takeUntil } from 'rxjs/operators';
+import { EMPTY, throwError } from 'rxjs';
+import { catchError } from 'rxjs/operators';
@Component({
changeDetection: ChangeDetectionStrategy.OnPush,
@@ -66,7 +66,7 @@ import { catchError, takeUntil } from 'rxjs/operators';
styleUrls: ['./user-account-settings.scss'],
templateUrl: './user-account-settings.html'
})
-export class GfUserAccountSettingsComponent implements OnDestroy, OnInit {
+export class GfUserAccountSettingsComponent implements OnInit {
public appearancePlaceholder = $localize`Auto`;
public baseCurrency: string;
public currencies: string[] = [];
@@ -99,16 +99,14 @@ export class GfUserAccountSettingsComponent implements OnDestroy, OnInit {
];
public user: User;
- private unsubscribeSubject = new Subject();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
private dataService: DataService,
+ private destroyRef: DestroyRef,
private formBuilder: FormBuilder,
private notificationService: NotificationService,
private settingsStorageService: SettingsStorageService,
private snackBar: MatSnackBar,
- private tokenStorageService: TokenStorageService,
private userService: UserService,
public webAuthnService: WebAuthnService
) {
@@ -118,7 +116,7 @@ export class GfUserAccountSettingsComponent implements OnDestroy, OnInit {
this.currencies = currencies;
this.userService.stateChanged
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((state) => {
if (state?.user) {
this.user = state.user;
@@ -159,11 +157,11 @@ export class GfUserAccountSettingsComponent implements OnDestroy, OnInit {
public onChangeUserSetting(aKey: string, aValue: string) {
this.dataService
.putUserSetting({ [aKey]: aValue })
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
this.userService
.get(true)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((user) => {
this.user = user;
@@ -195,11 +193,10 @@ export class GfUserAccountSettingsComponent implements OnDestroy, OnInit {
return EMPTY;
}),
- takeUntil(this.unsubscribeSubject)
+ takeUntilDestroyed(this.destroyRef)
)
.subscribe(() => {
- this.tokenStorageService.signOut();
- this.userService.remove();
+ this.userService.signOut();
document.location.href = `/${document.documentElement.lang}`;
});
@@ -212,11 +209,11 @@ export class GfUserAccountSettingsComponent implements OnDestroy, OnInit {
public onExperimentalFeaturesChange(aEvent: MatSlideToggleChange) {
this.dataService
.putUserSetting({ isExperimentalFeatures: aEvent.checked })
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
this.userService
.get(true)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((user) => {
this.user = user;
@@ -228,7 +225,7 @@ export class GfUserAccountSettingsComponent implements OnDestroy, OnInit {
public onExport() {
this.dataService
.fetchExport()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((data) => {
for (const activity of data.activities) {
delete activity.id;
@@ -248,11 +245,11 @@ export class GfUserAccountSettingsComponent implements OnDestroy, OnInit {
public onRestrictedViewChange(aEvent: MatSlideToggleChange) {
this.dataService
.putUserSetting({ isRestrictedView: aEvent.checked })
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
this.userService
.get(true)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((user) => {
this.user = user;
@@ -287,11 +284,11 @@ export class GfUserAccountSettingsComponent implements OnDestroy, OnInit {
public onViewModeChange(aEvent: MatSlideToggleChange) {
this.dataService
.putUserSetting({ viewMode: aEvent.checked === true ? 'ZEN' : 'DEFAULT' })
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
this.userService
.get(true)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((user) => {
this.user = user;
@@ -300,11 +297,6 @@ export class GfUserAccountSettingsComponent implements OnDestroy, OnInit {
});
}
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
-
private deregisterDevice() {
this.webAuthnService
.deregister()
@@ -314,7 +306,7 @@ export class GfUserAccountSettingsComponent implements OnDestroy, OnInit {
return EMPTY;
}),
- takeUntil(this.unsubscribeSubject)
+ takeUntilDestroyed(this.destroyRef)
)
.subscribe(() => {
this.update();
@@ -344,7 +336,7 @@ export class GfUserAccountSettingsComponent implements OnDestroy, OnInit {
return error;
});
}),
- takeUntil(this.unsubscribeSubject)
+ takeUntilDestroyed(this.destroyRef)
)
.subscribe({
next: () => {
diff --git a/apps/client/src/app/components/user-detail-dialog/user-detail-dialog.component.ts b/apps/client/src/app/components/user-detail-dialog/user-detail-dialog.component.ts
index 6f7f4ead6..fec2d4b06 100644
--- a/apps/client/src/app/components/user-detail-dialog/user-detail-dialog.component.ts
+++ b/apps/client/src/app/components/user-detail-dialog/user-detail-dialog.component.ts
@@ -7,10 +7,11 @@ import {
ChangeDetectorRef,
Component,
CUSTOM_ELEMENTS_SCHEMA,
+ DestroyRef,
Inject,
- OnDestroy,
OnInit
} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { MatButtonModule } from '@angular/material/button';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { MatDialogModule } from '@angular/material/dialog';
@@ -18,8 +19,8 @@ import { MatMenuModule } from '@angular/material/menu';
import { IonIcon } from '@ionic/angular/standalone';
import { addIcons } from 'ionicons';
import { ellipsisVertical } from 'ionicons/icons';
-import { EMPTY, Subject } from 'rxjs';
-import { catchError, takeUntil } from 'rxjs/operators';
+import { EMPTY } from 'rxjs';
+import { catchError } from 'rxjs/operators';
import { UserDetailDialogParams } from './interfaces/interfaces';
@@ -38,15 +39,14 @@ import { UserDetailDialogParams } from './interfaces/interfaces';
styleUrls: ['./user-detail-dialog.component.scss'],
templateUrl: './user-detail-dialog.html'
})
-export class GfUserDetailDialogComponent implements OnDestroy, OnInit {
+export class GfUserDetailDialogComponent implements OnInit {
public user: AdminUserResponse;
- private unsubscribeSubject = new Subject();
-
public constructor(
private adminService: AdminService,
private changeDetectorRef: ChangeDetectorRef,
@Inject(MAT_DIALOG_DATA) public data: UserDetailDialogParams,
+ private destroyRef: DestroyRef,
public dialogRef: MatDialogRef
) {
addIcons({
@@ -58,7 +58,7 @@ export class GfUserDetailDialogComponent implements OnDestroy, OnInit {
this.adminService
.fetchUserById(this.data.userId)
.pipe(
- takeUntil(this.unsubscribeSubject),
+ takeUntilDestroyed(this.destroyRef),
catchError(() => {
this.dialogRef.close();
@@ -82,9 +82,4 @@ export class GfUserDetailDialogComponent implements OnDestroy, OnInit {
public onClose() {
this.dialogRef.close();
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html b/apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
index 570dcf4d6..e9af86942 100644
--- a/apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
+++ b/apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
@@ -27,7 +27,13 @@
- User ID
+ User ID
Role
diff --git a/apps/client/src/app/core/auth.guard.ts b/apps/client/src/app/core/auth.guard.ts
index 123a6169a..3292f0ff7 100644
--- a/apps/client/src/app/core/auth.guard.ts
+++ b/apps/client/src/app/core/auth.guard.ts
@@ -68,7 +68,7 @@ export class AuthGuard {
this.dataService
.putUserSetting({ language: document.documentElement.lang })
.subscribe(() => {
- this.userService.remove();
+ this.userService.reset();
setTimeout(() => {
window.location.reload();
diff --git a/apps/client/src/app/core/http-response.interceptor.ts b/apps/client/src/app/core/http-response.interceptor.ts
index ab99b440f..315e9d64e 100644
--- a/apps/client/src/app/core/http-response.interceptor.ts
+++ b/apps/client/src/app/core/http-response.interceptor.ts
@@ -1,4 +1,4 @@
-import { TokenStorageService } from '@ghostfolio/client/services/token-storage.service';
+import { UserService } from '@ghostfolio/client/services/user/user.service';
import { WebAuthnService } from '@ghostfolio/client/services/web-authn.service';
import { InfoItem } from '@ghostfolio/common/interfaces';
import { internalRoutes, publicRoutes } from '@ghostfolio/common/routes/routes';
@@ -32,8 +32,8 @@ export class HttpResponseInterceptor implements HttpInterceptor {
public constructor(
private dataService: DataService,
private router: Router,
- private tokenStorageService: TokenStorageService,
private snackBar: MatSnackBar,
+ private userService: UserService,
private webAuthnService: WebAuthnService
) {
this.info = this.dataService.fetchInfo();
@@ -115,7 +115,7 @@ export class HttpResponseInterceptor implements HttpInterceptor {
if (this.webAuthnService.isEnabled()) {
this.router.navigate(internalRoutes.webauthn.routerLink);
} else {
- this.tokenStorageService.signOut();
+ this.userService.signOut();
}
}
}
diff --git a/apps/client/src/app/interfaces/interfaces.ts b/apps/client/src/app/interfaces/interfaces.ts
new file mode 100644
index 000000000..493eff4ab
--- /dev/null
+++ b/apps/client/src/app/interfaces/interfaces.ts
@@ -0,0 +1,8 @@
+import type { Params } from '@angular/router';
+import type { DataSource } from '@prisma/client';
+
+export interface GfAppQueryParams extends Params {
+ dataSource?: DataSource;
+ holdingDetailDialog?: string;
+ symbol?: string;
+}
diff --git a/apps/client/src/app/pages/about/about-page.component.ts b/apps/client/src/app/pages/about/about-page.component.ts
index 5ddb6b2e0..1e749d1cd 100644
--- a/apps/client/src/app/pages/about/about-page.component.ts
+++ b/apps/client/src/app/pages/about/about-page.component.ts
@@ -8,9 +8,10 @@ import {
ChangeDetectorRef,
Component,
CUSTOM_ELEMENTS_SCHEMA,
- OnDestroy,
+ DestroyRef,
OnInit
} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { MatTabsModule } from '@angular/material/tabs';
import { RouterModule } from '@angular/router';
import { IonIcon } from '@ionic/angular/standalone';
@@ -24,8 +25,6 @@ import {
sparklesOutline
} from 'ionicons/icons';
import { DeviceDetectorService } from 'ngx-device-detector';
-import { Subject } from 'rxjs';
-import { takeUntil } from 'rxjs/operators';
@Component({
host: { class: 'page has-tabs' },
@@ -35,17 +34,16 @@ import { takeUntil } from 'rxjs/operators';
styleUrls: ['./about-page.scss'],
templateUrl: './about-page.html'
})
-export class AboutPageComponent implements OnDestroy, OnInit {
+export class AboutPageComponent implements OnInit {
public deviceType: string;
public hasPermissionForSubscription: boolean;
public tabs: TabConfiguration[] = [];
public user: User;
- private unsubscribeSubject = new Subject
();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
private dataService: DataService,
+ private destroyRef: DestroyRef,
private deviceService: DeviceDetectorService,
private userService: UserService
) {
@@ -57,7 +55,7 @@ export class AboutPageComponent implements OnDestroy, OnInit {
);
this.userService.stateChanged
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((state) => {
this.tabs = [
{
@@ -118,9 +116,4 @@ export class AboutPageComponent implements OnDestroy, OnInit {
public ngOnInit() {
this.deviceType = this.deviceService.getDeviceInfo().deviceType;
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/pages/about/changelog/changelog-page.component.ts b/apps/client/src/app/pages/about/changelog/changelog-page.component.ts
index 69b397370..d7f583bd1 100644
--- a/apps/client/src/app/pages/about/changelog/changelog-page.component.ts
+++ b/apps/client/src/app/pages/about/changelog/changelog-page.component.ts
@@ -1,7 +1,6 @@
-import { Component, OnDestroy } from '@angular/core';
+import { Component } from '@angular/core';
import { MarkdownModule } from 'ngx-markdown';
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
-import { Subject } from 'rxjs';
@Component({
imports: [MarkdownModule, NgxSkeletonLoaderModule],
@@ -9,17 +8,10 @@ import { Subject } from 'rxjs';
styleUrls: ['./changelog-page.scss'],
templateUrl: './changelog-page.html'
})
-export class GfChangelogPageComponent implements OnDestroy {
+export class GfChangelogPageComponent {
public isLoading = true;
- private unsubscribeSubject = new Subject();
-
public onLoad() {
this.isLoading = false;
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/pages/about/license/license-page.component.ts b/apps/client/src/app/pages/about/license/license-page.component.ts
index 0dc5b2f51..d530d0418 100644
--- a/apps/client/src/app/pages/about/license/license-page.component.ts
+++ b/apps/client/src/app/pages/about/license/license-page.component.ts
@@ -1,6 +1,5 @@
-import { Component, OnDestroy } from '@angular/core';
+import { Component } from '@angular/core';
import { MarkdownModule } from 'ngx-markdown';
-import { Subject } from 'rxjs';
@Component({
imports: [MarkdownModule],
@@ -8,11 +7,4 @@ import { Subject } from 'rxjs';
styleUrls: ['./license-page.scss'],
templateUrl: './license-page.html'
})
-export class GfLicensePageComponent implements OnDestroy {
- private unsubscribeSubject = new Subject();
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
-}
+export class GfLicensePageComponent {}
diff --git a/apps/client/src/app/pages/about/oss-friends/oss-friends-page.component.ts b/apps/client/src/app/pages/about/oss-friends/oss-friends-page.component.ts
index bdbbdf9a7..c2e500a52 100644
--- a/apps/client/src/app/pages/about/oss-friends/oss-friends-page.component.ts
+++ b/apps/client/src/app/pages/about/oss-friends/oss-friends-page.component.ts
@@ -1,10 +1,9 @@
-import { Component, OnDestroy } from '@angular/core';
+import { Component } from '@angular/core';
import { MatButtonModule } from '@angular/material/button';
import { MatCardModule } from '@angular/material/card';
import { IonIcon } from '@ionic/angular/standalone';
import { addIcons } from 'ionicons';
import { arrowForwardOutline } from 'ionicons/icons';
-import { Subject } from 'rxjs';
const ossFriends = require('../../../../assets/oss-friends.json');
@@ -14,17 +13,10 @@ const ossFriends = require('../../../../assets/oss-friends.json');
styleUrls: ['./oss-friends-page.scss'],
templateUrl: './oss-friends-page.html'
})
-export class GfOpenSourceSoftwareFriendsPageComponent implements OnDestroy {
+export class GfOpenSourceSoftwareFriendsPageComponent {
public ossFriends = ossFriends.data;
- private unsubscribeSubject = new Subject();
-
public constructor() {
addIcons({ arrowForwardOutline });
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/pages/about/overview/about-overview-page.component.ts b/apps/client/src/app/pages/about/overview/about-overview-page.component.ts
index bea19a1b9..9c399762b 100644
--- a/apps/client/src/app/pages/about/overview/about-overview-page.component.ts
+++ b/apps/client/src/app/pages/about/overview/about-overview-page.component.ts
@@ -9,9 +9,10 @@ import {
ChangeDetectorRef,
Component,
CUSTOM_ELEMENTS_SCHEMA,
- OnDestroy,
+ DestroyRef,
OnInit
} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { MatButtonModule } from '@angular/material/button';
import { RouterModule } from '@angular/router';
import { IonIcon } from '@ionic/angular/standalone';
@@ -23,8 +24,6 @@ import {
logoX,
mail
} from 'ionicons/icons';
-import { Subject } from 'rxjs';
-import { takeUntil } from 'rxjs/operators';
@Component({
imports: [CommonModule, IonIcon, MatButtonModule, RouterModule],
@@ -33,7 +32,7 @@ import { takeUntil } from 'rxjs/operators';
styleUrls: ['./about-overview-page.scss'],
templateUrl: './about-overview-page.html'
})
-export class GfAboutOverviewPageComponent implements OnDestroy, OnInit {
+export class GfAboutOverviewPageComponent implements OnInit {
public hasPermissionForStatistics: boolean;
public hasPermissionForSubscription: boolean;
public isLoggedIn: boolean;
@@ -43,11 +42,10 @@ export class GfAboutOverviewPageComponent implements OnDestroy, OnInit {
public routerLinkOpenStartup = publicRoutes.openStartup.routerLink;
public user: User;
- private unsubscribeSubject = new Subject();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
private dataService: DataService,
+ private destroyRef: DestroyRef,
private userService: UserService
) {
const { globalPermissions } = this.dataService.fetchInfo();
@@ -67,7 +65,7 @@ export class GfAboutOverviewPageComponent implements OnDestroy, OnInit {
public ngOnInit() {
this.userService.stateChanged
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((state) => {
if (state?.user) {
this.user = state.user;
@@ -76,9 +74,4 @@ export class GfAboutOverviewPageComponent implements OnDestroy, OnInit {
}
});
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.component.ts b/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.component.ts
index 78881cd2c..50e4e3e2f 100644
--- a/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.component.ts
+++ b/apps/client/src/app/pages/about/privacy-policy/privacy-policy-page.component.ts
@@ -1,6 +1,5 @@
-import { Component, OnDestroy } from '@angular/core';
+import { Component } from '@angular/core';
import { MarkdownModule } from 'ngx-markdown';
-import { Subject } from 'rxjs';
@Component({
imports: [MarkdownModule],
@@ -8,11 +7,4 @@ import { Subject } from 'rxjs';
styleUrls: ['./privacy-policy-page.scss'],
templateUrl: './privacy-policy-page.html'
})
-export class GfPrivacyPolicyPageComponent implements OnDestroy {
- private unsubscribeSubject = new Subject();
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
-}
+export class GfPrivacyPolicyPageComponent {}
diff --git a/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.component.ts b/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.component.ts
index dbf07ef19..7899f0187 100644
--- a/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.component.ts
+++ b/apps/client/src/app/pages/about/terms-of-service/terms-of-service-page.component.ts
@@ -1,6 +1,5 @@
-import { Component, OnDestroy } from '@angular/core';
+import { Component } from '@angular/core';
import { MarkdownModule } from 'ngx-markdown';
-import { Subject } from 'rxjs';
@Component({
imports: [MarkdownModule],
@@ -8,11 +7,4 @@ import { Subject } from 'rxjs';
styleUrls: ['./terms-of-service-page.scss'],
templateUrl: './terms-of-service-page.html'
})
-export class GfTermsOfServicePageComponent implements OnDestroy {
- private unsubscribeSubject = new Subject();
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
-}
+export class GfTermsOfServicePageComponent {}
diff --git a/apps/client/src/app/pages/accounts/accounts-page.component.ts b/apps/client/src/app/pages/accounts/accounts-page.component.ts
index f7e6541b5..fdc78a8c4 100644
--- a/apps/client/src/app/pages/accounts/accounts-page.component.ts
+++ b/apps/client/src/app/pages/accounts/accounts-page.component.ts
@@ -13,7 +13,13 @@ import { GfAccountsTableComponent } from '@ghostfolio/ui/accounts-table';
import { NotificationService } from '@ghostfolio/ui/notifications';
import { DataService } from '@ghostfolio/ui/services';
-import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';
+import {
+ ChangeDetectorRef,
+ Component,
+ DestroyRef,
+ OnInit
+} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { MatButtonModule } from '@angular/material/button';
import { MatDialog } from '@angular/material/dialog';
import { ActivatedRoute, Router, RouterModule } from '@angular/router';
@@ -21,8 +27,8 @@ import { Account as AccountModel } from '@prisma/client';
import { addIcons } from 'ionicons';
import { addOutline } from 'ionicons/icons';
import { DeviceDetectorService } from 'ngx-device-detector';
-import { EMPTY, Subject, Subscription } from 'rxjs';
-import { catchError, takeUntil } from 'rxjs/operators';
+import { EMPTY, Subscription } from 'rxjs';
+import { catchError } 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';
@@ -36,7 +42,7 @@ import { GfTransferBalanceDialogComponent } from './transfer-balance/transfer-ba
styleUrls: ['./accounts-page.scss'],
templateUrl: './accounts-page.html'
})
-export class GfAccountsPageComponent implements OnDestroy, OnInit {
+export class GfAccountsPageComponent implements OnInit {
public accounts: AccountModel[];
public activitiesCount = 0;
public deviceType: string;
@@ -48,11 +54,10 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit {
public totalValueInBaseCurrency = 0;
public user: User;
- private unsubscribeSubject = new Subject();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
private dataService: DataService,
+ private destroyRef: DestroyRef,
private deviceService: DeviceDetectorService,
private dialog: MatDialog,
private impersonationStorageService: ImpersonationStorageService,
@@ -62,7 +67,7 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit {
private userService: UserService
) {
this.route.queryParams
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((params) => {
if (params['accountId'] && params['accountDetailDialog']) {
this.openAccountDetailDialog(params['accountId']);
@@ -94,13 +99,13 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit {
this.impersonationStorageService
.onChangeHasImpersonation()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((impersonationId) => {
this.hasImpersonationId = !!impersonationId;
});
this.userService.stateChanged
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((state) => {
if (state?.user) {
this.user = state.user;
@@ -124,7 +129,7 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit {
public fetchAccounts() {
this.dataService
.fetchAccounts()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(
({
accounts,
@@ -151,11 +156,11 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit {
this.dataService
.deleteAccount(aId)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
this.userService
.get(true)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe();
this.fetchAccounts();
@@ -204,18 +209,18 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit {
dialogRef
.afterClosed()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((account: UpdateAccountDto | null) => {
if (account) {
this.reset();
this.dataService
.putAccount(account)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
this.userService
.get(true)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe();
this.fetchAccounts();
@@ -228,11 +233,6 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit {
});
}
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
-
private openAccountDetailDialog(aAccountId: string) {
const dialogRef = this.dialog.open<
GfAccountDetailDialogComponent,
@@ -245,7 +245,7 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit {
hasImpersonationId: this.hasImpersonationId,
hasPermissionToCreateActivity:
!this.hasImpersonationId &&
- hasPermission(this.user?.permissions, permissions.createOrder) &&
+ hasPermission(this.user?.permissions, permissions.createActivity) &&
!this.user?.settings?.isRestrictedView
},
height: this.deviceType === 'mobile' ? '98vh' : '80vh',
@@ -254,7 +254,7 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit {
dialogRef
.afterClosed()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
this.fetchAccounts();
@@ -284,18 +284,18 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit {
dialogRef
.afterClosed()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((account: CreateAccountDto | null) => {
if (account) {
this.reset();
this.dataService
.postAccount(account)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
this.userService
.get(true)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe();
this.fetchAccounts();
@@ -321,7 +321,7 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit {
dialogRef
.afterClosed()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((data: any) => {
if (data) {
this.reset();
@@ -343,7 +343,7 @@ export class GfAccountsPageComponent implements OnDestroy, OnInit {
return EMPTY;
}),
- takeUntil(this.unsubscribeSubject)
+ takeUntilDestroyed(this.destroyRef)
)
.subscribe(() => {
this.fetchAccounts();
diff --git a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.component.ts b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.component.ts
index f4c68e70f..53d8380e1 100644
--- a/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.component.ts
+++ b/apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.component.ts
@@ -5,12 +5,7 @@ import { GfEntityLogoComponent } from '@ghostfolio/ui/entity-logo';
import { DataService } from '@ghostfolio/ui/services';
import { CommonModule, NgClass } from '@angular/common';
-import {
- ChangeDetectionStrategy,
- Component,
- Inject,
- OnDestroy
-} from '@angular/core';
+import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
import {
AbstractControl,
FormBuilder,
@@ -30,7 +25,7 @@ import {
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatInputModule } from '@angular/material/input';
import { Platform } from '@prisma/client';
-import { Observable, Subject } from 'rxjs';
+import { Observable } from 'rxjs';
import { map, startWith } from 'rxjs/operators';
import { CreateOrUpdateAccountDialogParams } from './interfaces/interfaces';
@@ -55,20 +50,18 @@ import { CreateOrUpdateAccountDialogParams } from './interfaces/interfaces';
styleUrls: ['./create-or-update-account-dialog.scss'],
templateUrl: 'create-or-update-account-dialog.html'
})
-export class GfCreateOrUpdateAccountDialogComponent implements OnDestroy {
- public accountForm: FormGroup;
- public currencies: string[] = [];
- public filteredPlatforms: Observable;
- public platforms: Platform[] = [];
-
- private unsubscribeSubject = new Subject();
-
- public constructor(
- @Inject(MAT_DIALOG_DATA) public data: CreateOrUpdateAccountDialogParams,
- private dataService: DataService,
- public dialogRef: MatDialogRef,
- private formBuilder: FormBuilder
- ) {}
+export class GfCreateOrUpdateAccountDialogComponent {
+ protected accountForm: FormGroup;
+ protected currencies: string[] = [];
+ protected filteredPlatforms: Observable | undefined;
+ protected platforms: Platform[] = [];
+
+ protected readonly data =
+ inject(MAT_DIALOG_DATA);
+ private readonly dataService = inject(DataService);
+ private readonly dialogRef =
+ inject>(MatDialogRef);
+ private readonly formBuilder = inject(FormBuilder);
public ngOnInit() {
const { currencies } = this.dataService.fetchInfo();
@@ -100,18 +93,18 @@ export class GfCreateOrUpdateAccountDialogComponent implements OnDestroy {
this.filteredPlatforms = this.accountForm
.get('platformId')
- .valueChanges.pipe(
+ ?.valueChanges.pipe(
startWith(''),
- map((value) => {
+ map((value: Platform | string) => {
const name = typeof value === 'string' ? value : value?.name;
- return name ? this.filter(name as string) : this.platforms.slice();
+ return name ? this.filter(name) : this.platforms.slice();
})
);
});
}
- public autoCompleteCheck() {
- const inputValue = this.accountForm.get('platformId').value;
+ protected autoCompleteCheck() {
+ const inputValue = this.accountForm.get('platformId')?.value;
if (typeof inputValue === 'string') {
const matchingEntry = this.platforms.find(({ name }) => {
@@ -119,28 +112,28 @@ export class GfCreateOrUpdateAccountDialogComponent implements OnDestroy {
});
if (matchingEntry) {
- this.accountForm.get('platformId').setValue(matchingEntry);
+ this.accountForm.get('platformId')?.setValue(matchingEntry);
}
}
}
- public displayFn(platform: Platform) {
+ protected displayFn(platform: Platform) {
return platform?.name ?? '';
}
- public onCancel() {
+ protected onCancel() {
this.dialogRef.close();
}
- public async onSubmit() {
+ protected async onSubmit() {
const account: CreateAccountDto | UpdateAccountDto = {
- balance: this.accountForm.get('balance').value,
- comment: this.accountForm.get('comment').value || null,
- currency: this.accountForm.get('currency').value,
- id: this.accountForm.get('accountId').value,
- isExcluded: this.accountForm.get('isExcluded').value,
- name: this.accountForm.get('name').value,
- platformId: this.accountForm.get('platformId').value?.id || null
+ balance: this.accountForm.get('balance')?.value,
+ comment: this.accountForm.get('comment')?.value || null,
+ currency: this.accountForm.get('currency')?.value,
+ id: this.accountForm.get('accountId')?.value,
+ isExcluded: this.accountForm.get('isExcluded')?.value,
+ name: this.accountForm.get('name')?.value,
+ platformId: this.accountForm.get('platformId')?.value?.id || null
};
try {
@@ -170,11 +163,6 @@ export class GfCreateOrUpdateAccountDialogComponent implements OnDestroy {
}
}
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
-
private autocompleteObjectValidator(): ValidatorFn {
return (control: AbstractControl) => {
if (control.value && typeof control.value === 'string') {
@@ -189,7 +177,7 @@ export class GfCreateOrUpdateAccountDialogComponent implements OnDestroy {
const filterValue = value.toLowerCase();
return this.platforms.filter(({ name }) => {
- return name.toLowerCase().startsWith(filterValue);
+ return name?.toLowerCase().startsWith(filterValue);
});
}
}
diff --git a/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.component.ts b/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.component.ts
index 85d2e60bf..34a66b156 100644
--- a/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.component.ts
+++ b/apps/client/src/app/pages/accounts/transfer-balance/transfer-balance-dialog.component.ts
@@ -1,12 +1,7 @@
import { TransferBalanceDto } from '@ghostfolio/common/dtos';
import { GfEntityLogoComponent } from '@ghostfolio/ui/entity-logo';
-import {
- ChangeDetectionStrategy,
- Component,
- Inject,
- OnDestroy
-} from '@angular/core';
+import { ChangeDetectionStrategy, Component, Inject } from '@angular/core';
import {
AbstractControl,
FormBuilder,
@@ -25,7 +20,6 @@ import { MatFormFieldModule } from '@angular/material/form-field';
import { MatInputModule } from '@angular/material/input';
import { MatSelectModule } from '@angular/material/select';
import { Account } from '@prisma/client';
-import { Subject } from 'rxjs';
import { TransferBalanceDialogParams } from './interfaces/interfaces';
@@ -45,13 +39,11 @@ import { TransferBalanceDialogParams } from './interfaces/interfaces';
styleUrls: ['./transfer-balance-dialog.scss'],
templateUrl: 'transfer-balance-dialog.html'
})
-export class GfTransferBalanceDialogComponent implements OnDestroy {
+export class GfTransferBalanceDialogComponent {
public accounts: Account[] = [];
public currency: string;
public transferBalanceForm: FormGroup;
- private unsubscribeSubject = new Subject();
-
public constructor(
@Inject(MAT_DIALOG_DATA) public data: TransferBalanceDialogParams,
public dialogRef: MatDialogRef,
@@ -93,11 +85,6 @@ export class GfTransferBalanceDialogComponent implements OnDestroy {
this.dialogRef.close({ account });
}
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
-
private compareAccounts(control: AbstractControl): ValidationErrors {
const accountFrom = control.get('fromAccount');
const accountTo = control.get('toAccount');
diff --git a/apps/client/src/app/pages/admin/admin-page.component.ts b/apps/client/src/app/pages/admin/admin-page.component.ts
index b9243dcb9..66312ef33 100644
--- a/apps/client/src/app/pages/admin/admin-page.component.ts
+++ b/apps/client/src/app/pages/admin/admin-page.component.ts
@@ -1,7 +1,7 @@
import { TabConfiguration } from '@ghostfolio/common/interfaces';
import { internalRoutes } from '@ghostfolio/common/routes/routes';
-import { Component, OnDestroy, OnInit } from '@angular/core';
+import { Component, OnInit } from '@angular/core';
import { MatTabsModule } from '@angular/material/tabs';
import { RouterModule } from '@angular/router';
import { IonIcon } from '@ionic/angular/standalone';
@@ -14,7 +14,6 @@ import {
settingsOutline
} from 'ionicons/icons';
import { DeviceDetectorService } from 'ngx-device-detector';
-import { Subject } from 'rxjs';
@Component({
host: { class: 'page has-tabs' },
@@ -23,12 +22,10 @@ import { Subject } from 'rxjs';
styleUrls: ['./admin-page.scss'],
templateUrl: './admin-page.html'
})
-export class AdminPageComponent implements OnDestroy, OnInit {
+export class AdminPageComponent implements OnInit {
public deviceType: string;
public tabs: TabConfiguration[] = [];
- private unsubscribeSubject = new Subject();
-
public constructor(private deviceService: DeviceDetectorService) {
addIcons({
flashOutline,
@@ -50,11 +47,7 @@ export class AdminPageComponent implements OnDestroy, OnInit {
},
{
iconName: 'settings-outline',
- label:
- internalRoutes.adminControl.subRoutes.settings.title +
- '' +
- $localize`new` +
- ' ',
+ label: internalRoutes.adminControl.subRoutes.settings.title,
routerLink: internalRoutes.adminControl.subRoutes.settings.routerLink
},
{
@@ -74,9 +67,4 @@ export class AdminPageComponent implements OnDestroy, OnInit {
}
];
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/pages/api/api-page.component.ts b/apps/client/src/app/pages/api/api-page.component.ts
index 353605380..357a08bbd 100644
--- a/apps/client/src/app/pages/api/api-page.component.ts
+++ b/apps/client/src/app/pages/api/api-page.component.ts
@@ -14,9 +14,10 @@ import {
import { CommonModule } from '@angular/common';
import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
-import { Component, OnInit } from '@angular/core';
+import { Component, DestroyRef, OnInit } from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { format, startOfYear } from 'date-fns';
-import { map, Observable, Subject, takeUntil } from 'rxjs';
+import { map, Observable } from 'rxjs';
@Component({
host: { class: 'page' },
@@ -35,9 +36,11 @@ export class GfApiPageComponent implements OnInit {
public status$: Observable;
private apiKey: string;
- private unsubscribeSubject = new Subject();
- public constructor(private http: HttpClient) {}
+ public constructor(
+ private destroyRef: DestroyRef,
+ private http: HttpClient
+ ) {}
public ngOnInit() {
this.apiKey = prompt($localize`Please enter your Ghostfolio API key:`);
@@ -51,18 +54,13 @@ export class GfApiPageComponent implements OnInit {
this.status$ = this.fetchStatus();
}
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
-
private fetchAssetProfile({ symbol }: { symbol: string }) {
return this.http
.get(
`/api/v1/data-providers/ghostfolio/asset-profile/${symbol}`,
{ headers: this.getHeaders() }
)
- .pipe(takeUntil(this.unsubscribeSubject));
+ .pipe(takeUntilDestroyed(this.destroyRef));
}
private fetchDividends({ symbol }: { symbol: string }) {
@@ -82,7 +80,7 @@ export class GfApiPageComponent implements OnInit {
map(({ dividends }) => {
return dividends;
}),
- takeUntil(this.unsubscribeSubject)
+ takeUntilDestroyed(this.destroyRef)
);
}
@@ -103,7 +101,7 @@ export class GfApiPageComponent implements OnInit {
map(({ historicalData }) => {
return historicalData;
}),
- takeUntil(this.unsubscribeSubject)
+ takeUntilDestroyed(this.destroyRef)
);
}
@@ -129,7 +127,7 @@ export class GfApiPageComponent implements OnInit {
map(({ items }) => {
return items;
}),
- takeUntil(this.unsubscribeSubject)
+ takeUntilDestroyed(this.destroyRef)
);
}
@@ -145,7 +143,7 @@ export class GfApiPageComponent implements OnInit {
map(({ quotes }) => {
return quotes;
}),
- takeUntil(this.unsubscribeSubject)
+ takeUntilDestroyed(this.destroyRef)
);
}
@@ -155,7 +153,7 @@ export class GfApiPageComponent implements OnInit {
'/api/v2/data-providers/ghostfolio/status',
{ headers: this.getHeaders() }
)
- .pipe(takeUntil(this.unsubscribeSubject));
+ .pipe(takeUntilDestroyed(this.destroyRef));
}
private getHeaders() {
diff --git a/apps/client/src/app/pages/auth/auth-page.component.ts b/apps/client/src/app/pages/auth/auth-page.component.ts
index 082401d6d..1b0b4a67c 100644
--- a/apps/client/src/app/pages/auth/auth-page.component.ts
+++ b/apps/client/src/app/pages/auth/auth-page.component.ts
@@ -4,20 +4,18 @@ import {
} from '@ghostfolio/client/services/settings-storage.service';
import { TokenStorageService } from '@ghostfolio/client/services/token-storage.service';
-import { Component, OnDestroy, OnInit } from '@angular/core';
+import { Component, DestroyRef, OnInit } from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { ActivatedRoute, Router } from '@angular/router';
-import { Subject } from 'rxjs';
-import { takeUntil } from 'rxjs/operators';
@Component({
selector: 'gf-auth-page',
styleUrls: ['./auth-page.scss'],
templateUrl: './auth-page.html'
})
-export class GfAuthPageComponent implements OnDestroy, OnInit {
- private unsubscribeSubject = new Subject();
-
+export class GfAuthPageComponent implements OnInit {
public constructor(
+ private destroyRef: DestroyRef,
private route: ActivatedRoute,
private router: Router,
private settingsStorageService: SettingsStorageService,
@@ -26,7 +24,7 @@ export class GfAuthPageComponent implements OnDestroy, OnInit {
public ngOnInit() {
this.route.params
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((params) => {
const jwt = params['jwt'];
@@ -38,9 +36,4 @@ export class GfAuthPageComponent implements OnDestroy, OnInit {
this.router.navigate(['/']);
});
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/pages/blog/blog-page.component.ts b/apps/client/src/app/pages/blog/blog-page.component.ts
index 8a379a7e4..7f2c56d2d 100644
--- a/apps/client/src/app/pages/blog/blog-page.component.ts
+++ b/apps/client/src/app/pages/blog/blog-page.component.ts
@@ -1,13 +1,12 @@
import { hasPermission, permissions } from '@ghostfolio/common/permissions';
import { DataService } from '@ghostfolio/ui/services';
-import { Component, CUSTOM_ELEMENTS_SCHEMA, OnDestroy } from '@angular/core';
+import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { MatCardModule } from '@angular/material/card';
import { RouterModule } from '@angular/router';
import { IonIcon } from '@ionic/angular/standalone';
import { addIcons } from 'ionicons';
import { chevronForwardOutline } from 'ionicons/icons';
-import { Subject } from 'rxjs';
@Component({
host: { class: 'page' },
@@ -17,11 +16,9 @@ import { Subject } from 'rxjs';
styleUrls: ['./blog-page.scss'],
templateUrl: './blog-page.html'
})
-export class GfBlogPageComponent implements OnDestroy {
+export class GfBlogPageComponent {
public hasPermissionForSubscription: boolean;
- private unsubscribeSubject = new Subject();
-
public constructor(private dataService: DataService) {
const info = this.dataService.fetchInfo();
@@ -32,9 +29,4 @@ export class GfBlogPageComponent implements OnDestroy {
addIcons({ chevronForwardOutline });
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/pages/demo/demo-page.component.ts b/apps/client/src/app/pages/demo/demo-page.component.ts
index 5b94fd541..235805dcc 100644
--- a/apps/client/src/app/pages/demo/demo-page.component.ts
+++ b/apps/client/src/app/pages/demo/demo-page.component.ts
@@ -3,9 +3,8 @@ import { InfoItem } from '@ghostfolio/common/interfaces';
import { NotificationService } from '@ghostfolio/ui/notifications';
import { DataService } from '@ghostfolio/ui/services';
-import { Component, OnDestroy } from '@angular/core';
+import { Component } from '@angular/core';
import { Router } from '@angular/router';
-import { Subject } from 'rxjs';
@Component({
host: { class: 'page' },
@@ -13,11 +12,9 @@ import { Subject } from 'rxjs';
standalone: true,
templateUrl: './demo-page.html'
})
-export class GfDemoPageComponent implements OnDestroy {
+export class GfDemoPageComponent {
public info: InfoItem;
- private unsubscribeSubject = new Subject();
-
public constructor(
private dataService: DataService,
private notificationService: NotificationService,
@@ -40,9 +37,4 @@ export class GfDemoPageComponent implements OnDestroy {
this.router.navigate(['/']);
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/pages/faq/faq-page.component.ts b/apps/client/src/app/pages/faq/faq-page.component.ts
index caf4217ca..83171254a 100644
--- a/apps/client/src/app/pages/faq/faq-page.component.ts
+++ b/apps/client/src/app/pages/faq/faq-page.component.ts
@@ -3,19 +3,13 @@ import { hasPermission, permissions } from '@ghostfolio/common/permissions';
import { publicRoutes } from '@ghostfolio/common/routes/routes';
import { DataService } from '@ghostfolio/ui/services';
-import {
- CUSTOM_ELEMENTS_SCHEMA,
- Component,
- OnDestroy,
- OnInit
-} from '@angular/core';
+import { CUSTOM_ELEMENTS_SCHEMA, Component, OnInit } from '@angular/core';
import { MatTabsModule } from '@angular/material/tabs';
import { RouterModule } from '@angular/router';
import { IonIcon } from '@ionic/angular/standalone';
import { addIcons } from 'ionicons';
import { cloudyOutline, readerOutline, serverOutline } from 'ionicons/icons';
import { DeviceDetectorService } from 'ngx-device-detector';
-import { Subject } from 'rxjs';
@Component({
host: { class: 'page has-tabs' },
@@ -25,13 +19,11 @@ import { Subject } from 'rxjs';
styleUrls: ['./faq-page.scss'],
templateUrl: './faq-page.html'
})
-export class GfFaqPageComponent implements OnDestroy, OnInit {
+export class GfFaqPageComponent implements OnInit {
public deviceType: string;
public hasPermissionForSubscription: boolean;
public tabs: TabConfiguration[] = [];
- private unsubscribeSubject = new Subject();
-
public constructor(
private dataService: DataService,
private deviceService: DeviceDetectorService
@@ -68,9 +60,4 @@ export class GfFaqPageComponent implements OnDestroy, OnInit {
public ngOnInit() {
this.deviceType = this.deviceService.getDeviceInfo().deviceType;
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/pages/faq/saas/saas-page.component.ts b/apps/client/src/app/pages/faq/saas/saas-page.component.ts
index b47d45fe2..3f44653d2 100644
--- a/apps/client/src/app/pages/faq/saas/saas-page.component.ts
+++ b/apps/client/src/app/pages/faq/saas/saas-page.component.ts
@@ -7,11 +7,11 @@ import {
ChangeDetectorRef,
Component,
CUSTOM_ELEMENTS_SCHEMA,
- OnDestroy
+ DestroyRef
} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { MatCardModule } from '@angular/material/card';
import { RouterModule } from '@angular/router';
-import { Subject, takeUntil } from 'rxjs';
@Component({
host: { class: 'page' },
@@ -21,7 +21,7 @@ import { Subject, takeUntil } from 'rxjs';
styleUrls: ['./saas-page.scss'],
templateUrl: './saas-page.html'
})
-export class GfSaasPageComponent implements OnDestroy {
+export class GfSaasPageComponent {
public pricingUrl = `https://ghostfol.io/${document.documentElement.lang}/${publicRoutes.pricing.path}`;
public routerLinkAccount = internalRoutes.account.routerLink;
public routerLinkAccountMembership =
@@ -30,16 +30,15 @@ export class GfSaasPageComponent implements OnDestroy {
public routerLinkRegister = publicRoutes.register.routerLink;
public user: User;
- private unsubscribeSubject = new Subject();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
+ private destroyRef: DestroyRef,
private userService: UserService
) {}
public ngOnInit() {
this.userService.stateChanged
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((state) => {
if (state?.user) {
this.user = state.user;
@@ -48,9 +47,4 @@ export class GfSaasPageComponent implements OnDestroy {
}
});
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts b/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts
index ed1d74395..f2468c7d4 100644
--- a/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts
+++ b/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.component.ts
@@ -1,10 +1,9 @@
import { publicRoutes } from '@ghostfolio/common/routes/routes';
import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator';
-import { CUSTOM_ELEMENTS_SCHEMA, Component, OnDestroy } from '@angular/core';
+import { CUSTOM_ELEMENTS_SCHEMA, Component } from '@angular/core';
import { MatCardModule } from '@angular/material/card';
import { RouterModule } from '@angular/router';
-import { Subject } from 'rxjs';
@Component({
host: { class: 'page' },
@@ -14,13 +13,6 @@ import { Subject } from 'rxjs';
styleUrls: ['./self-hosting-page.scss'],
templateUrl: './self-hosting-page.html'
})
-export class GfSelfHostingPageComponent implements OnDestroy {
+export class GfSelfHostingPageComponent {
public pricingUrl = `https://ghostfol.io/${document.documentElement.lang}/${publicRoutes.pricing.path}`;
-
- private unsubscribeSubject = new Subject();
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html b/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html
index 42e810eb0..ef88df9aa 100644
--- a/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html
+++ b/apps/client/src/app/pages/faq/self-hosting/self-hosting-page.html
@@ -93,6 +93,10 @@
dialog
+
+ For derived currencies (e.g. GBp), ensure that you
+ gather the data for the parent currency (e.g. GBP).
+
diff --git a/apps/client/src/app/pages/features/features-page.component.ts b/apps/client/src/app/pages/features/features-page.component.ts
index b9eb91fe2..cef90f2e5 100644
--- a/apps/client/src/app/pages/features/features-page.component.ts
+++ b/apps/client/src/app/pages/features/features-page.component.ts
@@ -5,11 +5,11 @@ import { publicRoutes } from '@ghostfolio/common/routes/routes';
import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator';
import { DataService } from '@ghostfolio/ui/services';
-import { ChangeDetectorRef, Component, OnDestroy } from '@angular/core';
+import { ChangeDetectorRef, Component, DestroyRef } from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { MatButtonModule } from '@angular/material/button';
import { MatCardModule } from '@angular/material/card';
import { RouterModule } from '@angular/router';
-import { Subject, takeUntil } from 'rxjs';
@Component({
host: { class: 'page' },
@@ -23,7 +23,7 @@ import { Subject, takeUntil } from 'rxjs';
styleUrls: ['./features-page.scss'],
templateUrl: './features-page.html'
})
-export class GfFeaturesPageComponent implements OnDestroy {
+export class GfFeaturesPageComponent {
public hasPermissionForSubscription: boolean;
public hasPermissionToCreateUser: boolean;
public info: InfoItem;
@@ -31,11 +31,10 @@ export class GfFeaturesPageComponent implements OnDestroy {
public routerLinkResources = publicRoutes.resources.routerLink;
public user: User;
- private unsubscribeSubject = new Subject();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
private dataService: DataService,
+ private destroyRef: DestroyRef,
private userService: UserService
) {
this.info = this.dataService.fetchInfo();
@@ -43,7 +42,7 @@ export class GfFeaturesPageComponent implements OnDestroy {
public ngOnInit() {
this.userService.stateChanged
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((state) => {
if (state?.user) {
this.user = state.user;
@@ -62,9 +61,4 @@ export class GfFeaturesPageComponent implements OnDestroy {
permissions.createUserAccount
);
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/pages/home/home-page.component.ts b/apps/client/src/app/pages/home/home-page.component.ts
index fd860ced5..5130c8166 100644
--- a/apps/client/src/app/pages/home/home-page.component.ts
+++ b/apps/client/src/app/pages/home/home-page.component.ts
@@ -8,9 +8,10 @@ import {
ChangeDetectorRef,
Component,
CUSTOM_ELEMENTS_SCHEMA,
- OnDestroy,
+ DestroyRef,
OnInit
} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { MatTabsModule } from '@angular/material/tabs';
import { RouterModule } from '@angular/router';
import { IonIcon } from '@ionic/angular/standalone';
@@ -23,8 +24,6 @@ import {
readerOutline
} from 'ionicons/icons';
import { DeviceDetectorService } from 'ngx-device-detector';
-import { Subject } from 'rxjs';
-import { takeUntil } from 'rxjs/operators';
@Component({
host: { class: 'page has-tabs' },
@@ -34,22 +33,21 @@ import { takeUntil } from 'rxjs/operators';
styleUrls: ['./home-page.scss'],
templateUrl: './home-page.html'
})
-export class GfHomePageComponent implements OnDestroy, OnInit {
+export class GfHomePageComponent implements OnInit {
public deviceType: string;
public hasImpersonationId: boolean;
public tabs: TabConfiguration[] = [];
public user: User;
- private unsubscribeSubject = new Subject();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
+ private destroyRef: DestroyRef,
private deviceService: DeviceDetectorService,
private impersonationStorageService: ImpersonationStorageService,
private userService: UserService
) {
this.userService.stateChanged
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((state) => {
if (state?.user) {
this.user = state.user;
@@ -110,14 +108,9 @@ export class GfHomePageComponent implements OnDestroy, OnInit {
this.impersonationStorageService
.onChangeHasImpersonation()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((impersonationId) => {
this.hasImpersonationId = !!impersonationId;
});
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/pages/i18n/i18n-page.component.ts b/apps/client/src/app/pages/i18n/i18n-page.component.ts
index 19ecd222e..76d123914 100644
--- a/apps/client/src/app/pages/i18n/i18n-page.component.ts
+++ b/apps/client/src/app/pages/i18n/i18n-page.component.ts
@@ -1,5 +1,4 @@
import { Component } from '@angular/core';
-import { Subject } from 'rxjs';
@Component({
host: { class: 'page' },
@@ -8,11 +7,4 @@ import { Subject } from 'rxjs';
styleUrls: ['./i18n-page.scss'],
templateUrl: './i18n-page.html'
})
-export class GfI18nPageComponent {
- private unsubscribeSubject = new Subject();
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
-}
+export class GfI18nPageComponent {}
diff --git a/apps/client/src/app/pages/i18n/i18n-page.html b/apps/client/src/app/pages/i18n/i18n-page.html
index b4297d5ac..99ef3039e 100644
--- a/apps/client/src/app/pages/i18n/i18n-page.html
+++ b/apps/client/src/app/pages/i18n/i18n-page.html
@@ -149,14 +149,14 @@
An emergency fund has been set up
- Fee Ratio
-
- The fees do exceed ${thresholdMax}% of your initial investment
- (${feeRatio}%)
-
-
- The fees do not exceed ${thresholdMax}% of your initial
- investment (${feeRatio}%)
+ Fee Ratio
+
+ The fees do exceed ${thresholdMax}% of your total investment
+ volume (${feeRatio}%)
+
+
+ The fees do not exceed ${thresholdMax}% of your total
+ investment volume (${feeRatio}%)
Fees
diff --git a/apps/client/src/app/pages/landing/landing-page.component.ts b/apps/client/src/app/pages/landing/landing-page.component.ts
index 25fb2d6e7..9ee9cceb4 100644
--- a/apps/client/src/app/pages/landing/landing-page.component.ts
+++ b/apps/client/src/app/pages/landing/landing-page.component.ts
@@ -9,7 +9,7 @@ import { GfValueComponent } from '@ghostfolio/ui/value';
import { GfWorldMapChartComponent } from '@ghostfolio/ui/world-map-chart';
import { CommonModule } from '@angular/common';
-import { Component, OnDestroy, OnInit } from '@angular/core';
+import { Component, OnInit } from '@angular/core';
import { MatButtonModule } from '@angular/material/button';
import { MatCardModule } from '@angular/material/card';
import { RouterModule } from '@angular/router';
@@ -21,7 +21,6 @@ import {
starOutline
} from 'ionicons/icons';
import { DeviceDetectorService } from 'ngx-device-detector';
-import { Subject } from 'rxjs';
@Component({
host: { class: 'page' },
@@ -40,7 +39,7 @@ import { Subject } from 'rxjs';
styleUrls: ['./landing-page.scss'],
templateUrl: './landing-page.html'
})
-export class GfLandingPageComponent implements OnDestroy, OnInit {
+export class GfLandingPageComponent implements OnInit {
public countriesOfSubscribersMap: {
[code: string]: { value: number };
} = {};
@@ -107,8 +106,6 @@ export class GfLandingPageComponent implements OnDestroy, OnInit {
}
];
- private unsubscribeSubject = new Subject();
-
public constructor(
private dataService: DataService,
private deviceService: DeviceDetectorService
@@ -155,9 +152,4 @@ export class GfLandingPageComponent implements OnDestroy, OnInit {
public ngOnInit() {
this.deviceType = this.deviceService.getDeviceInfo().deviceType;
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/pages/markets/markets-page.component.ts b/apps/client/src/app/pages/markets/markets-page.component.ts
index 1ab97c3e0..c70cb8120 100644
--- a/apps/client/src/app/pages/markets/markets-page.component.ts
+++ b/apps/client/src/app/pages/markets/markets-page.component.ts
@@ -1,7 +1,6 @@
import { GfHomeMarketComponent } from '@ghostfolio/client/components/home-market/home-market.component';
-import { Component, OnDestroy } from '@angular/core';
-import { Subject } from 'rxjs';
+import { Component } from '@angular/core';
@Component({
host: { class: 'page' },
@@ -10,11 +9,4 @@ import { Subject } from 'rxjs';
styleUrls: ['./markets-page.scss'],
templateUrl: './markets-page.html'
})
-export class GfMarketsPageComponent implements OnDestroy {
- private unsubscribeSubject = new Subject();
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
-}
+export class GfMarketsPageComponent {}
diff --git a/apps/client/src/app/pages/open/open-page.component.ts b/apps/client/src/app/pages/open/open-page.component.ts
index 6284c41f4..090588d7d 100644
--- a/apps/client/src/app/pages/open/open-page.component.ts
+++ b/apps/client/src/app/pages/open/open-page.component.ts
@@ -7,11 +7,11 @@ import {
ChangeDetectorRef,
Component,
CUSTOM_ELEMENTS_SCHEMA,
- OnDestroy,
+ DestroyRef,
OnInit
} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { MatCardModule } from '@angular/material/card';
-import { Subject, takeUntil } from 'rxjs';
@Component({
host: { class: 'page' },
@@ -21,15 +21,14 @@ import { Subject, takeUntil } from 'rxjs';
styleUrls: ['./open-page.scss'],
templateUrl: './open-page.html'
})
-export class GfOpenPageComponent implements OnDestroy, OnInit {
+export class GfOpenPageComponent implements OnInit {
public statistics: Statistics;
public user: User;
- private unsubscribeSubject = new Subject();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
private dataService: DataService,
+ private destroyRef: DestroyRef,
private userService: UserService
) {
const { statistics } = this.dataService.fetchInfo();
@@ -39,7 +38,7 @@ export class GfOpenPageComponent implements OnDestroy, OnInit {
public ngOnInit() {
this.userService.stateChanged
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((state) => {
if (state?.user) {
this.user = state.user;
@@ -48,9 +47,4 @@ export class GfOpenPageComponent implements OnDestroy, OnInit {
}
});
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/pages/portfolio/activities/activities-page.component.ts b/apps/client/src/app/pages/portfolio/activities/activities-page.component.ts
index cf7a41215..acd6cba10 100644
--- a/apps/client/src/app/pages/portfolio/activities/activities-page.component.ts
+++ b/apps/client/src/app/pages/portfolio/activities/activities-page.component.ts
@@ -10,10 +10,17 @@ import {
User
} from '@ghostfolio/common/interfaces';
import { hasPermission, permissions } from '@ghostfolio/common/permissions';
+import { DateRange } from '@ghostfolio/common/types';
import { GfActivitiesTableComponent } from '@ghostfolio/ui/activities-table';
import { DataService } from '@ghostfolio/ui/services';
-import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';
+import {
+ ChangeDetectorRef,
+ Component,
+ DestroyRef,
+ OnInit
+} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { MatButtonModule } from '@angular/material/button';
import { MatDialog } from '@angular/material/dialog';
import { PageEvent } from '@angular/material/paginator';
@@ -26,8 +33,7 @@ import { format, parseISO } from 'date-fns';
import { addIcons } from 'ionicons';
import { addOutline } from 'ionicons/icons';
import { DeviceDetectorService } from 'ngx-device-detector';
-import { Subject, Subscription } from 'rxjs';
-import { takeUntil } from 'rxjs/operators';
+import { Subscription } from 'rxjs';
import { GfCreateOrUpdateActivityDialogComponent } from './create-or-update-activity-dialog/create-or-update-activity-dialog.component';
import { CreateOrUpdateActivityDialogParams } from './create-or-update-activity-dialog/interfaces/interfaces';
@@ -47,7 +53,8 @@ import { ImportActivitiesDialogParams } from './import-activities-dialog/interfa
styleUrls: ['./activities-page.scss'],
templateUrl: './activities-page.html'
})
-export class GfActivitiesPageComponent implements OnDestroy, OnInit {
+export class GfActivitiesPageComponent implements OnInit {
+ public activityTypesFilter: string[] = [];
public dataSource: MatTableDataSource;
public deviceType: string;
public hasImpersonationId: boolean;
@@ -58,14 +65,13 @@ export class GfActivitiesPageComponent implements OnDestroy, OnInit {
public routeQueryParams: Subscription;
public sortColumn = 'date';
public sortDirection: SortDirection = 'desc';
- public totalItems: number;
+ public totalItems: number | undefined;
public user: User;
- private unsubscribeSubject = new Subject();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
private dataService: DataService,
+ private destroyRef: DestroyRef,
private deviceService: DeviceDetectorService,
private dialog: MatDialog,
private icsService: IcsService,
@@ -75,13 +81,13 @@ export class GfActivitiesPageComponent implements OnDestroy, OnInit {
private userService: UserService
) {
this.routeQueryParams = route.queryParams
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((params) => {
if (params['createDialog']) {
if (params['activityId']) {
this.dataService
.fetchActivity(params['activityId'])
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((activity) => {
this.openCreateActivityDialog(activity);
});
@@ -92,7 +98,7 @@ export class GfActivitiesPageComponent implements OnDestroy, OnInit {
if (params['activityId']) {
this.dataService
.fetchActivity(params['activityId'])
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((activity) => {
this.openUpdateActivityDialog(activity);
});
@@ -110,13 +116,13 @@ export class GfActivitiesPageComponent implements OnDestroy, OnInit {
this.impersonationStorageService
.onChangeHasImpersonation()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((impersonationId) => {
this.hasImpersonationId = !!impersonationId;
});
this.userService.stateChanged
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((state) => {
if (state?.user) {
this.updateUser(state.user);
@@ -129,15 +135,26 @@ export class GfActivitiesPageComponent implements OnDestroy, OnInit {
}
public fetchActivities() {
+ // Reset dataSource and totalItems to show loading state
+ this.dataSource = undefined;
+ this.totalItems = undefined;
+
+ const dateRange = this.user?.settings?.dateRange;
+ const range = this.isCalendarYear(dateRange) ? dateRange : undefined;
+
this.dataService
.fetchActivities({
+ range,
+ activityTypes: this.activityTypesFilter.length
+ ? this.activityTypesFilter
+ : undefined,
filters: this.userService.getFilters(),
skip: this.pageIndex * this.pageSize,
sortColumn: this.sortColumn,
sortDirection: this.sortDirection,
take: this.pageSize
})
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ activities, count }) => {
this.dataSource = new MatTableDataSource(activities);
this.totalItems = count;
@@ -178,28 +195,32 @@ export class GfActivitiesPageComponent implements OnDestroy, OnInit {
.deleteActivities({
filters: this.userService.getFilters()
})
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
this.userService
.get(true)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe();
this.fetchActivities();
+
+ this.changeDetectorRef.markForCheck();
});
}
public onDeleteActivity(aId: string) {
this.dataService
.deleteActivity(aId)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
this.userService
.get(true)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe();
this.fetchActivities();
+
+ this.changeDetectorRef.markForCheck();
});
}
@@ -207,12 +228,17 @@ export class GfActivitiesPageComponent implements OnDestroy, OnInit {
let fetchExportParams: any = { activityIds };
if (!activityIds) {
- fetchExportParams = { filters: this.userService.getFilters() };
+ fetchExportParams = {
+ activityTypes: this.activityTypesFilter.length
+ ? this.activityTypesFilter
+ : undefined,
+ filters: this.userService.getFilters()
+ };
}
this.dataService
.fetchExport(fetchExportParams)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((data) => {
for (const activity of data.activities) {
delete activity.id;
@@ -232,7 +258,7 @@ export class GfActivitiesPageComponent implements OnDestroy, OnInit {
public onExportDrafts(activityIds?: string[]) {
this.dataService
.fetchExport({ activityIds })
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((data) => {
downloadAsFile({
content: this.icsService.transformActivitiesToIcsContent(
@@ -262,14 +288,16 @@ export class GfActivitiesPageComponent implements OnDestroy, OnInit {
dialogRef
.afterClosed()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
this.userService
.get(true)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe();
this.fetchActivities();
+
+ this.changeDetectorRef.markForCheck();
});
}
@@ -289,14 +317,16 @@ export class GfActivitiesPageComponent implements OnDestroy, OnInit {
dialogRef
.afterClosed()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
this.userService
.get(true)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe();
this.fetchActivities();
+
+ this.changeDetectorRef.markForCheck();
});
}
@@ -308,6 +338,13 @@ export class GfActivitiesPageComponent implements OnDestroy, OnInit {
this.fetchActivities();
}
+ public onTypesFilterChanged(aTypes: string[]) {
+ this.activityTypesFilter = aTypes;
+ this.pageIndex = 0;
+
+ this.fetchActivities();
+ }
+
public onUpdateActivity(aActivity: Activity) {
this.router.navigate([], {
queryParams: { activityId: aActivity.id, editDialog: true }
@@ -330,15 +367,17 @@ export class GfActivitiesPageComponent implements OnDestroy, OnInit {
dialogRef
.afterClosed()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((activity: UpdateOrderDto) => {
if (activity) {
this.dataService
- .putOrder(activity)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .putActivity(activity)
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe({
next: () => {
this.fetchActivities();
+
+ this.changeDetectorRef.markForCheck();
}
});
}
@@ -347,15 +386,18 @@ export class GfActivitiesPageComponent implements OnDestroy, OnInit {
});
}
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
+ private isCalendarYear(dateRange: DateRange) {
+ if (!dateRange) {
+ return false;
+ }
+
+ return /^\d{4}$/.test(dateRange);
}
private openCreateActivityDialog(aActivity?: Activity) {
this.userService
.get()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((user) => {
this.updateUser(user);
@@ -382,17 +424,19 @@ export class GfActivitiesPageComponent implements OnDestroy, OnInit {
dialogRef
.afterClosed()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((transaction: CreateOrderDto | null) => {
if (transaction) {
- this.dataService.postOrder(transaction).subscribe({
+ this.dataService.postActivity(transaction).subscribe({
next: () => {
this.userService
.get(true)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe();
this.fetchActivities();
+
+ this.changeDetectorRef.markForCheck();
}
});
}
@@ -407,9 +451,9 @@ export class GfActivitiesPageComponent implements OnDestroy, OnInit {
this.hasPermissionToCreateActivity =
!this.hasImpersonationId &&
- hasPermission(this.user.permissions, permissions.createOrder);
+ hasPermission(this.user.permissions, permissions.createActivity);
this.hasPermissionToDeleteActivity =
!this.hasImpersonationId &&
- hasPermission(this.user.permissions, permissions.deleteOrder);
+ hasPermission(this.user.permissions, permissions.deleteActivity);
}
}
diff --git a/apps/client/src/app/pages/portfolio/activities/activities-page.html b/apps/client/src/app/pages/portfolio/activities/activities-page.html
index 80ad71b79..2a72dcfd2 100644
--- a/apps/client/src/app/pages/portfolio/activities/activities-page.html
+++ b/apps/client/src/app/pages/portfolio/activities/activities-page.html
@@ -10,6 +10,7 @@
[hasPermissionToCreateActivity]="hasPermissionToCreateActivity"
[hasPermissionToDeleteActivity]="hasPermissionToDeleteActivity"
[hasPermissionToExportActivities]="!hasImpersonationId"
+ [hasPermissionToFilterByType]="user?.settings?.isExperimentalFeatures"
[locale]="user?.settings?.locale"
[pageIndex]="pageIndex"
[pageSize]="pageSize"
@@ -32,6 +33,7 @@
(importDividends)="onImportDividends()"
(pageChanged)="onChangePage($event)"
(sortChanged)="onSortChanged($event)"
+ (typesFilterChanged)="onTypesFilterChanged($event)"
/>
diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts
index 8695f04ed..277701862 100644
--- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts
+++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts
@@ -1,5 +1,6 @@
import { UserService } from '@ghostfolio/client/services/user/user.service';
import { ASSET_CLASS_MAPPING } from '@ghostfolio/common/config';
+import { locale as defaultLocale } from '@ghostfolio/common/config';
import { CreateOrderDto, UpdateOrderDto } from '@ghostfolio/common/dtos';
import { getDateFormatString } from '@ghostfolio/common/helper';
import {
@@ -20,9 +21,10 @@ import {
ChangeDetectionStrategy,
ChangeDetectorRef,
Component,
- Inject,
- OnDestroy
+ DestroyRef,
+ Inject
} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import {
FormBuilder,
FormGroup,
@@ -46,8 +48,8 @@ import { AssetClass, Tag, Type } from '@prisma/client';
import { isAfter, isToday } from 'date-fns';
import { addIcons } from 'ionicons';
import { calendarClearOutline, refreshOutline } from 'ionicons/icons';
-import { EMPTY, Subject } from 'rxjs';
-import { catchError, delay, takeUntil } from 'rxjs/operators';
+import { EMPTY } from 'rxjs';
+import { catchError, delay } from 'rxjs/operators';
import { CreateOrUpdateActivityDialogParams } from './interfaces/interfaces';
import { ActivityType } from './types/activity-type.type';
@@ -75,7 +77,7 @@ import { ActivityType } from './types/activity-type.type';
styleUrls: ['./create-or-update-activity-dialog.scss'],
templateUrl: 'create-or-update-activity-dialog.html'
})
-export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy {
+export class GfCreateOrUpdateActivityDialogComponent {
public activityForm: FormGroup;
public assetClassOptions: AssetClassSelectorOption[] = Object.keys(AssetClass)
@@ -88,11 +90,11 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy {
public assetSubClassOptions: AssetClassSelectorOption[] = [];
public currencies: string[] = [];
- public currencyOfAssetProfile: string;
- public currentMarketPrice = null;
+ public currencyOfAssetProfile: string | undefined;
+ public currentMarketPrice: number | null = null;
public defaultDateFormat: string;
public defaultLookupItems: LookupItem[] = [];
- public hasPermissionToCreateOwnTag: boolean;
+ public hasPermissionToCreateOwnTag: boolean | undefined;
public isLoading = false;
public isToday = isToday;
public mode: 'create' | 'update';
@@ -101,13 +103,12 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy {
public typesTranslationMap = new Map
();
public Validators = Validators;
- private unsubscribeSubject = new Subject();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
@Inject(MAT_DIALOG_DATA) public data: CreateOrUpdateActivityDialogParams,
private dataService: DataService,
- private dateAdapter: DateAdapter,
+ private dateAdapter: DateAdapter,
+ private destroyRef: DestroyRef,
public dialogRef: MatDialogRef,
private formBuilder: FormBuilder,
@Inject(MAT_DATE_LOCALE) private locale: string,
@@ -121,7 +122,7 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy {
this.hasPermissionToCreateOwnTag =
this.data.user?.settings?.isExperimentalFeatures &&
hasPermission(this.data.user?.permissions, permissions.createOwnTag);
- this.locale = this.data.user?.settings?.locale;
+ this.locale = this.data.user.settings.locale ?? defaultLocale;
this.mode = this.data.activity?.id ? 'update' : 'create';
this.dateAdapter.setLocale(this.locale);
@@ -133,37 +134,28 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy {
this.dataService
.fetchPortfolioHoldings()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ holdings }) => {
this.defaultLookupItems = holdings
- .filter(({ assetSubClass }) => {
- return !['CASH'].includes(assetSubClass);
+ .filter(({ assetProfile }) => {
+ return !['CASH'].includes(assetProfile.assetSubClass);
})
.sort((a, b) => {
return a.name?.localeCompare(b.name);
})
- .map(
- ({
- assetClass,
- assetSubClass,
- currency,
- dataSource,
- name,
- symbol
- }) => {
- return {
- assetClass,
- assetSubClass,
- currency,
- dataSource,
- name,
- symbol,
- dataProviderInfo: {
- isPremium: false
- }
- };
- }
- );
+ .map(({ assetProfile }) => {
+ return {
+ assetClass: assetProfile.assetClass,
+ assetSubClass: assetProfile.assetSubClass,
+ currency: assetProfile.currency ?? '',
+ dataProviderInfo: {
+ isPremium: false
+ },
+ dataSource: assetProfile.dataSource,
+ name: assetProfile.name ?? '',
+ symbol: assetProfile.symbol
+ };
+ });
this.changeDetectorRef.markForCheck();
});
@@ -188,8 +180,7 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy {
!this.data.activity?.accountId &&
this.mode === 'create'
? this.data.accounts[0].id
- : this.data.activity?.accountId,
- Validators.required
+ : this.data.activity?.accountId
],
assetClass: [this.data.activity?.SymbolProfile?.assetClass],
assetSubClass: [this.data.activity?.SymbolProfile?.assetSubClass],
@@ -238,30 +229,30 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy {
// Slightly delay until the more specific form control value changes have
// completed
delay(300),
- takeUntil(this.unsubscribeSubject)
+ takeUntilDestroyed(this.destroyRef)
)
.subscribe(async () => {
if (
['BUY', 'FEE', 'VALUABLE'].includes(
- this.activityForm.get('type').value
+ this.activityForm.get('type')?.value
)
) {
this.total =
- this.activityForm.get('quantity').value *
- this.activityForm.get('unitPrice').value +
- (this.activityForm.get('fee').value ?? 0);
+ this.activityForm.get('quantity')?.value *
+ this.activityForm.get('unitPrice')?.value +
+ (this.activityForm.get('fee')?.value ?? 0);
} else {
this.total =
- this.activityForm.get('quantity').value *
- this.activityForm.get('unitPrice').value -
- (this.activityForm.get('fee').value ?? 0);
+ this.activityForm.get('quantity')?.value *
+ this.activityForm.get('unitPrice')?.value -
+ (this.activityForm.get('fee')?.value ?? 0);
}
this.changeDetectorRef.markForCheck();
});
- this.activityForm.get('accountId').valueChanges.subscribe((accountId) => {
- const type = this.activityForm.get('type').value;
+ this.activityForm.get('accountId')?.valueChanges.subscribe((accountId) => {
+ const type = this.activityForm.get('type')?.value;
if (['FEE', 'INTEREST', 'LIABILITY', 'VALUABLE'].includes(type)) {
const currency =
@@ -269,15 +260,15 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy {
return id === accountId;
})?.currency ?? this.data.user.settings.baseCurrency;
- this.activityForm.get('currency').setValue(currency);
- this.activityForm.get('currencyOfUnitPrice').setValue(currency);
+ this.activityForm.get('currency')?.setValue(currency);
+ this.activityForm.get('currencyOfUnitPrice')?.setValue(currency);
if (['FEE', 'INTEREST'].includes(type)) {
- if (this.activityForm.get('accountId').value) {
- this.activityForm.get('updateAccountBalance').enable();
+ if (this.activityForm.get('accountId')?.value) {
+ this.activityForm.get('updateAccountBalance')?.enable();
} else {
- this.activityForm.get('updateAccountBalance').disable();
- this.activityForm.get('updateAccountBalance').setValue(false);
+ this.activityForm.get('updateAccountBalance')?.disable();
+ this.activityForm.get('updateAccountBalance')?.setValue(false);
}
}
}
@@ -285,7 +276,7 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy {
this.activityForm
.get('assetClass')
- .valueChanges.pipe(takeUntil(this.unsubscribeSubject))
+ ?.valueChanges.pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((assetClass) => {
const assetSubClasses = ASSET_CLASS_MAPPING.get(assetClass) ?? [];
@@ -298,28 +289,28 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy {
})
.sort((a, b) => a.label.localeCompare(b.label));
- this.activityForm.get('assetSubClass').setValue(null);
+ this.activityForm.get('assetSubClass')?.setValue(null);
this.changeDetectorRef.markForCheck();
});
- this.activityForm.get('date').valueChanges.subscribe(() => {
- if (isToday(this.activityForm.get('date').value)) {
- this.activityForm.get('updateAccountBalance').enable();
+ this.activityForm.get('date')?.valueChanges.subscribe(() => {
+ if (isToday(this.activityForm.get('date')?.value)) {
+ this.activityForm.get('updateAccountBalance')?.enable();
} else {
- this.activityForm.get('updateAccountBalance').disable();
- this.activityForm.get('updateAccountBalance').setValue(false);
+ this.activityForm.get('updateAccountBalance')?.disable();
+ this.activityForm.get('updateAccountBalance')?.setValue(false);
}
this.changeDetectorRef.markForCheck();
});
- this.activityForm.get('searchSymbol').valueChanges.subscribe(() => {
- if (this.activityForm.get('searchSymbol').invalid) {
+ this.activityForm.get('searchSymbol')?.valueChanges.subscribe(() => {
+ if (this.activityForm.get('searchSymbol')?.invalid) {
this.data.activity.SymbolProfile = null;
} else if (
['BUY', 'DIVIDEND', 'SELL'].includes(
- this.activityForm.get('type').value
+ this.activityForm.get('type')?.value
)
) {
this.updateAssetProfile();
@@ -328,7 +319,7 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy {
this.changeDetectorRef.markForCheck();
});
- this.activityForm.get('tags').valueChanges.subscribe((tags: Tag[]) => {
+ this.activityForm.get('tags')?.valueChanges.subscribe((tags: Tag[]) => {
const newTag = tags.find(({ id }) => {
return id === undefined;
});
@@ -336,9 +327,9 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy {
if (newTag && this.hasPermissionToCreateOwnTag) {
this.dataService
.postTag({ ...newTag, userId: this.data.user.id })
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((tag) => {
- this.activityForm.get('tags').setValue(
+ this.activityForm.get('tags')?.setValue(
tags.map((currentTag) => {
if (currentTag.id === undefined) {
return tag;
@@ -350,7 +341,7 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy {
this.userService
.get(true)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe();
});
}
@@ -358,118 +349,106 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy {
this.activityForm
.get('type')
- .valueChanges.pipe(takeUntil(this.unsubscribeSubject))
+ ?.valueChanges.pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((type: ActivityType) => {
if (
type === 'VALUABLE' ||
- (this.activityForm.get('dataSource').value === 'MANUAL' &&
+ (this.activityForm.get('dataSource')?.value === 'MANUAL' &&
type === 'BUY')
) {
- this.activityForm
- .get('accountId')
- .removeValidators(Validators.required);
- this.activityForm.get('accountId').updateValueAndValidity();
-
const currency =
this.data.accounts.find(({ id }) => {
- return id === this.activityForm.get('accountId').value;
+ return id === this.activityForm.get('accountId')?.value;
})?.currency ?? this.data.user.settings.baseCurrency;
- this.activityForm.get('currency').setValue(currency);
- this.activityForm.get('currencyOfUnitPrice').setValue(currency);
+ this.activityForm.get('currency')?.setValue(currency);
+ this.activityForm.get('currencyOfUnitPrice')?.setValue(currency);
this.activityForm
.get('dataSource')
- .removeValidators(Validators.required);
- this.activityForm.get('dataSource').updateValueAndValidity();
- this.activityForm.get('fee').setValue(0);
- this.activityForm.get('name').setValidators(Validators.required);
- this.activityForm.get('name').updateValueAndValidity();
+ ?.removeValidators(Validators.required);
+ this.activityForm.get('dataSource')?.updateValueAndValidity();
+ this.activityForm.get('fee')?.setValue(0);
+ this.activityForm.get('name')?.setValidators(Validators.required);
+ this.activityForm.get('name')?.updateValueAndValidity();
if (type === 'VALUABLE') {
- this.activityForm.get('quantity').setValue(1);
+ this.activityForm.get('quantity')?.setValue(1);
}
this.activityForm
.get('searchSymbol')
- .removeValidators(Validators.required);
- this.activityForm.get('searchSymbol').updateValueAndValidity();
- this.activityForm.get('updateAccountBalance').disable();
- this.activityForm.get('updateAccountBalance').setValue(false);
+ ?.removeValidators(Validators.required);
+ this.activityForm.get('searchSymbol')?.updateValueAndValidity();
+ this.activityForm.get('updateAccountBalance')?.disable();
+ this.activityForm.get('updateAccountBalance')?.setValue(false);
} else if (['FEE', 'INTEREST', 'LIABILITY'].includes(type)) {
- this.activityForm
- .get('accountId')
- .removeValidators(Validators.required);
- this.activityForm.get('accountId').updateValueAndValidity();
-
const currency =
this.data.accounts.find(({ id }) => {
- return id === this.activityForm.get('accountId').value;
+ return id === this.activityForm.get('accountId')?.value;
})?.currency ?? this.data.user.settings.baseCurrency;
- this.activityForm.get('currency').setValue(currency);
- this.activityForm.get('currencyOfUnitPrice').setValue(currency);
+ this.activityForm.get('currency')?.setValue(currency);
+ this.activityForm.get('currencyOfUnitPrice')?.setValue(currency);
this.activityForm
.get('dataSource')
- .removeValidators(Validators.required);
- this.activityForm.get('dataSource').updateValueAndValidity();
+ ?.removeValidators(Validators.required);
+ this.activityForm.get('dataSource')?.updateValueAndValidity();
if (['INTEREST', 'LIABILITY'].includes(type)) {
- this.activityForm.get('fee').setValue(0);
+ this.activityForm.get('fee')?.setValue(0);
}
- this.activityForm.get('name').setValidators(Validators.required);
- this.activityForm.get('name').updateValueAndValidity();
+ this.activityForm.get('name')?.setValidators(Validators.required);
+ this.activityForm.get('name')?.updateValueAndValidity();
if (type === 'FEE') {
- this.activityForm.get('quantity').setValue(0);
+ this.activityForm.get('quantity')?.setValue(0);
} else if (['INTEREST', 'LIABILITY'].includes(type)) {
- this.activityForm.get('quantity').setValue(1);
+ this.activityForm.get('quantity')?.setValue(1);
}
this.activityForm
.get('searchSymbol')
- .removeValidators(Validators.required);
- this.activityForm.get('searchSymbol').updateValueAndValidity();
+ ?.removeValidators(Validators.required);
+ this.activityForm.get('searchSymbol')?.updateValueAndValidity();
if (type === 'FEE') {
- this.activityForm.get('unitPrice').setValue(0);
+ this.activityForm.get('unitPrice')?.setValue(0);
}
if (
['FEE', 'INTEREST'].includes(type) &&
- this.activityForm.get('accountId').value
+ this.activityForm.get('accountId')?.value
) {
- this.activityForm.get('updateAccountBalance').enable();
+ this.activityForm.get('updateAccountBalance')?.enable();
} else {
- this.activityForm.get('updateAccountBalance').disable();
- this.activityForm.get('updateAccountBalance').setValue(false);
+ this.activityForm.get('updateAccountBalance')?.disable();
+ this.activityForm.get('updateAccountBalance')?.setValue(false);
}
} else {
- this.activityForm.get('accountId').setValidators(Validators.required);
- this.activityForm.get('accountId').updateValueAndValidity();
this.activityForm
.get('dataSource')
- .setValidators(Validators.required);
- this.activityForm.get('dataSource').updateValueAndValidity();
- this.activityForm.get('name').removeValidators(Validators.required);
- this.activityForm.get('name').updateValueAndValidity();
+ ?.setValidators(Validators.required);
+ this.activityForm.get('dataSource')?.updateValueAndValidity();
+ this.activityForm.get('name')?.removeValidators(Validators.required);
+ this.activityForm.get('name')?.updateValueAndValidity();
this.activityForm
.get('searchSymbol')
- .setValidators(Validators.required);
- this.activityForm.get('searchSymbol').updateValueAndValidity();
- this.activityForm.get('updateAccountBalance').enable();
+ ?.setValidators(Validators.required);
+ this.activityForm.get('searchSymbol')?.updateValueAndValidity();
+ this.activityForm.get('updateAccountBalance')?.enable();
}
this.changeDetectorRef.markForCheck();
});
- this.activityForm.get('type').setValue(this.data.activity?.type);
+ this.activityForm.get('type')?.setValue(this.data.activity?.type);
if (this.data.activity?.id) {
- this.activityForm.get('searchSymbol').disable();
- this.activityForm.get('type').disable();
+ this.activityForm.get('searchSymbol')?.disable();
+ this.activityForm.get('type')?.disable();
}
if (this.data.activity?.SymbolProfile?.symbol) {
@@ -478,7 +457,7 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy {
dataSource: this.data.activity?.SymbolProfile?.dataSource,
symbol: this.data.activity?.SymbolProfile?.symbol
})
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ marketPrice }) => {
this.currentMarketPrice = marketPrice;
@@ -489,7 +468,7 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy {
public applyCurrentMarketPrice() {
this.activityForm.patchValue({
- currencyOfUnitPrice: this.activityForm.get('currency').value,
+ currencyOfUnitPrice: this.activityForm.get('currency')?.value,
unitPrice: this.currentMarketPrice
});
}
@@ -508,41 +487,42 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy {
public async onSubmit() {
const activity: CreateOrderDto | UpdateOrderDto = {
- accountId: this.activityForm.get('accountId').value,
- assetClass: this.activityForm.get('assetClass').value,
- assetSubClass: this.activityForm.get('assetSubClass').value,
- comment: this.activityForm.get('comment').value || null,
- currency: this.activityForm.get('currency').value,
- customCurrency: this.activityForm.get('currencyOfUnitPrice').value,
- date: this.activityForm.get('date').value,
- dataSource:
- this.activityForm.get('type').value === 'VALUABLE'
- ? 'MANUAL'
- : this.activityForm.get('dataSource').value,
- fee: this.activityForm.get('fee').value,
- quantity: this.activityForm.get('quantity').value,
+ accountId: this.activityForm.get('accountId')?.value,
+ assetClass: this.activityForm.get('assetClass')?.value,
+ assetSubClass: this.activityForm.get('assetSubClass')?.value,
+ comment: this.activityForm.get('comment')?.value || null,
+ currency: this.activityForm.get('currency')?.value,
+ customCurrency: this.activityForm.get('currencyOfUnitPrice')?.value,
+ dataSource: ['FEE', 'INTEREST', 'LIABILITY', 'VALUABLE'].includes(
+ this.activityForm.get('type')?.value
+ )
+ ? 'MANUAL'
+ : this.activityForm.get('dataSource')?.value,
+ date: this.activityForm.get('date')?.value,
+ fee: this.activityForm.get('fee')?.value,
+ quantity: this.activityForm.get('quantity')?.value,
symbol:
(['FEE', 'INTEREST', 'LIABILITY', 'VALUABLE'].includes(
- this.activityForm.get('type').value
+ this.activityForm.get('type')?.value
)
? undefined
: this.activityForm.get('searchSymbol')?.value?.symbol) ??
this.activityForm.get('name')?.value,
- tags: this.activityForm.get('tags').value?.map(({ id }) => {
+ tags: this.activityForm.get('tags')?.value?.map(({ id }) => {
return id;
}),
type:
- this.activityForm.get('type').value === 'VALUABLE'
+ this.activityForm.get('type')?.value === 'VALUABLE'
? 'BUY'
- : this.activityForm.get('type').value,
- unitPrice: this.activityForm.get('unitPrice').value
+ : this.activityForm.get('type')?.value,
+ unitPrice: this.activityForm.get('unitPrice')?.value
};
try {
if (this.mode === 'create') {
activity.updateAccountBalance = this.activityForm.get(
'updateAccountBalance'
- ).value;
+ )?.value;
await validateObjectForForm({
classDto: CreateOrderDto,
@@ -569,19 +549,14 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy {
}
}
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
-
private updateAssetProfile() {
this.isLoading = true;
this.changeDetectorRef.markForCheck();
this.dataService
.fetchSymbolItem({
- dataSource: this.activityForm.get('searchSymbol').value.dataSource,
- symbol: this.activityForm.get('searchSymbol').value.symbol
+ dataSource: this.activityForm.get('searchSymbol')?.value.dataSource,
+ symbol: this.activityForm.get('searchSymbol')?.value.symbol
})
.pipe(
catchError(() => {
@@ -593,13 +568,13 @@ export class GfCreateOrUpdateActivityDialogComponent implements OnDestroy {
return EMPTY;
}),
- takeUntil(this.unsubscribeSubject)
+ takeUntilDestroyed(this.destroyRef)
)
.subscribe(({ currency, dataSource, marketPrice }) => {
if (this.mode === 'create') {
- this.activityForm.get('currency').setValue(currency);
- this.activityForm.get('currencyOfUnitPrice').setValue(currency);
- this.activityForm.get('dataSource').setValue(dataSource);
+ this.activityForm.get('currency')?.setValue(currency);
+ this.activityForm.get('currencyOfUnitPrice')?.setValue(currency);
+ this.activityForm.get('dataSource')?.setValue(dataSource);
}
this.currencyOfAssetProfile = currency;
diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
index 42fbd0ebf..038da44cb 100644
--- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
+++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
@@ -15,7 +15,7 @@
Type
{{
- typesTranslationMap[activityForm.get('type').value]
+ typesTranslationMap[activityForm.get('type')?.value]
}}
Account
- @if (
- !activityForm.get('accountId').hasValidator(Validators.required) ||
- (!activityForm.get('accountId').value && mode === 'update')
- ) {
-
- }
+
+
@for (account of data.accounts; track account) {
@@ -117,7 +113,7 @@
[ngClass]="{
'd-none': !activityForm
.get('searchSymbol')
- .hasValidator(Validators.required)
+ ?.hasValidator(Validators.required)
}"
>
@@ -132,7 +128,7 @@
@@ -232,7 +228,7 @@
@if (
currencyOfAssetProfile ===
- activityForm.get('currencyOfUnitPrice').value &&
+ activityForm.get('currencyOfUnitPrice')?.value &&
currentMarketPrice &&
['BUY', 'SELL'].includes(data.activity.type) &&
isToday(activityForm.get('date')?.value)
@@ -266,7 +262,7 @@
matTextSuffix
[ngClass]="{ 'd-none': !activityForm.get('currency')?.value }"
>
- {{ activityForm.get('currencyOfUnitPrice').value }}
+ {{ activityForm.get('currencyOfUnitPrice')?.value }}
diff --git a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/interfaces/interfaces.ts b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/interfaces/interfaces.ts
index 5206aacf9..322bcc076 100644
--- a/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/interfaces/interfaces.ts
+++ b/apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/interfaces/interfaces.ts
@@ -4,6 +4,8 @@ import { Account } from '@prisma/client';
export interface CreateOrUpdateActivityDialogParams {
accounts: Account[];
- activity: Activity;
+ activity: Omit & {
+ SymbolProfile: Activity['SymbolProfile'] | null;
+ };
user: User;
}
diff --git a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
index 1a84e9f31..00f0508fe 100644
--- a/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
+++ b/apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
@@ -21,9 +21,10 @@ import {
ChangeDetectionStrategy,
ChangeDetectorRef,
Component,
- Inject,
- OnDestroy
+ DestroyRef,
+ Inject
} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import {
FormBuilder,
FormGroup,
@@ -52,7 +53,6 @@ import { cloudUploadOutline, warningOutline } from 'ionicons/icons';
import { isArray, sortBy } from 'lodash';
import ms from 'ms';
import { DeviceDetectorService } from 'ngx-device-detector';
-import { Subject, takeUntil } from 'rxjs';
import { ImportStep } from './enums/import-step';
import { ImportActivitiesDialogParams } from './interfaces/interfaces';
@@ -81,7 +81,7 @@ import { ImportActivitiesDialogParams } from './interfaces/interfaces';
styleUrls: ['./import-activities-dialog.scss'],
templateUrl: 'import-activities-dialog.html'
})
-export class GfImportActivitiesDialogComponent implements OnDestroy {
+export class GfImportActivitiesDialogComponent {
public accounts: CreateAccountWithBalancesDto[] = [];
public activities: Activity[] = [];
public assetProfileForm: FormGroup;
@@ -104,12 +104,11 @@ export class GfImportActivitiesDialogComponent implements OnDestroy {
public tags: CreateTagDto[] = [];
public totalItems: number;
- private unsubscribeSubject = new Subject();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
@Inject(MAT_DIALOG_DATA) public data: ImportActivitiesDialogParams,
private dataService: DataService,
+ private destroyRef: DestroyRef,
private deviceService: DeviceDetectorService,
private formBuilder: FormBuilder,
public dialogRef: MatDialogRef,
@@ -152,7 +151,7 @@ export class GfImportActivitiesDialogComponent implements OnDestroy {
],
range: 'max'
})
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ holdings }) => {
this.holdings = sortBy(holdings, ({ name }) => {
return name.toLowerCase();
@@ -237,7 +236,7 @@ export class GfImportActivitiesDialogComponent implements OnDestroy {
dataSource,
symbol
})
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ activities }) => {
this.activities = activities;
this.dataSource = new MatTableDataSource(activities.reverse());
@@ -284,11 +283,6 @@ export class GfImportActivitiesDialogComponent implements OnDestroy {
});
}
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
-
private async handleFile({
file,
stepper
diff --git a/apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts b/apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts
index 70fa09eb1..b0282c937 100644
--- a/apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts
+++ b/apps/client/src/app/pages/portfolio/allocations/allocations-page.component.ts
@@ -22,7 +22,13 @@ import { GfValueComponent } from '@ghostfolio/ui/value';
import { GfWorldMapChartComponent } from '@ghostfolio/ui/world-map-chart';
import { NgClass } from '@angular/common';
-import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';
+import {
+ ChangeDetectorRef,
+ Component,
+ DestroyRef,
+ OnInit
+} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { MatCardModule } from '@angular/material/card';
import { MatDialog } from '@angular/material/dialog';
import { MatProgressBarModule } from '@angular/material/progress-bar';
@@ -36,8 +42,6 @@ import {
} from '@prisma/client';
import { isNumber } from 'lodash';
import { DeviceDetectorService } from 'ngx-device-detector';
-import { Subject } from 'rxjs';
-import { takeUntil } from 'rxjs/operators';
@Component({
imports: [
@@ -54,7 +58,7 @@ import { takeUntil } from 'rxjs/operators';
styleUrls: ['./allocations-page.scss'],
templateUrl: './allocations-page.html'
})
-export class GfAllocationsPageComponent implements OnDestroy, OnInit {
+export class GfAllocationsPageComponent implements OnInit {
public accounts: {
[id: string]: Pick & {
id: string;
@@ -119,11 +123,10 @@ export class GfAllocationsPageComponent implements OnDestroy, OnInit {
public user: User;
public worldMapChartFormat: string;
- private unsubscribeSubject = new Subject();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
private dataService: DataService,
+ private destroyRef: DestroyRef,
private deviceService: DeviceDetectorService,
private dialog: MatDialog,
private impersonationStorageService: ImpersonationStorageService,
@@ -132,7 +135,7 @@ export class GfAllocationsPageComponent implements OnDestroy, OnInit {
private userService: UserService
) {
this.route.queryParams
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((params) => {
if (params['accountId'] && params['accountDetailDialog']) {
this.openAccountDetailDialog(params['accountId']);
@@ -145,28 +148,27 @@ export class GfAllocationsPageComponent implements OnDestroy, OnInit {
this.impersonationStorageService
.onChangeHasImpersonation()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((impersonationId) => {
this.hasImpersonationId = !!impersonationId;
});
this.userService.stateChanged
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((state) => {
if (state?.user) {
this.user = state.user;
- this.worldMapChartFormat =
- this.hasImpersonationId || this.user.settings.isRestrictedView
- ? `{0}%`
- : `{0} ${this.user?.settings?.baseCurrency}`;
+ this.worldMapChartFormat = this.showValuesInPercentage()
+ ? `{0}%`
+ : `{0} ${this.user?.settings?.baseCurrency}`;
this.isLoading = true;
this.initialize();
this.fetchPortfolioDetails()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((portfolioDetails) => {
this.initialize();
@@ -202,11 +204,6 @@ export class GfAllocationsPageComponent implements OnDestroy, OnInit {
}
}
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
-
private extractEtfProvider({
assetSubClass,
name
@@ -312,7 +309,7 @@ export class GfAllocationsPageComponent implements OnDestroy, OnInit {
] of Object.entries(this.portfolioDetails.accounts)) {
let value = 0;
- if (this.hasImpersonationId) {
+ if (this.showValuesInPercentage()) {
value = valueInPercentage;
} else {
value = valueInBaseCurrency;
@@ -330,7 +327,7 @@ export class GfAllocationsPageComponent implements OnDestroy, OnInit {
)) {
let value = 0;
- if (this.hasImpersonationId) {
+ if (this.showValuesInPercentage()) {
value = position.allocationInPercentage;
} else {
value = position.valueInBaseCurrency;
@@ -407,17 +404,22 @@ export class GfAllocationsPageComponent implements OnDestroy, OnInit {
}
if (position.holdings.length > 0) {
- for (const holding of position.holdings) {
- const { allocationInPercentage, name, valueInBaseCurrency } =
- holding;
-
- if (this.topHoldingsMap[name]?.value) {
- this.topHoldingsMap[name].value += isNumber(valueInBaseCurrency)
+ for (const {
+ allocationInPercentage,
+ name,
+ valueInBaseCurrency
+ } of position.holdings) {
+ const normalizedAssetName = this.normalizeAssetName(name);
+
+ if (this.topHoldingsMap[normalizedAssetName]?.value) {
+ this.topHoldingsMap[normalizedAssetName].value += isNumber(
+ valueInBaseCurrency
+ )
? valueInBaseCurrency
: allocationInPercentage *
this.portfolioDetails.holdings[symbol].valueInPercentage;
} else {
- this.topHoldingsMap[name] = {
+ this.topHoldingsMap[normalizedAssetName] = {
name,
value: isNumber(valueInBaseCurrency)
? valueInBaseCurrency
@@ -488,7 +490,7 @@ export class GfAllocationsPageComponent implements OnDestroy, OnInit {
] of Object.entries(this.portfolioDetails.platforms)) {
let value = 0;
- if (this.hasImpersonationId) {
+ if (this.showValuesInPercentage()) {
value = valueInPercentage;
} else {
value = valueInBaseCurrency;
@@ -503,7 +505,7 @@ export class GfAllocationsPageComponent implements OnDestroy, OnInit {
this.topHoldings = Object.values(this.topHoldingsMap)
.map(({ name, value }) => {
- if (this.hasImpersonationId || this.user.settings.isRestrictedView) {
+ if (this.showValuesInPercentage()) {
return {
name,
allocationInPercentage: value,
@@ -520,7 +522,10 @@ export class GfAllocationsPageComponent implements OnDestroy, OnInit {
if (holding.holdings.length > 0) {
const currentParentHolding = holding.holdings.find(
(parentHolding) => {
- return parentHolding.name === name;
+ return (
+ this.normalizeAssetName(parentHolding.name) ===
+ this.normalizeAssetName(name)
+ );
}
);
@@ -557,6 +562,14 @@ export class GfAllocationsPageComponent implements OnDestroy, OnInit {
}
}
+ private normalizeAssetName(name: string) {
+ if (!name) {
+ return '';
+ }
+
+ return name.trim().toLowerCase();
+ }
+
private openAccountDetailDialog(aAccountId: string) {
const dialogRef = this.dialog.open<
GfAccountDetailDialogComponent,
@@ -569,7 +582,7 @@ export class GfAllocationsPageComponent implements OnDestroy, OnInit {
hasImpersonationId: this.hasImpersonationId,
hasPermissionToCreateActivity:
!this.hasImpersonationId &&
- hasPermission(this.user?.permissions, permissions.createOrder) &&
+ hasPermission(this.user?.permissions, permissions.createActivity) &&
!this.user?.settings?.isRestrictedView
},
height: this.deviceType === 'mobile' ? '98vh' : '80vh',
@@ -578,9 +591,13 @@ export class GfAllocationsPageComponent implements OnDestroy, OnInit {
dialogRef
.afterClosed()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
this.router.navigate(['.'], { relativeTo: this.route });
});
}
+
+ public showValuesInPercentage() {
+ return this.hasImpersonationId || this.user?.settings?.isRestrictedView;
+ }
}
diff --git a/apps/client/src/app/pages/portfolio/allocations/allocations-page.html b/apps/client/src/app/pages/portfolio/allocations/allocations-page.html
index 8d5503840..33431ce5d 100644
--- a/apps/client/src/app/pages/portfolio/allocations/allocations-page.html
+++ b/apps/client/src/app/pages/portfolio/allocations/allocations-page.html
@@ -25,11 +25,9 @@
@@ -49,7 +47,7 @@
[baseCurrency]="user?.settings?.baseCurrency"
[colorScheme]="user?.settings?.colorScheme"
[data]="platforms"
- [isInPercent]="hasImpersonationId || user.settings.isRestrictedView"
+ [isInPercentage]="showValuesInPercentage()"
[keys]="['id']"
[locale]="user?.settings?.locale"
/>
@@ -71,7 +69,7 @@
[baseCurrency]="user?.settings?.baseCurrency"
[colorScheme]="user?.settings?.colorScheme"
[data]="holdings"
- [isInPercent]="hasImpersonationId || user.settings.isRestrictedView"
+ [isInPercentage]="showValuesInPercentage()"
[keys]="['currency']"
[locale]="user?.settings?.locale"
/>
@@ -93,7 +91,7 @@
[baseCurrency]="user?.settings?.baseCurrency"
[colorScheme]="user?.settings?.colorScheme"
[data]="holdings"
- [isInPercent]="hasImpersonationId || user.settings.isRestrictedView"
+ [isInPercentage]="showValuesInPercentage()"
[keys]="['assetClassLabel', 'assetSubClassLabel']"
[locale]="user?.settings?.locale"
/>
@@ -114,7 +112,7 @@
[baseCurrency]="user?.settings?.baseCurrency"
[colorScheme]="user?.settings?.colorScheme"
[data]="symbols"
- [isInPercent]="hasImpersonationId || user.settings.isRestrictedView"
+ [isInPercentage]="showValuesInPercentage()"
[keys]="['symbol']"
[locale]="user?.settings?.locale"
[showLabels]="deviceType !== 'mobile'"
@@ -138,7 +136,7 @@
[baseCurrency]="user?.settings?.baseCurrency"
[colorScheme]="user?.settings?.colorScheme"
[data]="sectors"
- [isInPercent]="hasImpersonationId || user.settings.isRestrictedView"
+ [isInPercentage]="showValuesInPercentage()"
[keys]="['name']"
[locale]="user?.settings?.locale"
[maxItems]="10"
@@ -161,7 +159,7 @@
[baseCurrency]="user?.settings?.baseCurrency"
[colorScheme]="user?.settings?.colorScheme"
[data]="continents"
- [isInPercent]="hasImpersonationId || user.settings.isRestrictedView"
+ [isInPercentage]="showValuesInPercentage()"
[keys]="['name']"
[locale]="user?.settings?.locale"
/>
@@ -183,7 +181,7 @@
[baseCurrency]="user?.settings?.baseCurrency"
[colorScheme]="user?.settings?.colorScheme"
[data]="marketsAdvanced"
- [isInPercent]="hasImpersonationId || user.settings.isRestrictedView"
+ [isInPercentage]="showValuesInPercentage()"
[locale]="user?.settings?.locale"
/>
@@ -206,9 +204,7 @@
@@ -272,7 +268,7 @@
[baseCurrency]="user?.settings?.baseCurrency"
[colorScheme]="user?.settings?.colorScheme"
[data]="countries"
- [isInPercent]="hasImpersonationId || user.settings.isRestrictedView"
+ [isInPercentage]="showValuesInPercentage()"
[keys]="['name']"
[locale]="user?.settings?.locale"
[maxItems]="10"
@@ -291,7 +287,7 @@
[baseCurrency]="user?.settings?.baseCurrency"
[colorScheme]="user?.settings?.colorScheme"
[data]="accounts"
- [isInPercent]="hasImpersonationId || user.settings.isRestrictedView"
+ [isInPercentage]="showValuesInPercentage()"
[keys]="['id']"
[locale]="user?.settings?.locale"
(proportionChartClicked)="onAccountChartClicked($event)"
@@ -314,7 +310,7 @@
[baseCurrency]="user?.settings?.baseCurrency"
[colorScheme]="user?.settings?.colorScheme"
[data]="holdings"
- [isInPercent]="hasImpersonationId || user.settings.isRestrictedView"
+ [isInPercentage]="showValuesInPercentage()"
[keys]="['etfProvider']"
[locale]="user?.settings?.locale"
/>
diff --git a/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts b/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
index 5cd24777c..47845ea6f 100644
--- a/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
+++ b/apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
@@ -24,10 +24,11 @@ import { Clipboard } from '@angular/cdk/clipboard';
import {
ChangeDetectorRef,
Component,
- OnDestroy,
+ DestroyRef,
OnInit,
ViewChild
} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { MatButtonModule } from '@angular/material/button';
import { MatCardModule } from '@angular/material/card';
import { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';
@@ -42,8 +43,6 @@ import { isNumber, sortBy } from 'lodash';
import ms from 'ms';
import { DeviceDetectorService } from 'ngx-device-detector';
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
-import { Subject } from 'rxjs';
-import { takeUntil } from 'rxjs/operators';
@Component({
imports: [
@@ -64,7 +63,7 @@ import { takeUntil } from 'rxjs/operators';
styleUrls: ['./analysis-page.scss'],
templateUrl: './analysis-page.html'
})
-export class GfAnalysisPageComponent implements OnDestroy, OnInit {
+export class GfAnalysisPageComponent implements OnInit {
@ViewChild(MatMenuTrigger) actionsMenuButton!: MatMenuTrigger;
public benchmark: Partial;
@@ -102,12 +101,11 @@ export class GfAnalysisPageComponent implements OnDestroy, OnInit {
public unitLongestStreak: string;
public user: User;
- private unsubscribeSubject = new Subject();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
private clipboard: Clipboard,
private dataService: DataService,
+ private destroyRef: DestroyRef,
private deviceService: DeviceDetectorService,
private impersonationStorageService: ImpersonationStorageService,
private snackBar: MatSnackBar,
@@ -135,13 +133,13 @@ export class GfAnalysisPageComponent implements OnDestroy, OnInit {
this.impersonationStorageService
.onChangeHasImpersonation()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((impersonationId) => {
this.hasImpersonationId = !!impersonationId;
});
this.userService.stateChanged
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((state) => {
if (state?.user) {
this.user = state.user;
@@ -163,11 +161,11 @@ export class GfAnalysisPageComponent implements OnDestroy, OnInit {
public onChangeBenchmark(symbolProfileId: string) {
this.dataService
.putUserSetting({ benchmark: symbolProfileId })
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
this.userService
.get(true)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((user) => {
this.user = user;
@@ -193,7 +191,7 @@ export class GfAnalysisPageComponent implements OnDestroy, OnInit {
mode,
filters: this.userService.getFilters()
})
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ prompt }) => {
this.clipboard.copy(prompt);
@@ -207,7 +205,7 @@ export class GfAnalysisPageComponent implements OnDestroy, OnInit {
snackBarRef
.onAction()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
window.open('https://duck.ai', '_blank');
});
@@ -222,11 +220,6 @@ export class GfAnalysisPageComponent implements OnDestroy, OnInit {
});
}
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
-
private fetchDividendsAndInvestments() {
this.isLoadingDividendTimelineChart = true;
this.isLoadingInvestmentTimelineChart = true;
@@ -237,7 +230,7 @@ export class GfAnalysisPageComponent implements OnDestroy, OnInit {
groupBy: this.mode,
range: this.user?.settings?.dateRange
})
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ dividends }) => {
this.dividendsByGroup = dividends;
@@ -252,7 +245,7 @@ export class GfAnalysisPageComponent implements OnDestroy, OnInit {
groupBy: this.mode,
range: this.user?.settings?.dateRange
})
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ investments, streaks }) => {
this.investmentsByGroup = investments;
this.streaks = streaks;
@@ -287,7 +280,7 @@ export class GfAnalysisPageComponent implements OnDestroy, OnInit {
filters: this.userService.getFilters(),
range: this.user?.settings?.dateRange
})
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ chart, firstOrderDate, performance }) => {
this.firstOrderDate = firstOrderDate ?? new Date();
@@ -346,7 +339,7 @@ export class GfAnalysisPageComponent implements OnDestroy, OnInit {
filters: this.userService.getFilters(),
range: this.user?.settings?.dateRange
})
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ holdings }) => {
const holdingsSorted = sortBy(
holdings.filter(({ netPerformancePercentWithCurrencyEffect }) => {
@@ -397,7 +390,7 @@ export class GfAnalysisPageComponent implements OnDestroy, OnInit {
range: this.user?.settings?.dateRange,
startDate: this.firstOrderDate
})
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ marketData }) => {
this.benchmarkDataItems = marketData.map(({ date, value }) => {
return {
diff --git a/apps/client/src/app/pages/portfolio/analysis/analysis-page.html b/apps/client/src/app/pages/portfolio/analysis/analysis-page.html
index 517ad7101..c4e8f610b 100644
--- a/apps/client/src/app/pages/portfolio/analysis/analysis-page.html
+++ b/apps/client/src/app/pages/portfolio/analysis/analysis-page.html
@@ -417,7 +417,9 @@
[benchmarkDataLabel]="portfolioEvolutionDataLabel"
[currency]="user?.settings?.baseCurrency"
[historicalDataItems]="performanceDataItems"
- [isInPercent]="hasImpersonationId || user.settings.isRestrictedView"
+ [isInPercentage]="
+ hasImpersonationId || user.settings.isRestrictedView
+ "
[isLoading]="isLoadingInvestmentChart"
[locale]="user?.settings?.locale"
/>
@@ -473,7 +475,9 @@
[benchmarkDataLabel]="investmentTimelineDataLabel"
[currency]="user?.settings?.baseCurrency"
[groupBy]="mode"
- [isInPercent]="hasImpersonationId || user.settings.isRestrictedView"
+ [isInPercentage]="
+ hasImpersonationId || user.settings.isRestrictedView
+ "
[isLoading]="isLoadingInvestmentTimelineChart"
[locale]="user?.settings?.locale"
[savingsRate]="savingsRate"
@@ -508,7 +512,9 @@
[benchmarkDataLabel]="dividendTimelineDataLabel"
[currency]="user?.settings?.baseCurrency"
[groupBy]="mode"
- [isInPercent]="hasImpersonationId || user.settings.isRestrictedView"
+ [isInPercentage]="
+ hasImpersonationId || user.settings.isRestrictedView
+ "
[isLoading]="isLoadingDividendTimelineChart"
[locale]="user?.settings?.locale"
/>
diff --git a/apps/client/src/app/pages/portfolio/fire/fire-page.component.ts b/apps/client/src/app/pages/portfolio/fire/fire-page.component.ts
index 27db6c76e..2f7568982 100644
--- a/apps/client/src/app/pages/portfolio/fire/fire-page.component.ts
+++ b/apps/client/src/app/pages/portfolio/fire/fire-page.component.ts
@@ -12,14 +12,18 @@ import { DataService } from '@ghostfolio/ui/services';
import { GfValueComponent } from '@ghostfolio/ui/value';
import { CommonModule, NgStyle } from '@angular/common';
-import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';
+import {
+ ChangeDetectorRef,
+ Component,
+ DestroyRef,
+ OnInit
+} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { FormControl } from '@angular/forms';
import { Big } from 'big.js';
import { DeviceDetectorService } from 'ngx-device-detector';
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
-import { Subject } from 'rxjs';
-import { takeUntil } from 'rxjs/operators';
@Component({
imports: [
@@ -36,7 +40,7 @@ import { takeUntil } from 'rxjs/operators';
styleUrls: ['./fire-page.scss'],
templateUrl: './fire-page.html'
})
-export class GfFirePageComponent implements OnDestroy, OnInit {
+export class GfFirePageComponent implements OnInit {
public deviceType: string;
public fireWealth: FireWealth;
public hasImpersonationId: boolean;
@@ -52,11 +56,10 @@ export class GfFirePageComponent implements OnDestroy, OnInit {
public withdrawalRatePerYear: Big;
public withdrawalRatePerYearProjected: Big;
- private unsubscribeSubject = new Subject();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
private dataService: DataService,
+ private destroyRef: DestroyRef,
private deviceService: DeviceDetectorService,
private impersonationStorageService: ImpersonationStorageService,
private userService: UserService
@@ -68,7 +71,7 @@ export class GfFirePageComponent implements OnDestroy, OnInit {
this.dataService
.fetchPortfolioDetails()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ summary }) => {
this.fireWealth = {
today: {
@@ -92,19 +95,19 @@ export class GfFirePageComponent implements OnDestroy, OnInit {
this.impersonationStorageService
.onChangeHasImpersonation()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((impersonationId) => {
this.hasImpersonationId = !!impersonationId;
});
this.safeWithdrawalRateControl.valueChanges
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((value) => {
this.onSafeWithdrawalRateChange(Number(value));
});
this.userService.stateChanged
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((state) => {
if (state?.user) {
this.user = state.user;
@@ -132,11 +135,11 @@ export class GfFirePageComponent implements OnDestroy, OnInit {
public onAnnualInterestRateChange(annualInterestRate: number) {
this.dataService
.putUserSetting({ annualInterestRate })
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
this.userService
.get(true)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((user) => {
this.user = user;
@@ -163,11 +166,11 @@ export class GfFirePageComponent implements OnDestroy, OnInit {
retirementDate: retirementDate.toISOString(),
projectedTotalAmount: null
})
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
this.userService
.get(true)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((user) => {
this.user = user;
@@ -179,11 +182,11 @@ export class GfFirePageComponent implements OnDestroy, OnInit {
public onSafeWithdrawalRateChange(safeWithdrawalRate: number) {
this.dataService
.putUserSetting({ safeWithdrawalRate })
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
this.userService
.get(true)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((user) => {
this.user = user;
@@ -198,11 +201,11 @@ export class GfFirePageComponent implements OnDestroy, OnInit {
public onSavingsRateChange(savingsRate: number) {
this.dataService
.putUserSetting({ savingsRate })
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
this.userService
.get(true)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((user) => {
this.user = user;
@@ -217,11 +220,11 @@ export class GfFirePageComponent implements OnDestroy, OnInit {
projectedTotalAmount,
retirementDate: null
})
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
this.userService
.get(true)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((user) => {
this.user = user;
@@ -230,11 +233,6 @@ export class GfFirePageComponent implements OnDestroy, OnInit {
});
}
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
-
private calculateWithdrawalRates() {
if (this.fireWealth && this.user?.settings?.safeWithdrawalRate) {
this.withdrawalRatePerYear = new Big(
diff --git a/apps/client/src/app/pages/portfolio/portfolio-page.component.ts b/apps/client/src/app/pages/portfolio/portfolio-page.component.ts
index 387e3fd0f..eb4935127 100644
--- a/apps/client/src/app/pages/portfolio/portfolio-page.component.ts
+++ b/apps/client/src/app/pages/portfolio/portfolio-page.component.ts
@@ -2,7 +2,13 @@ import { UserService } from '@ghostfolio/client/services/user/user.service';
import { TabConfiguration, User } from '@ghostfolio/common/interfaces';
import { internalRoutes } from '@ghostfolio/common/routes/routes';
-import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';
+import {
+ ChangeDetectorRef,
+ Component,
+ DestroyRef,
+ OnInit
+} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { MatTabsModule } from '@angular/material/tabs';
import { RouterModule } from '@angular/router';
import { addIcons } from 'ionicons';
@@ -14,8 +20,6 @@ import {
swapVerticalOutline
} from 'ionicons/icons';
import { DeviceDetectorService } from 'ngx-device-detector';
-import { Subject } from 'rxjs';
-import { takeUntil } from 'rxjs/operators';
@Component({
host: { class: 'page has-tabs' },
@@ -24,20 +28,19 @@ import { takeUntil } from 'rxjs/operators';
styleUrls: ['./portfolio-page.scss'],
templateUrl: './portfolio-page.html'
})
-export class PortfolioPageComponent implements OnDestroy, OnInit {
+export class PortfolioPageComponent implements OnInit {
public deviceType: string;
public tabs: TabConfiguration[] = [];
public user: User;
- private unsubscribeSubject = new Subject();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
+ private destroyRef: DestroyRef,
private deviceService: DeviceDetectorService,
private userService: UserService
) {
this.userService.stateChanged
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((state) => {
if (state?.user) {
this.tabs = [
@@ -87,9 +90,4 @@ export class PortfolioPageComponent implements OnDestroy, OnInit {
public ngOnInit() {
this.deviceType = this.deviceService.getDeviceInfo().deviceType;
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.ts b/apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.ts
index 70b748b10..e97fd4876 100644
--- a/apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.ts
+++ b/apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.ts
@@ -12,7 +12,8 @@ import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator';
import { DataService } from '@ghostfolio/ui/services';
import { NgClass } from '@angular/common';
-import { ChangeDetectorRef, Component } from '@angular/core';
+import { ChangeDetectorRef, Component, DestroyRef } from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { IonIcon } from '@ionic/angular/standalone';
import { addIcons } from 'ionicons';
import {
@@ -21,7 +22,6 @@ import {
warningOutline
} from 'ionicons/icons';
import { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';
-import { Subject, takeUntil } from 'rxjs';
@Component({
imports: [
@@ -48,11 +48,10 @@ export class GfXRayPageComponent {
public statistics: PortfolioReportResponse['xRay']['statistics'];
public user: User;
- private unsubscribeSubject = new Subject();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
private dataService: DataService,
+ private destroyRef: DestroyRef,
private impersonationStorageService: ImpersonationStorageService,
private userService: UserService
) {
@@ -62,13 +61,13 @@ export class GfXRayPageComponent {
public ngOnInit() {
this.impersonationStorageService
.onChangeHasImpersonation()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((impersonationId) => {
this.hasImpersonationId = !!impersonationId;
});
this.userService.stateChanged
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((state) => {
if (state?.user) {
this.user = state.user;
@@ -91,28 +90,23 @@ export class GfXRayPageComponent {
public onRulesUpdated(event: UpdateUserSettingDto) {
this.dataService
.putUserSetting(event)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
this.userService
.get(true)
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe();
this.initializePortfolioReport();
});
}
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
-
private initializePortfolioReport() {
this.isLoading = true;
this.dataService
.fetchPortfolioReport()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ xRay: { categories, statistics } }) => {
this.categories = categories;
this.inactiveRules = this.mergeInactiveRules(categories);
diff --git a/apps/client/src/app/pages/pricing/pricing-page.component.ts b/apps/client/src/app/pages/pricing/pricing-page.component.ts
index 831f0809c..08c561fc8 100644
--- a/apps/client/src/app/pages/pricing/pricing-page.component.ts
+++ b/apps/client/src/app/pages/pricing/pricing-page.component.ts
@@ -12,9 +12,10 @@ import {
ChangeDetectorRef,
Component,
CUSTOM_ELEMENTS_SCHEMA,
- OnDestroy,
+ DestroyRef,
OnInit
} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { MatButtonModule } from '@angular/material/button';
import { MatCardModule } from '@angular/material/card';
import { MatTooltipModule } from '@angular/material/tooltip';
@@ -27,8 +28,8 @@ import {
informationCircleOutline
} from 'ionicons/icons';
import { StringValue } from 'ms';
-import { EMPTY, Subject } from 'rxjs';
-import { catchError, takeUntil } from 'rxjs/operators';
+import { EMPTY } from 'rxjs';
+import { catchError } from 'rxjs/operators';
@Component({
host: { class: 'page' },
@@ -46,7 +47,7 @@ import { catchError, takeUntil } from 'rxjs/operators';
styleUrls: ['./pricing-page.scss'],
templateUrl: './pricing-page.html'
})
-export class GfPricingPageComponent implements OnDestroy, OnInit {
+export class GfPricingPageComponent implements OnInit {
public baseCurrency: string;
public coupon: number;
public couponId: string;
@@ -92,11 +93,10 @@ export class GfPricingPageComponent implements OnDestroy, OnInit {
public routerLinkRegister = publicRoutes.register.routerLink;
public user: User;
- private unsubscribeSubject = new Subject();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
private dataService: DataService,
+ private destroyRef: DestroyRef,
private notificationService: NotificationService,
private userService: UserService
) {
@@ -124,7 +124,7 @@ export class GfPricingPageComponent implements OnDestroy, OnInit {
this.price = subscriptionOffer?.price;
this.userService.stateChanged
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((state) => {
if (state?.user) {
this.user = state.user;
@@ -161,15 +161,10 @@ export class GfPricingPageComponent implements OnDestroy, OnInit {
return EMPTY;
}),
- takeUntil(this.unsubscribeSubject)
+ takeUntilDestroyed(this.destroyRef)
)
.subscribe(({ sessionUrl }) => {
window.location.href = sessionUrl;
});
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/pages/public/public-page.component.ts b/apps/client/src/app/pages/public/public-page.component.ts
index fe4b295db..9ccbbf52e 100644
--- a/apps/client/src/app/pages/public/public-page.component.ts
+++ b/apps/client/src/app/pages/public/public-page.component.ts
@@ -19,8 +19,10 @@ import {
ChangeDetectorRef,
Component,
CUSTOM_ELEMENTS_SCHEMA,
+ DestroyRef,
OnInit
} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { MatButtonModule } from '@angular/material/button';
import { MatCardModule } from '@angular/material/card';
import { MatTableDataSource } from '@angular/material/table';
@@ -29,8 +31,8 @@ import { AssetClass } from '@prisma/client';
import { StatusCodes } from 'http-status-codes';
import { isNumber } from 'lodash';
import { DeviceDetectorService } from 'ngx-device-detector';
-import { EMPTY, Subject } from 'rxjs';
-import { catchError, takeUntil } from 'rxjs/operators';
+import { EMPTY } from 'rxjs';
+import { catchError } from 'rxjs/operators';
@Component({
host: { class: 'page' },
@@ -83,12 +85,12 @@ export class GfPublicPageComponent implements OnInit {
public UNKNOWN_KEY = UNKNOWN_KEY;
private accessId: string;
- private unsubscribeSubject = new Subject();
public constructor(
private activatedRoute: ActivatedRoute,
private changeDetectorRef: ChangeDetectorRef,
private dataService: DataService,
+ private destroyRef: DestroyRef,
private deviceService: DeviceDetectorService,
private router: Router
) {
@@ -110,7 +112,7 @@ export class GfPublicPageComponent implements OnInit {
this.dataService
.fetchPublicPortfolio(this.accessId)
.pipe(
- takeUntil(this.unsubscribeSubject),
+ takeUntilDestroyed(this.destroyRef),
catchError((error) => {
if (error.status === StatusCodes.NOT_FOUND) {
console.error(error);
@@ -246,9 +248,4 @@ export class GfPublicPageComponent implements OnInit {
};
}
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/pages/public/public-page.html b/apps/client/src/app/pages/public/public-page.html
index 079566e0d..9e5fd3748 100644
--- a/apps/client/src/app/pages/public/public-page.html
+++ b/apps/client/src/app/pages/public/public-page.html
@@ -73,12 +73,11 @@
@@ -116,7 +115,7 @@
@@ -135,7 +134,7 @@
@@ -155,7 +154,7 @@
diff --git a/apps/client/src/app/pages/register/register-page.component.ts b/apps/client/src/app/pages/register/register-page.component.ts
index 21b26944e..db199143f 100644
--- a/apps/client/src/app/pages/register/register-page.component.ts
+++ b/apps/client/src/app/pages/register/register-page.component.ts
@@ -1,4 +1,5 @@
import { TokenStorageService } from '@ghostfolio/client/services/token-storage.service';
+import { UserService } from '@ghostfolio/client/services/user/user.service';
import { InfoItem, LineChartItem } from '@ghostfolio/common/interfaces';
import { hasPermission, permissions } from '@ghostfolio/common/permissions';
import { GfLogoComponent } from '@ghostfolio/ui/logo';
@@ -7,15 +8,14 @@ import { DataService } from '@ghostfolio/ui/services';
import {
Component,
CUSTOM_ELEMENTS_SCHEMA,
- OnDestroy,
+ DestroyRef,
OnInit
} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { MatButtonModule } from '@angular/material/button';
import { MatDialog } from '@angular/material/dialog';
import { Router, RouterModule } from '@angular/router';
import { DeviceDetectorService } from 'ngx-device-detector';
-import { Subject } from 'rxjs';
-import { takeUntil } from 'rxjs/operators';
import { UserAccountRegistrationDialogParams } from './user-account-registration-dialog/interfaces/interfaces';
import { GfUserAccountRegistrationDialogComponent } from './user-account-registration-dialog/user-account-registration-dialog.component';
@@ -28,7 +28,7 @@ import { GfUserAccountRegistrationDialogComponent } from './user-account-registr
styleUrls: ['./register-page.scss'],
templateUrl: './register-page.html'
})
-export class GfRegisterPageComponent implements OnDestroy, OnInit {
+export class GfRegisterPageComponent implements OnInit {
public deviceType: string;
public hasPermissionForAuthGoogle: boolean;
public hasPermissionForAuthToken: boolean;
@@ -37,18 +37,18 @@ export class GfRegisterPageComponent implements OnDestroy, OnInit {
public historicalDataItems: LineChartItem[];
public info: InfoItem;
- private unsubscribeSubject = new Subject
();
-
public constructor(
private dataService: DataService,
+ private destroyRef: DestroyRef,
private deviceService: DeviceDetectorService,
private dialog: MatDialog,
private router: Router,
- private tokenStorageService: TokenStorageService
+ private tokenStorageService: TokenStorageService,
+ private userService: UserService
) {
this.info = this.dataService.fetchInfo();
- this.tokenStorageService.signOut();
+ this.userService.signOut();
}
public ngOnInit() {
@@ -93,7 +93,7 @@ export class GfRegisterPageComponent implements OnDestroy, OnInit {
dialogRef
.afterClosed()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((authToken) => {
if (authToken) {
this.tokenStorageService.saveToken(authToken, true);
@@ -102,9 +102,4 @@ export class GfRegisterPageComponent implements OnDestroy, OnInit {
}
});
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.component.ts b/apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.component.ts
index a7707ad3b..cbbe2d29c 100644
--- a/apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.component.ts
+++ b/apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.component.ts
@@ -8,9 +8,11 @@ import {
ChangeDetectorRef,
Component,
CUSTOM_ELEMENTS_SCHEMA,
+ DestroyRef,
Inject,
ViewChild
} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { MatButtonModule } from '@angular/material/button';
import { MatCheckboxModule } from '@angular/material/checkbox';
@@ -26,8 +28,6 @@ import {
checkmarkOutline,
copyOutline
} from 'ionicons/icons';
-import { Subject } from 'rxjs';
-import { takeUntil } from 'rxjs/operators';
import { UserAccountRegistrationDialogParams } from './interfaces/interfaces';
@@ -63,12 +63,11 @@ export class GfUserAccountRegistrationDialogComponent {
public routerLinkAboutTermsOfService =
publicRoutes.about.subRoutes.termsOfService.routerLink;
- private unsubscribeSubject = new Subject();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
@Inject(MAT_DIALOG_DATA) public data: UserAccountRegistrationDialogParams,
- private dataService: DataService
+ private dataService: DataService,
+ private destroyRef: DestroyRef
) {
addIcons({ arrowForwardOutline, checkmarkOutline, copyOutline });
}
@@ -76,7 +75,7 @@ export class GfUserAccountRegistrationDialogComponent {
public createAccount() {
this.dataService
.postUser()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(({ accessToken, authToken, role }) => {
this.accessToken = accessToken;
this.authToken = authToken;
diff --git a/apps/client/src/app/pages/resources/overview/resources-overview.component.html b/apps/client/src/app/pages/resources/overview/resources-overview.component.html
index 3a6f18d40..86a334c79 100644
--- a/apps/client/src/app/pages/resources/overview/resources-overview.component.html
+++ b/apps/client/src/app/pages/resources/overview/resources-overview.component.html
@@ -7,7 +7,9 @@
}
diff --git a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts
index c4cfd184e..bb4ae3889 100644
--- a/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts
+++ b/apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.component.ts
@@ -1,13 +1,12 @@
import { personalFinanceTools } from '@ghostfolio/common/personal-finance-tools';
import { publicRoutes } from '@ghostfolio/common/routes/routes';
-import { Component, OnDestroy } from '@angular/core';
+import { Component } from '@angular/core';
import { MatCardModule } from '@angular/material/card';
import { RouterModule } from '@angular/router';
import { IonIcon } from '@ionic/angular/standalone';
import { addIcons } from 'ionicons';
import { chevronForwardOutline } from 'ionicons/icons';
-import { Subject } from 'rxjs';
@Component({
host: { class: 'page' },
@@ -16,7 +15,7 @@ import { Subject } from 'rxjs';
styleUrls: ['./personal-finance-tools-page.scss'],
templateUrl: './personal-finance-tools-page.html'
})
-export class PersonalFinanceToolsPageComponent implements OnDestroy {
+export class PersonalFinanceToolsPageComponent {
public pathAlternativeTo =
publicRoutes.resources.subRoutes.personalFinanceTools.subRoutes.product
.path + '-';
@@ -28,14 +27,7 @@ export class PersonalFinanceToolsPageComponent implements OnDestroy {
});
public routerLinkAbout = publicRoutes.about.routerLink;
- private unsubscribeSubject = new Subject();
-
public constructor() {
addIcons({ chevronForwardOutline });
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/pages/resources/resources-page.component.ts b/apps/client/src/app/pages/resources/resources-page.component.ts
index 9db996f57..c25ef00d6 100644
--- a/apps/client/src/app/pages/resources/resources-page.component.ts
+++ b/apps/client/src/app/pages/resources/resources-page.component.ts
@@ -13,7 +13,6 @@ import {
readerOutline
} from 'ionicons/icons';
import { DeviceDetectorService } from 'ngx-device-detector';
-import { Subject } from 'rxjs';
@Component({
host: { class: 'page has-tabs' },
@@ -47,8 +46,6 @@ export class ResourcesPageComponent implements OnInit {
}
];
- private unsubscribeSubject = new Subject();
-
public constructor(private deviceService: DeviceDetectorService) {
addIcons({ bookOutline, libraryOutline, newspaperOutline, readerOutline });
}
@@ -56,9 +53,4 @@ export class ResourcesPageComponent implements OnInit {
public ngOnInit() {
this.deviceType = this.deviceService.getDeviceInfo().deviceType;
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/pages/user-account/user-account-page.component.ts b/apps/client/src/app/pages/user-account/user-account-page.component.ts
index 7341660f2..24c150408 100644
--- a/apps/client/src/app/pages/user-account/user-account-page.component.ts
+++ b/apps/client/src/app/pages/user-account/user-account-page.component.ts
@@ -6,16 +6,16 @@ import {
ChangeDetectorRef,
Component,
CUSTOM_ELEMENTS_SCHEMA,
- OnDestroy,
+ DestroyRef,
OnInit
} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { MatTabsModule } from '@angular/material/tabs';
import { RouterModule } from '@angular/router';
import { IonIcon } from '@ionic/angular/standalone';
import { addIcons } from 'ionicons';
import { diamondOutline, keyOutline, settingsOutline } from 'ionicons/icons';
import { DeviceDetectorService } from 'ngx-device-detector';
-import { Subject, takeUntil } from 'rxjs';
@Component({
host: { class: 'page has-tabs' },
@@ -25,20 +25,19 @@ import { Subject, takeUntil } from 'rxjs';
styleUrls: ['./user-account-page.scss'],
templateUrl: './user-account-page.html'
})
-export class GfUserAccountPageComponent implements OnDestroy, OnInit {
+export class GfUserAccountPageComponent implements OnInit {
public deviceType: string;
public tabs: TabConfiguration[] = [];
public user: User;
- private unsubscribeSubject = new Subject();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
+ private destroyRef: DestroyRef,
private deviceService: DeviceDetectorService,
private userService: UserService
) {
this.userService.stateChanged
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((state) => {
if (state?.user) {
this.user = state.user;
@@ -73,9 +72,4 @@ export class GfUserAccountPageComponent implements OnDestroy, OnInit {
public ngOnInit() {
this.deviceType = this.deviceService.getDeviceInfo().deviceType;
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/pages/webauthn/webauthn-page.component.ts b/apps/client/src/app/pages/webauthn/webauthn-page.component.ts
index 74631eeca..8e7e58fd1 100644
--- a/apps/client/src/app/pages/webauthn/webauthn-page.component.ts
+++ b/apps/client/src/app/pages/webauthn/webauthn-page.component.ts
@@ -2,12 +2,16 @@ import { TokenStorageService } from '@ghostfolio/client/services/token-storage.s
import { WebAuthnService } from '@ghostfolio/client/services/web-authn.service';
import { GfLogoComponent } from '@ghostfolio/ui/logo';
-import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';
+import {
+ ChangeDetectorRef,
+ Component,
+ DestroyRef,
+ OnInit
+} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { MatButtonModule } from '@angular/material/button';
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
import { Router } from '@angular/router';
-import { Subject } from 'rxjs';
-import { takeUntil } from 'rxjs/operators';
@Component({
host: { class: 'page' },
@@ -16,13 +20,12 @@ import { takeUntil } from 'rxjs/operators';
styleUrls: ['./webauthn-page.scss'],
templateUrl: './webauthn-page.html'
})
-export class GfWebauthnPageComponent implements OnDestroy, OnInit {
+export class GfWebauthnPageComponent implements OnInit {
public hasError = false;
- private unsubscribeSubject = new Subject();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
+ private destroyRef: DestroyRef,
private router: Router,
private tokenStorageService: TokenStorageService,
private webAuthnService: WebAuthnService
@@ -35,7 +38,7 @@ export class GfWebauthnPageComponent implements OnDestroy, OnInit {
public deregisterDevice() {
this.webAuthnService
.deregister()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
this.router.navigate(['/']);
});
@@ -46,7 +49,7 @@ export class GfWebauthnPageComponent implements OnDestroy, OnInit {
this.webAuthnService
.login()
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(
({ authToken }) => {
this.tokenStorageService.saveToken(authToken, false);
@@ -59,9 +62,4 @@ export class GfWebauthnPageComponent implements OnDestroy, OnInit {
}
);
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/pages/zen/zen-page.component.ts b/apps/client/src/app/pages/zen/zen-page.component.ts
index 280f33c25..633f15885 100644
--- a/apps/client/src/app/pages/zen/zen-page.component.ts
+++ b/apps/client/src/app/pages/zen/zen-page.component.ts
@@ -2,15 +2,19 @@ import { UserService } from '@ghostfolio/client/services/user/user.service';
import { TabConfiguration, User } from '@ghostfolio/common/interfaces';
import { internalRoutes } from '@ghostfolio/common/routes/routes';
-import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';
+import {
+ ChangeDetectorRef,
+ Component,
+ DestroyRef,
+ OnInit
+} from '@angular/core';
+import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { MatTabsModule } from '@angular/material/tabs';
import { RouterModule } from '@angular/router';
import { IonIcon } from '@ionic/angular/standalone';
import { addIcons } from 'ionicons';
import { albumsOutline, analyticsOutline } from 'ionicons/icons';
import { DeviceDetectorService } from 'ngx-device-detector';
-import { Subject } from 'rxjs';
-import { takeUntil } from 'rxjs/operators';
@Component({
host: { class: 'page has-tabs' },
@@ -19,20 +23,19 @@ import { takeUntil } from 'rxjs/operators';
styleUrls: ['./zen-page.scss'],
templateUrl: './zen-page.html'
})
-export class GfZenPageComponent implements OnDestroy, OnInit {
+export class GfZenPageComponent implements OnInit {
public deviceType: string;
public tabs: TabConfiguration[] = [];
public user: User;
- private unsubscribeSubject = new Subject();
-
public constructor(
private changeDetectorRef: ChangeDetectorRef,
+ private destroyRef: DestroyRef,
private deviceService: DeviceDetectorService,
private userService: UserService
) {
this.userService.stateChanged
- .pipe(takeUntil(this.unsubscribeSubject))
+ .pipe(takeUntilDestroyed(this.destroyRef))
.subscribe((state) => {
if (state?.user) {
this.tabs = [
@@ -59,9 +62,4 @@ export class GfZenPageComponent implements OnDestroy, OnInit {
public ngOnInit() {
this.deviceType = this.deviceService.getDeviceInfo().deviceType;
}
-
- public ngOnDestroy() {
- this.unsubscribeSubject.next();
- this.unsubscribeSubject.complete();
- }
}
diff --git a/apps/client/src/app/services/import-activities.service.ts b/apps/client/src/app/services/import-activities.service.ts
index 94d8470f7..55b5c44d5 100644
--- a/apps/client/src/app/services/import-activities.service.ts
+++ b/apps/client/src/app/services/import-activities.service.ts
@@ -97,9 +97,7 @@ export class ImportActivitiesService {
isin: null,
marketData: [],
name: symbol,
- scraperConfiguration: null,
sectors: [],
- symbolMapping: {},
url: null
});
}
diff --git a/apps/client/src/app/services/token-storage.service.ts b/apps/client/src/app/services/token-storage.service.ts
index 5b9a29a08..f54aab828 100644
--- a/apps/client/src/app/services/token-storage.service.ts
+++ b/apps/client/src/app/services/token-storage.service.ts
@@ -1,19 +1,11 @@
-import { WebAuthnService } from '@ghostfolio/client/services/web-authn.service';
-
import { Injectable } from '@angular/core';
import { KEY_TOKEN } from './settings-storage.service';
-import { UserService } from './user/user.service';
@Injectable({
providedIn: 'root'
})
export class TokenStorageService {
- public constructor(
- private userService: UserService,
- private webAuthnService: WebAuthnService
- ) {}
-
public getToken(): string {
return (
window.sessionStorage.getItem(KEY_TOKEN) ||
@@ -25,23 +17,7 @@ export class TokenStorageService {
if (staySignedIn) {
window.localStorage.setItem(KEY_TOKEN, token);
}
- window.sessionStorage.setItem(KEY_TOKEN, token);
- }
-
- public signOut() {
- const utmSource = window.localStorage.getItem('utm_source');
- if (this.webAuthnService.isEnabled()) {
- this.webAuthnService.deregister().subscribe();
- }
-
- window.localStorage.clear();
- window.sessionStorage.clear();
-
- this.userService.remove();
-
- if (utmSource) {
- window.localStorage.setItem('utm_source', utmSource);
- }
+ window.sessionStorage.setItem(KEY_TOKEN, token);
}
}
diff --git a/apps/client/src/app/services/user/user.service.ts b/apps/client/src/app/services/user/user.service.ts
index bd9d7d04c..44b63e056 100644
--- a/apps/client/src/app/services/user/user.service.ts
+++ b/apps/client/src/app/services/user/user.service.ts
@@ -1,3 +1,4 @@
+import { WebAuthnService } from '@ghostfolio/client/services/web-authn.service';
import { Filter, User } from '@ghostfolio/common/interfaces';
import { hasPermission, permissions } from '@ghostfolio/common/permissions';
@@ -26,7 +27,8 @@ export class UserService extends ObservableStore {
public constructor(
private deviceService: DeviceDetectorService,
private dialog: MatDialog,
- private http: HttpClient
+ private http: HttpClient,
+ private webAuthnService: WebAuthnService
) {
super({ trackStateHistory: true });
@@ -93,10 +95,40 @@ export class UserService extends ObservableStore {
return this.getFilters().length > 0;
}
- public remove() {
+ public reset() {
this.setState({ user: null }, UserStoreActions.RemoveUser);
}
+ public signOut() {
+ const utmSource = window.localStorage.getItem('utm_source');
+
+ if (this.webAuthnService.isEnabled()) {
+ this.webAuthnService.deregister().subscribe();
+ }
+
+ window.localStorage.clear();
+ window.sessionStorage.clear();
+
+ void this.clearAllCookies();
+
+ this.reset();
+
+ if (utmSource) {
+ window.localStorage.setItem('utm_source', utmSource);
+ }
+ }
+
+ private async clearAllCookies() {
+ if (!('cookieStore' in window)) {
+ console.warn('Cookie Store API not available in this browser');
+ return;
+ }
+
+ const cookies = await cookieStore.getAll();
+
+ await Promise.all(cookies.map(({ name }) => cookieStore.delete(name)));
+ }
+
private fetchUser(): Observable {
return this.http.get('/api/v1/user').pipe(
map((user) => {
diff --git a/apps/client/src/assets/terms-of-service.md b/apps/client/src/assets/terms-of-service.md
index d2a6e598d..4f62eee5b 100644
--- a/apps/client/src/assets/terms-of-service.md
+++ b/apps/client/src/assets/terms-of-service.md
@@ -51,8 +51,18 @@ This Agreement constitutes the entire agreement between the User and LICENSEE re
LICENSEE reserves the right to modify this Agreement at any time. Users are encouraged to review this Agreement periodically for updates. Continued use of the Service after changes to this Agreement constitutes acceptance of the modified terms.
+## Paid Plans
+
+LICENSEE offers paid plans (such as [Ghostfolio Premium](https://ghostfol.io/en/pricing)) for a fixed term as specified at the time of purchase. Paid plans do not renew automatically.
+
+LICENSEE may change the features or pricing of paid plans. For any existing paid plan, if a material feature is removed, LICENSEE may, acting in good faith, offer a pro-rata refund for the unused portion of the term upon the User’s request.
+
+## Refund Policy
+
+LICENSEE may offer a free trial of paid plans. Users are encouraged to use any available free trial to evaluate the Service before purchasing. While all purchases are final, a refund may be requested within fourteen (14) days of the purchase date by contacting LICENSEE. Requests after this period will not be honored.
+
By accessing or using the Service, or downloading data provided by the Service, the User acknowledges that they have read, understood, and agreed to be bound by this Terms of Service Agreement.
For any questions or concerns regarding this Agreement, please contact us [here](https://ghostfol.io/en/about).
-Date of Last Revision: March 29, 2025
+Date of Last Revision: April 6, 2026
diff --git a/apps/client/src/locales/messages.ca.xlf b/apps/client/src/locales/messages.ca.xlf
index a6bec7df3..566d91cc7 100644
--- a/apps/client/src/locales/messages.ca.xlf
+++ b/apps/client/src/locales/messages.ca.xlf
@@ -38,7 +38,7 @@
apps/client/src/app/components/header/header.component.ts
- 297
+ 298
apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html
@@ -403,7 +403,7 @@
Balanç de Caixa
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
- 148
+ 146
@@ -427,7 +427,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 309
+ 310
apps/client/src/app/components/admin-platform/admin-platform.component.html
@@ -439,7 +439,7 @@
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 46
+ 58
apps/client/src/app/components/admin-tag/admin-tag.component.html
@@ -455,7 +455,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 139
+ 135
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -499,7 +499,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 316
+ 317
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -511,7 +511,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 145
+ 141
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -531,15 +531,15 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 205
+ 201
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 208
+ 204
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 211
+ 207
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -587,11 +587,11 @@
apps/client/src/app/components/admin-platform/admin-platform.component.html
- 74
+ 78
apps/client/src/app/components/admin-tag/admin-tag.component.html
- 67
+ 71
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -619,11 +619,15 @@
apps/client/src/app/components/admin-platform/admin-platform.component.html
- 85
+ 89
apps/client/src/app/components/admin-tag/admin-tag.component.html
- 78
+ 82
+
+
+ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
+ 22
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -647,7 +651,7 @@
Realment vol suprimir aquest compte?
libs/ui/src/lib/accounts-table/accounts-table.component.ts
- 150
+ 148
@@ -655,7 +659,7 @@
Tipus
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 48
+ 57
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
@@ -675,7 +679,7 @@
Perfil d’Actiu
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 52
+ 61
@@ -683,11 +687,11 @@
Dades Històriques de Mercat
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 54
+ 63
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 448
+ 451
@@ -695,7 +699,7 @@
Origen de les Dades
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 82
+ 91
apps/client/src/app/components/admin-market-data/admin-market-data.html
@@ -707,7 +711,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 155
+ 151
libs/ui/src/lib/i18n.ts
@@ -719,7 +723,7 @@
Prioritat
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 96
+ 105
@@ -727,7 +731,7 @@
Intents
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 120
+ 129
@@ -735,7 +739,7 @@
Creat
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 134
+ 143
@@ -743,7 +747,7 @@
Finalitzat
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 143
+ 152
@@ -751,11 +755,11 @@
Estat
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 152
+ 161
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 92
+ 104
@@ -771,7 +775,7 @@
Aturar Processos
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 193
+ 202
@@ -779,7 +783,7 @@
Veure les Dades
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 208
+ 217
@@ -787,7 +791,7 @@
Veure Stacktrace
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 216
+ 225
@@ -795,7 +799,7 @@
Executar Procés
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 220
+ 229
@@ -803,7 +807,7 @@
Suprimir Procés
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 224
+ 233
@@ -819,7 +823,7 @@
Data
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 161
+ 157
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -855,7 +859,7 @@
Punts de referència
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 126
+ 125
@@ -863,11 +867,11 @@
Divises
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 131
+ 130
apps/client/src/app/pages/public/public-page.html
- 96
+ 95
@@ -875,7 +879,7 @@
ETFs sense País
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 136
+ 135
@@ -883,7 +887,7 @@
ETFs sense Sector
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 141
+ 140
@@ -891,7 +895,7 @@
Filtra per...
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 385
+ 383
@@ -931,7 +935,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html
- 44
+ 40
@@ -999,7 +1003,7 @@
Oooh! No s’han pogut recopilar les dades históriques.
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts
- 262
+ 284
@@ -1007,7 +1011,7 @@
El preu de mercat actual és
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 706
+ 722
@@ -1031,7 +1035,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html
- 71
+ 67
@@ -1063,7 +1067,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 53
+ 72
@@ -1075,7 +1079,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 396
+ 399
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -1083,7 +1087,7 @@
apps/client/src/app/pages/public/public-page.html
- 114
+ 113
@@ -1095,7 +1099,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 407
+ 410
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -1107,7 +1111,7 @@
Mapatge de Símbols
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 384
+ 387
@@ -1123,7 +1127,7 @@
Configuració del Proveïdor de Dades
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 471
+ 474
@@ -1131,7 +1135,7 @@
Prova
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 568
+ 571
@@ -1139,11 +1143,11 @@
Url
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 419
+ 422
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 550
+ 553
apps/client/src/app/components/admin-platform/admin-platform.component.html
@@ -1159,7 +1163,7 @@
Asset profile has been saved
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 578
+ 594
@@ -1167,7 +1171,7 @@
Notes
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 432
+ 435
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
@@ -1175,7 +1179,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 275
+ 271
@@ -1219,7 +1223,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 124
+ 120
@@ -1227,7 +1231,7 @@
Està segur qeu vol eliminar aquest cupó?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 193
+ 196
@@ -1235,7 +1239,7 @@
Està segur que vol eliminar aquest missatge del sistema?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 206
+ 209
@@ -1243,7 +1247,7 @@
Està segur que vol depurar el cache?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 230
+ 233
@@ -1251,7 +1255,7 @@
Si us plau, afegeixi el seu missatge del sistema:
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 250
+ 253
@@ -1315,7 +1319,7 @@
Recollida de Dades
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 587
+ 594
apps/client/src/app/components/admin-overview/admin-overview.html
@@ -1387,7 +1391,15 @@
Està segur que vol eliminar aquesta plataforma?
apps/client/src/app/components/admin-platform/admin-platform.component.ts
- 106
+ 111
+
+
+
+ Explore
+ Explore
+
+ apps/client/src/app/pages/resources/overview/resources-overview.component.html
+ 11
@@ -1411,7 +1423,7 @@
Current year
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 199
+ 205
@@ -1427,7 +1439,7 @@
Plataformes
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 195
+ 212
@@ -1435,7 +1447,7 @@
Etiquetes
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 201
+ 218
libs/ui/src/lib/tags-selector/tags-selector.component.html
@@ -1459,7 +1471,7 @@
Està segur que vol eliminar aquesta etiqueta?
apps/client/src/app/components/admin-tag/admin-tag.component.ts
- 103
+ 108
@@ -1519,7 +1531,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 89
+ 108
@@ -1551,11 +1563,11 @@
Could not validate form
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 554
+ 570
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 557
+ 573
@@ -1603,7 +1615,7 @@
Punt de Referència
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 376
+ 379
apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts
@@ -1679,15 +1691,15 @@
Oooh! El testimoni de seguretat és incorrecte.
apps/client/src/app/components/header/header.component.ts
- 312
+ 313
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 154
+ 152
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 193
+ 191
@@ -1715,7 +1727,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 189
+ 185
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -1743,7 +1755,7 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 88
+ 92
@@ -1767,7 +1779,7 @@
Informar d’un Problema amb les Dades
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 451
+ 456
@@ -1775,7 +1787,7 @@
en Actiiu
apps/client/src/app/components/home-holdings/home-holdings.component.ts
- 64
+ 63
@@ -1783,7 +1795,7 @@
Finalitzat
apps/client/src/app/components/home-holdings/home-holdings.component.ts
- 65
+ 64
@@ -1807,7 +1819,7 @@
Gestionar Activitats
apps/client/src/app/components/home-holdings/home-holdings.html
- 67
+ 64
@@ -1815,11 +1827,11 @@
Por
apps/client/src/app/components/home-market/home-market.component.ts
- 42
+ 41
apps/client/src/app/components/markets/markets.component.ts
- 47
+ 46
libs/ui/src/lib/i18n.ts
@@ -1831,11 +1843,11 @@
Cobdícia
apps/client/src/app/components/home-market/home-market.component.ts
- 43
+ 42
apps/client/src/app/components/markets/markets.component.ts
- 48
+ 47
libs/ui/src/lib/i18n.ts
@@ -1939,7 +1951,7 @@
Current week
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 191
+ 197
@@ -1959,7 +1971,7 @@
Import total
apps/client/src/app/components/investment-chart/investment-chart.component.ts
- 143
+ 146
@@ -2095,7 +2107,7 @@
Rendiment brut absolut
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 73
+ 77
@@ -2103,7 +2115,7 @@
Rendiment net absolut
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 107
+ 111
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
@@ -2115,7 +2127,7 @@
Rendiment net
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 123
+ 127
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
@@ -2127,7 +2139,7 @@
Actius totals
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 149
+ 153
@@ -2135,7 +2147,7 @@
Actius
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 226
+ 233
@@ -2143,7 +2155,7 @@
Poder adquisitiu
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 241
+ 248
@@ -2151,7 +2163,7 @@
Exclòs de l’anàlisi
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 267
+ 274
@@ -2159,7 +2171,7 @@
Passius
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 295
+ 302
apps/client/src/app/pages/features/features-page.html
@@ -2171,7 +2183,7 @@
Valor net
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 317
+ 324
@@ -2179,7 +2191,7 @@
Rendiment anualitzat
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 331
+ 338
@@ -2339,7 +2351,7 @@
libs/ui/src/lib/assistant/assistant.component.ts
- 363
+ 362
@@ -2347,11 +2359,11 @@
YTD
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 199
+ 205
libs/ui/src/lib/assistant/assistant.component.ts
- 375
+ 374
@@ -2359,11 +2371,11 @@
1 any
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 203
+ 209
libs/ui/src/lib/assistant/assistant.component.ts
- 385
+ 384
@@ -2371,11 +2383,11 @@
5 anys
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 207
+ 213
libs/ui/src/lib/assistant/assistant.component.ts
- 409
+ 408
@@ -2391,11 +2403,11 @@
Màx
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 211
+ 217
libs/ui/src/lib/assistant/assistant.component.ts
- 415
+ 414
@@ -2451,7 +2463,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 11
+ 30
@@ -2535,7 +2547,7 @@
Automàtic
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 70
+ 69
apps/client/src/app/components/user-account-settings/user-account-settings.html
@@ -2547,7 +2559,7 @@
De debò vols tancar el teu compte de Ghostfolio?
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 208
+ 205
@@ -2555,7 +2567,7 @@
De debò vols eliminar aquest mètode d’inici de sessió?
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 282
+ 279
@@ -2563,7 +2575,7 @@
Include in
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 374
+ 377
@@ -2571,7 +2583,7 @@
Ups! Hi ha hagut un error en configurar l’autenticació biomètrica.
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 336
+ 333
@@ -2619,7 +2631,7 @@
Localització
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 509
+ 512
apps/client/src/app/components/user-account-settings/user-account-settings.html
@@ -2763,7 +2775,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 195
+ 194
@@ -2783,7 +2795,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 193
+ 192
@@ -2799,7 +2811,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 196
+ 195
@@ -2935,11 +2947,11 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 375
+ 381
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 66
+ 85
apps/client/src/app/pages/accounts/accounts-page.html
@@ -3039,7 +3051,7 @@
Dades de mercat
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 398
+ 403
libs/common/src/lib/routes/routes.ts
@@ -3073,6 +3085,10 @@
Overview
Visió general
+
+ apps/client/src/app/components/admin-jobs/admin-jobs.html
+ 7
+
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
114
@@ -3091,11 +3107,11 @@
apps/client/src/app/pages/admin/admin-page.component.ts
- 48
+ 45
apps/client/src/app/pages/resources/resources-page.component.ts
- 30
+ 29
libs/common/src/lib/routes/routes.ts
@@ -3219,11 +3235,11 @@
Could not parse scraper configuration
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 509
+ 525
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 512
+ 528
@@ -3239,7 +3255,7 @@
Com que ja has iniciat sessió, no pots accedir al compte de demostració.
apps/client/src/app/pages/demo/demo-page.component.ts
- 35
+ 32
@@ -3267,7 +3283,7 @@
General
apps/client/src/app/pages/faq/faq-page.component.ts
- 49
+ 41
@@ -3275,7 +3291,7 @@
Núvol
apps/client/src/app/pages/faq/faq-page.component.ts
- 54
+ 46
libs/common/src/lib/routes/routes.ts
@@ -3287,7 +3303,7 @@
Autoallotjament
apps/client/src/app/pages/faq/faq-page.component.ts
- 60
+ 52
libs/common/src/lib/routes/routes.ts
@@ -3436,7 +3452,7 @@
apps/client/src/app/pages/public/public-page.html
- 242
+ 241
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
@@ -3488,7 +3504,7 @@
Mercats
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 378
+ 381
apps/client/src/app/components/footer/footer.component.html
@@ -3512,7 +3528,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 40
+ 39
libs/common/src/lib/routes/routes.ts
@@ -3960,7 +3976,7 @@
Job ID
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 34
+ 43
@@ -3996,7 +4012,7 @@
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
- 115
+ 113
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
@@ -4016,11 +4032,11 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 342
+ 348
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 75
+ 94
apps/client/src/app/pages/portfolio/activities/activities-page.html
@@ -4100,7 +4116,7 @@
Actualitzar el saldo d’efectiu
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 112
+ 108
@@ -4108,7 +4124,7 @@
Preu unitari
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 214
+ 210
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -4136,7 +4152,7 @@
Importar dividends
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 137
+ 136
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -4152,7 +4168,7 @@
S’estan important dades...
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 175
+ 174
@@ -4160,7 +4176,7 @@
La importació s’ha completat
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 185
+ 184
@@ -4176,7 +4192,7 @@
S’estan validant les dades...
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 299
+ 293
@@ -4348,7 +4364,7 @@
apps/client/src/app/pages/public/public-page.html
- 151
+ 150
@@ -4372,7 +4388,7 @@
apps/client/src/app/pages/public/public-page.html
- 168
+ 167
@@ -4380,7 +4396,7 @@
Latest activities
apps/client/src/app/pages/public/public-page.html
- 211
+ 210
@@ -4392,7 +4408,7 @@
apps/client/src/app/pages/public/public-page.html
- 177
+ 176
@@ -4404,7 +4420,7 @@
apps/client/src/app/pages/public/public-page.html
- 186
+ 185
@@ -4480,7 +4496,7 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 365
+ 372
apps/client/src/app/pages/features/features-page.html
@@ -4488,11 +4504,11 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 202
+ 198
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 76
+ 75
libs/ui/src/lib/i18n.ts
@@ -4512,11 +4528,11 @@
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 81
+ 80
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 97
+ 96
apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
@@ -4536,7 +4552,7 @@
Mensualment
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 91
+ 90
@@ -4544,7 +4560,7 @@
Anualment
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 92
+ 91
@@ -4552,7 +4568,7 @@
Close Holding
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 442
+ 447
@@ -4848,11 +4864,11 @@
Could not save asset profile
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 588
+ 604
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 591
+ 607
@@ -4876,7 +4892,7 @@
Continents
apps/client/src/app/pages/public/public-page.html
- 132
+ 131
@@ -4884,7 +4900,7 @@
Vols refinar la teva estratègia d’inversió personal ?
apps/client/src/app/pages/public/public-page.html
- 234
+ 233
@@ -4900,7 +4916,7 @@
Ghostfolio us permet fer un seguiment de la vostra riquesa.
apps/client/src/app/pages/public/public-page.html
- 238
+ 237
@@ -4930,6 +4946,10 @@
apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html
88
+
+ libs/ui/src/lib/value/value.component.html
+ 18
+
Personal Finance Tools
@@ -5273,7 +5293,7 @@
Pertinença
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 48
+ 67
libs/common/src/lib/routes/routes.ts
@@ -5341,7 +5361,7 @@
Realment voleu eliminar el saldo d’aquest compte?
libs/ui/src/lib/account-balances/account-balances.component.ts
- 120
+ 113
@@ -5405,7 +5425,7 @@
De veritat vols suprimir aquestes activitats?
libs/ui/src/lib/activities-table/activities-table.component.ts
- 278
+ 282
@@ -5413,7 +5433,7 @@
Realment vols suprimir aquesta activitat?
libs/ui/src/lib/activities-table/activities-table.component.ts
- 288
+ 292
@@ -5421,7 +5441,7 @@
Setmana fins avui
libs/ui/src/lib/assistant/assistant.component.ts
- 367
+ 366
@@ -5429,11 +5449,11 @@
WTD
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 191
+ 197
libs/ui/src/lib/assistant/assistant.component.ts
- 367
+ 366
@@ -5441,7 +5461,7 @@
Mes fins a la data
libs/ui/src/lib/assistant/assistant.component.ts
- 371
+ 370
@@ -5449,11 +5469,11 @@
MTD
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 195
+ 201
libs/ui/src/lib/assistant/assistant.component.ts
- 371
+ 370
@@ -5461,7 +5481,7 @@
Any fins a la data
libs/ui/src/lib/assistant/assistant.component.ts
- 375
+ 374
@@ -5469,7 +5489,7 @@
any
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 203
+ 209
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
@@ -5481,7 +5501,7 @@
libs/ui/src/lib/assistant/assistant.component.ts
- 385
+ 384
@@ -5489,11 +5509,11 @@
anys
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 207
+ 213
libs/ui/src/lib/assistant/assistant.component.ts
- 409
+ 408
@@ -5501,7 +5521,7 @@
Perfils d’actius
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 106
+ 123
libs/ui/src/lib/assistant/assistant.html
@@ -5641,7 +5661,7 @@
Dipòsit
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 377
+ 404
@@ -5653,11 +5673,11 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 352
+ 359
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 387
+ 414
libs/ui/src/lib/i18n.ts
@@ -5669,7 +5689,7 @@
Estalvi
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 397
+ 424
@@ -5697,7 +5717,7 @@
Mostra-ho tot
libs/ui/src/lib/holdings-table/holdings-table.component.html
- 216
+ 212
@@ -5741,7 +5761,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 326
+ 327
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -5749,7 +5769,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 290
+ 286
libs/ui/src/lib/i18n.ts
@@ -5773,7 +5793,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 342
+ 343
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -5781,7 +5801,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 309
+ 305
libs/ui/src/lib/i18n.ts
@@ -5833,7 +5853,7 @@
Fons d’emergència
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 164
+ 168
apps/client/src/app/pages/features/features-page.html
@@ -5909,7 +5929,7 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 437
+ 451
@@ -5920,6 +5940,14 @@
27
+
+ No Activities
+ No Activities
+
+ apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
+ 145
+
+
Retirement Provision
Provisió de jubilació
@@ -5949,7 +5977,7 @@
Símbol
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 68
+ 77
apps/client/src/app/components/admin-market-data/admin-market-data.html
@@ -5965,7 +5993,7 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 315
+ 318
libs/ui/src/lib/i18n.ts
@@ -6037,7 +6065,7 @@
Comissió
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 262
+ 258
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -6081,7 +6109,7 @@
Efectiu
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 212
+ 219
libs/ui/src/lib/i18n.ts
@@ -6137,7 +6165,7 @@
Authentication
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 35
+ 54
@@ -6281,7 +6309,7 @@
Vàlid fins a
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 74
+ 86
libs/ui/src/lib/membership-card/membership-card.component.html
@@ -6305,7 +6333,7 @@
apps/client/src/app/pages/public/public-page.html
- 196
+ 195
libs/ui/src/lib/benchmark/benchmark.component.html
@@ -6313,11 +6341,11 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 439
+ 453
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 452
+ 467
libs/ui/src/lib/top-holdings/top-holdings.component.html
@@ -6661,7 +6689,7 @@
Error
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 697
+ 713
@@ -6713,7 +6741,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 592
+ 599
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -6745,7 +6773,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 345
+ 341
apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html
@@ -6753,7 +6781,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html
- 46
+ 47
libs/ui/src/lib/i18n.ts
@@ -6765,7 +6793,7 @@
Close
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 594
+ 601
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -6791,13 +6819,17 @@
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
68
+
+ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
+ 127
+
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
107
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 347
+ 343
libs/ui/src/lib/i18n.ts
@@ -6809,7 +6841,7 @@
Role
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 14
+ 33
@@ -6833,7 +6865,7 @@
Portfolio Snapshot
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 56
+ 65
@@ -6900,6 +6932,14 @@
42
+
+ has been copied to the clipboard
+ has been copied to the clipboard
+
+ libs/ui/src/lib/value/value.component.ts
+ 180
+
+
From the beginning
From the beginning
@@ -7065,7 +7105,7 @@
Set API key
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 171
+ 188
@@ -7101,7 +7141,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 45
+ 44
libs/common/src/lib/routes/routes.ts
@@ -7117,7 +7157,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 34
+ 33
libs/common/src/lib/routes/routes.ts
@@ -7171,7 +7211,7 @@
of
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 135
+ 152
@@ -7179,7 +7219,7 @@
daily requests
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 137
+ 154
@@ -7187,7 +7227,7 @@
Remove API key
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 161
+ 178
@@ -7195,7 +7235,7 @@
Do you really want to delete the API key?
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 127
+ 133
@@ -7215,7 +7255,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 98
+ 117
@@ -7287,7 +7327,7 @@
Save
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 603
+ 610
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -7323,11 +7363,11 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 356
+ 352
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html
- 48
+ 49
@@ -7339,7 +7379,7 @@
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 260
+ 257
@@ -7363,7 +7403,7 @@
Please enter your Ghostfolio API key.
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 146
+ 152
@@ -7379,7 +7419,7 @@
AI prompt has been copied to the clipboard
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 201
+ 199
@@ -7395,7 +7435,7 @@
Lazy
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 225
+ 231
@@ -7403,7 +7443,7 @@
Instant
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 229
+ 235
@@ -7411,7 +7451,7 @@
Default Market Price
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 481
+ 484
@@ -7419,7 +7459,7 @@
Mode
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 518
+ 521
@@ -7427,7 +7467,7 @@
Selector
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 534
+ 537
@@ -7435,7 +7475,7 @@
HTTP Request Headers
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 494
+ 497
@@ -7443,7 +7483,7 @@
end of day
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 225
+ 231
@@ -7451,7 +7491,7 @@
real-time
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 229
+ 235
@@ -7459,7 +7499,7 @@
Open Duck.ai
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 202
+ 200
@@ -7479,7 +7519,7 @@
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 368
+ 377
@@ -7491,7 +7531,7 @@
apps/client/src/app/components/home-overview/home-overview.component.ts
- 55
+ 54
libs/ui/src/lib/holdings-table/holdings-table.component.html
@@ -7499,11 +7539,11 @@
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 368
+ 377
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 381
+ 390
@@ -7607,11 +7647,11 @@
Security token
apps/client/src/app/components/admin-users/admin-users.component.ts
- 236
+ 235
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 170
+ 167
@@ -7619,7 +7659,7 @@
Do you really want to generate a new security token for this user?
apps/client/src/app/components/admin-users/admin-users.component.ts
- 241
+ 240
@@ -7627,7 +7667,7 @@
Find account, holding or page...
libs/ui/src/lib/assistant/assistant.component.ts
- 151
+ 115
@@ -7692,7 +7732,7 @@
( ) is already in use.
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 633
+ 649
@@ -7700,7 +7740,7 @@
An error occurred while updating to ( ).
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 641
+ 657
@@ -7764,7 +7804,7 @@
someone
apps/client/src/app/pages/public/public-page.component.ts
- 59
+ 61
@@ -7796,7 +7836,7 @@
Do you really want to delete this item?
libs/ui/src/lib/benchmark/benchmark.component.ts
- 144
+ 139
@@ -7837,7 +7877,7 @@
Demo user account has been synced.
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 274
+ 277
@@ -7872,7 +7912,7 @@
150
-
+
Fee Ratio
Fee Ratio
@@ -7880,17 +7920,17 @@
152
-
- The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
- The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
+
+ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
+ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
apps/client/src/app/pages/i18n/i18n-page.html
154
-
- The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
- The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
+
+ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
+ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
apps/client/src/app/pages/i18n/i18n-page.html
158
@@ -8051,7 +8091,7 @@
Current month
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 195
+ 201
@@ -8059,11 +8099,11 @@
new
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 67
+ 79
apps/client/src/app/pages/admin/admin-page.component.ts
- 56
+ 53
@@ -8220,7 +8260,7 @@
Do you really want to generate a new security token?
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 175
+ 172
@@ -8244,7 +8284,7 @@
Stocks
apps/client/src/app/components/markets/markets.component.ts
- 52
+ 51
apps/client/src/app/pages/features/features-page.html
@@ -8256,7 +8296,7 @@
Cryptocurrencies
apps/client/src/app/components/markets/markets.component.ts
- 53
+ 52
apps/client/src/app/pages/features/features-page.html
@@ -8276,7 +8316,7 @@
Manage Asset Profile
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 466
+ 471
@@ -8696,7 +8736,7 @@
Registration Date
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 26
+ 45
diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf
index 44ee607c3..ff12aebcb 100644
--- a/apps/client/src/locales/messages.de.xlf
+++ b/apps/client/src/locales/messages.de.xlf
@@ -50,7 +50,7 @@
Typ
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 48
+ 57
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
@@ -106,7 +106,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 309
+ 310
apps/client/src/app/components/admin-platform/admin-platform.component.html
@@ -118,7 +118,7 @@
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 46
+ 58
apps/client/src/app/components/admin-tag/admin-tag.component.html
@@ -134,7 +134,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 139
+ 135
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -178,15 +178,15 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 205
+ 201
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 208
+ 204
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 211
+ 207
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -234,11 +234,11 @@
apps/client/src/app/components/admin-platform/admin-platform.component.html
- 74
+ 78
apps/client/src/app/components/admin-tag/admin-tag.component.html
- 67
+ 71
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -266,11 +266,15 @@
apps/client/src/app/components/admin-platform/admin-platform.component.html
- 85
+ 89
apps/client/src/app/components/admin-tag/admin-tag.component.html
- 78
+ 82
+
+
+ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
+ 22
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -294,7 +298,7 @@
Möchtest du dieses Konto wirklich löschen?
libs/ui/src/lib/accounts-table/accounts-table.component.ts
- 150
+ 148
@@ -302,7 +306,7 @@
Jobs löschen
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 193
+ 202
@@ -310,7 +314,7 @@
Datenquelle
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 82
+ 91
apps/client/src/app/components/admin-market-data/admin-market-data.html
@@ -322,7 +326,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 155
+ 151
libs/ui/src/lib/i18n.ts
@@ -334,7 +338,7 @@
Versuche
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 120
+ 129
@@ -342,7 +346,7 @@
Erstellt
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 134
+ 143
@@ -350,7 +354,7 @@
Abgeschlossen
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 143
+ 152
@@ -358,11 +362,11 @@
Status
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 152
+ 161
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 92
+ 104
@@ -378,7 +382,7 @@
Anlageprofile
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 106
+ 123
libs/ui/src/lib/assistant/assistant.html
@@ -390,11 +394,11 @@
Historische Marktdaten
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 54
+ 63
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 448
+ 451
@@ -402,7 +406,7 @@
Daten anzeigen
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 208
+ 217
@@ -410,7 +414,7 @@
Stacktrace anzeigen
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 216
+ 225
@@ -418,7 +422,7 @@
Job löschen
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 224
+ 233
@@ -434,7 +438,7 @@
Datum
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 161
+ 157
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -502,7 +506,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html
- 44
+ 40
@@ -510,7 +514,7 @@
Möchtest du diesen Gutscheincode wirklich löschen?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 193
+ 196
@@ -518,7 +522,7 @@
Möchtest du den Cache wirklich leeren?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 230
+ 233
@@ -526,7 +530,7 @@
Bitte gebe deine Systemmeldung ein:
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 250
+ 253
@@ -682,7 +686,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 89
+ 108
@@ -738,7 +742,7 @@
apps/client/src/app/pages/public/public-page.html
- 242
+ 241
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
@@ -754,7 +758,7 @@
apps/client/src/app/components/header/header.component.ts
- 297
+ 298
apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html
@@ -774,15 +778,15 @@
Ups! Falsches Sicherheits-Token.
apps/client/src/app/components/header/header.component.ts
- 312
+ 313
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 154
+ 152
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 193
+ 191
@@ -790,7 +794,7 @@
Aktivitäten verwalten
apps/client/src/app/components/home-holdings/home-holdings.html
- 67
+ 64
@@ -906,7 +910,7 @@
Absolute Brutto Performance
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 73
+ 77
@@ -914,7 +918,7 @@
Absolute Netto Performance
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 107
+ 111
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
@@ -926,7 +930,7 @@
Netto Performance
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 123
+ 127
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
@@ -938,7 +942,7 @@
Gesamtanlagevermögen
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 149
+ 153
@@ -946,7 +950,7 @@
Kaufkraft
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 241
+ 248
@@ -954,7 +958,7 @@
Gesamtvermögen
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 317
+ 324
@@ -962,7 +966,7 @@
Performance pro Jahr
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 331
+ 338
@@ -982,7 +986,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 396
+ 399
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -990,7 +994,7 @@
apps/client/src/app/pages/public/public-page.html
- 114
+ 113
@@ -1002,7 +1006,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 407
+ 410
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -1014,7 +1018,7 @@
Tags
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 201
+ 218
libs/ui/src/lib/tags-selector/tags-selector.component.html
@@ -1030,7 +1034,7 @@
Datenfehler melden
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 451
+ 456
@@ -1058,7 +1062,7 @@
Alle anzeigen
libs/ui/src/lib/holdings-table/holdings-table.component.html
- 216
+ 212
@@ -1070,7 +1074,7 @@
libs/ui/src/lib/assistant/assistant.component.ts
- 363
+ 362
@@ -1078,11 +1082,11 @@
YTD
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 199
+ 205
libs/ui/src/lib/assistant/assistant.component.ts
- 375
+ 374
@@ -1090,11 +1094,11 @@
1J
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 203
+ 209
libs/ui/src/lib/assistant/assistant.component.ts
- 385
+ 384
@@ -1102,11 +1106,11 @@
5J
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 207
+ 213
libs/ui/src/lib/assistant/assistant.component.ts
- 409
+ 408
@@ -1122,11 +1126,11 @@
Max
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 211
+ 217
libs/ui/src/lib/assistant/assistant.component.ts
- 415
+ 414
@@ -1142,7 +1146,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 196
+ 195
@@ -1234,7 +1238,7 @@
Möchtest du diese Anmeldemethode wirklich löschen?
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 282
+ 279
@@ -1294,7 +1298,7 @@
Lokalität
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 509
+ 512
apps/client/src/app/components/user-account-settings/user-account-settings.html
@@ -1342,7 +1346,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 11
+ 30
@@ -1390,11 +1394,11 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 375
+ 381
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 66
+ 85
apps/client/src/app/pages/accounts/accounts-page.html
@@ -1434,7 +1438,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 316
+ 317
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -1446,7 +1450,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 145
+ 141
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -1626,7 +1630,7 @@
Da du bereits eingeloggt bist, kannst du nicht auf die Live Demo zugreifen.
apps/client/src/app/pages/demo/demo-page.component.ts
- 35
+ 32
@@ -1672,6 +1676,10 @@
Overview
Übersicht
+
+ apps/client/src/app/components/admin-jobs/admin-jobs.html
+ 7
+
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
114
@@ -1690,11 +1698,11 @@
apps/client/src/app/pages/admin/admin-page.component.ts
- 48
+ 45
apps/client/src/app/pages/resources/resources-page.component.ts
- 30
+ 29
libs/common/src/lib/routes/routes.ts
@@ -1710,7 +1718,7 @@
Märkte
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 378
+ 381
apps/client/src/app/components/footer/footer.component.html
@@ -1734,7 +1742,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 40
+ 39
libs/common/src/lib/routes/routes.ts
@@ -1834,7 +1842,7 @@
apps/client/src/app/pages/public/public-page.html
- 151
+ 150
@@ -1930,7 +1938,7 @@
Aktuelle Woche
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 191
+ 197
@@ -1974,7 +1982,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 124
+ 120
@@ -1986,7 +1994,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 189
+ 185
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -2002,7 +2010,7 @@
Stückpreis
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 214
+ 210
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -2014,7 +2022,7 @@
Kommentar
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 432
+ 435
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
@@ -2022,7 +2030,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 275
+ 271
@@ -2034,7 +2042,7 @@
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
- 115
+ 113
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
@@ -2054,11 +2062,11 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 342
+ 348
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 75
+ 94
apps/client/src/app/pages/portfolio/activities/activities-page.html
@@ -2078,7 +2086,7 @@
Daten importieren...
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 175
+ 174
@@ -2086,7 +2094,7 @@
Der Import wurde abgeschlossen
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 185
+ 184
@@ -2158,7 +2166,7 @@
Kontinente
apps/client/src/app/pages/public/public-page.html
- 132
+ 131
@@ -2174,7 +2182,7 @@
Ghostfolio verschafft dir den Überblick über dein Vermögen.
apps/client/src/app/pages/public/public-page.html
- 238
+ 237
@@ -2204,6 +2212,10 @@
apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html
88
+
+ libs/ui/src/lib/value/value.component.html
+ 18
+
Resources
@@ -2322,7 +2334,7 @@
Möchtest du diese Aktivität wirklich löschen?
libs/ui/src/lib/activities-table/activities-table.component.ts
- 288
+ 292
@@ -2394,7 +2406,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 195
+ 194
@@ -2406,7 +2418,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 193
+ 192
@@ -2454,7 +2466,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 53
+ 72
@@ -2478,7 +2490,7 @@
apps/client/src/app/pages/public/public-page.html
- 168
+ 167
@@ -2486,7 +2498,7 @@
Neueste Aktivitäten
apps/client/src/app/pages/public/public-page.html
- 211
+ 210
@@ -2498,7 +2510,7 @@
apps/client/src/app/pages/public/public-page.html
- 177
+ 176
@@ -2510,7 +2522,7 @@
apps/client/src/app/pages/public/public-page.html
- 186
+ 185
@@ -2526,7 +2538,7 @@
Monatlich
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 91
+ 90
@@ -2542,7 +2554,7 @@
Einlage
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 377
+ 404
@@ -2554,11 +2566,11 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 352
+ 359
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 387
+ 414
libs/ui/src/lib/i18n.ts
@@ -2570,7 +2582,7 @@
Ersparnisse
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 397
+ 424
@@ -2594,11 +2606,11 @@
Angst
apps/client/src/app/components/home-market/home-market.component.ts
- 42
+ 41
apps/client/src/app/components/markets/markets.component.ts
- 47
+ 46
libs/ui/src/lib/i18n.ts
@@ -2610,11 +2622,11 @@
Gier
apps/client/src/app/components/home-market/home-market.component.ts
- 43
+ 42
apps/client/src/app/components/markets/markets.component.ts
- 48
+ 47
libs/ui/src/lib/i18n.ts
@@ -2626,7 +2638,7 @@
Filtern nach...
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 385
+ 383
@@ -2662,11 +2674,11 @@
Das Formular konnte nicht validiert werden
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 554
+ 570
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 557
+ 573
@@ -2682,7 +2694,7 @@
Benchmark
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 376
+ 379
apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts
@@ -2702,7 +2714,7 @@
Von der Analyse ausgenommen
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 267
+ 274
@@ -2710,7 +2722,7 @@
Automatisch
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 70
+ 69
apps/client/src/app/components/user-account-settings/user-account-settings.html
@@ -2746,7 +2758,7 @@
Gesamtbetrag
apps/client/src/app/components/investment-chart/investment-chart.component.ts
- 143
+ 146
@@ -2798,7 +2810,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 326
+ 327
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -2806,7 +2818,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 290
+ 286
libs/ui/src/lib/i18n.ts
@@ -2822,7 +2834,7 @@
Symbol
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 68
+ 77
apps/client/src/app/components/admin-market-data/admin-market-data.html
@@ -2838,7 +2850,7 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 315
+ 318
libs/ui/src/lib/i18n.ts
@@ -2862,7 +2874,7 @@
Bargeld
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 212
+ 219
libs/ui/src/lib/i18n.ts
@@ -2910,7 +2922,7 @@
Authentifizierung
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 35
+ 54
@@ -2974,7 +2986,7 @@
Notfallfonds
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 164
+ 168
apps/client/src/app/pages/features/features-page.html
@@ -2994,7 +3006,7 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 437
+ 451
@@ -3006,7 +3018,7 @@
apps/client/src/app/pages/public/public-page.html
- 196
+ 195
libs/ui/src/lib/benchmark/benchmark.component.html
@@ -3014,11 +3026,11 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 439
+ 453
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 452
+ 467
libs/ui/src/lib/top-holdings/top-holdings.component.html
@@ -3122,7 +3134,7 @@
Symbol Zuordnung
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 384
+ 387
@@ -3154,7 +3166,7 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 365
+ 372
apps/client/src/app/pages/features/features-page.html
@@ -3162,11 +3174,11 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 202
+ 198
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 76
+ 75
libs/ui/src/lib/i18n.ts
@@ -3186,7 +3198,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 342
+ 343
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -3194,7 +3206,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 309
+ 305
libs/ui/src/lib/i18n.ts
@@ -3214,7 +3226,7 @@
Daten validieren...
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 299
+ 293
@@ -3230,7 +3242,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html
- 71
+ 67
@@ -3238,7 +3250,7 @@
Marktdaten
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 398
+ 403
libs/common/src/lib/routes/routes.ts
@@ -3290,7 +3302,7 @@
Jährlich
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 92
+ 91
@@ -3298,7 +3310,7 @@
Dividenden importieren
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 137
+ 136
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -3314,7 +3326,7 @@
Gültig bis
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 74
+ 86
libs/ui/src/lib/membership-card/membership-card.component.html
@@ -3353,6 +3365,14 @@
22
+
+ No Activities
+ Keine Aktivitäten
+
+ apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
+ 145
+
+
Retirement Provision
Altersvorsorge
@@ -3626,11 +3646,11 @@
Das Anlageprofil konnte nicht gespeichert werden
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 588
+ 604
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 591
+ 607
@@ -3650,7 +3670,7 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 88
+ 92
@@ -3822,7 +3842,7 @@
Möchtest du diese Aktivitäten wirklich löschen?
libs/ui/src/lib/activities-table/activities-table.component.ts
- 278
+ 282
@@ -3833,6 +3853,14 @@
306
+
+ Explore
+ Entdecke
+
+ apps/client/src/app/pages/resources/overview/resources-overview.component.html
+ 11
+
+
By
Bis
@@ -3854,7 +3882,7 @@
Aktuelles Jahr
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 199
+ 205
@@ -3870,11 +3898,11 @@
Url
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 419
+ 422
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 550
+ 553
apps/client/src/app/components/admin-platform/admin-platform.component.html
@@ -3890,7 +3918,7 @@
Das Anlageprofil wurde gespeichert
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 578
+ 594
@@ -3898,7 +3926,7 @@
Möchtest du diese Plattform wirklich löschen?
apps/client/src/app/components/admin-platform/admin-platform.component.ts
- 106
+ 111
@@ -3906,7 +3934,7 @@
Plattformen
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 195
+ 212
@@ -3914,7 +3942,7 @@
Cash-Bestand aktualisieren
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 112
+ 108
@@ -4094,7 +4122,7 @@
Verbindlichkeiten
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 295
+ 302
apps/client/src/app/pages/features/features-page.html
@@ -4250,7 +4278,7 @@
Scraper Konfiguration
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 471
+ 474
@@ -4494,7 +4522,7 @@
ETFs ohne Länder
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 136
+ 135
@@ -4502,7 +4530,7 @@
ETFs ohne Sektoren
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 141
+ 140
@@ -4510,7 +4538,7 @@
Anlagevermögen
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 226
+ 233
@@ -4682,7 +4710,7 @@
Job ID
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 34
+ 43
@@ -4738,11 +4766,11 @@
Währungen
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 131
+ 130
apps/client/src/app/pages/public/public-page.html
- 96
+ 95
@@ -4790,11 +4818,11 @@
Die Scraper Konfiguration konnte nicht geparsed werden
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 509
+ 525
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 512
+ 528
@@ -5456,7 +5484,7 @@
Gebühr
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 262
+ 258
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -5488,7 +5516,7 @@
Möchtest du diesen Tag wirklich löschen?
apps/client/src/app/components/admin-tag/admin-tag.component.ts
- 103
+ 108
@@ -5556,7 +5584,7 @@
Mitgliedschaft
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 48
+ 67
libs/common/src/lib/routes/routes.ts
@@ -5588,7 +5616,7 @@
Anlageprofil
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 52
+ 61
@@ -5712,7 +5740,7 @@
Ups! Die historischen Daten konnten nicht geparsed werden.
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts
- 262
+ 284
@@ -5720,7 +5748,7 @@
Möchtest du diese Systemmeldung wirklich löschen?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 206
+ 209
@@ -5744,7 +5772,7 @@
Cash-Bestände
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
- 148
+ 146
@@ -5764,7 +5792,7 @@
Möchtest du diesen Cash-Bestand wirklich löschen?
libs/ui/src/lib/account-balances/account-balances.component.ts
- 120
+ 113
@@ -5780,7 +5808,7 @@
Der aktuelle Marktpreis ist
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 706
+ 722
@@ -5788,7 +5816,7 @@
Test
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 568
+ 571
@@ -5876,11 +5904,11 @@
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 81
+ 80
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 97
+ 96
apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
@@ -5900,7 +5928,7 @@
Position abschliessen
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 442
+ 447
@@ -5940,7 +5968,7 @@
Seit Wochenbeginn
libs/ui/src/lib/assistant/assistant.component.ts
- 367
+ 366
@@ -5948,11 +5976,11 @@
WTD
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 191
+ 197
libs/ui/src/lib/assistant/assistant.component.ts
- 367
+ 366
@@ -5960,7 +5988,7 @@
Seit Monatsbeginn
libs/ui/src/lib/assistant/assistant.component.ts
- 371
+ 370
@@ -5968,11 +5996,11 @@
MTD
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 195
+ 201
libs/ui/src/lib/assistant/assistant.component.ts
- 371
+ 370
@@ -5980,7 +6008,7 @@
Seit Jahresbeginn
libs/ui/src/lib/assistant/assistant.component.ts
- 375
+ 374
@@ -6016,7 +6044,7 @@
Jahr
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 203
+ 209
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
@@ -6028,7 +6056,7 @@
libs/ui/src/lib/assistant/assistant.component.ts
- 385
+ 384
@@ -6036,11 +6064,11 @@
Jahre
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 207
+ 213
libs/ui/src/lib/assistant/assistant.component.ts
- 409
+ 408
@@ -6056,7 +6084,7 @@
Finanzmarktdaten synchronisieren
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 587
+ 594
apps/client/src/app/components/admin-overview/admin-overview.html
@@ -6068,7 +6096,7 @@
Allgemein
apps/client/src/app/pages/faq/faq-page.component.ts
- 49
+ 41
@@ -6076,7 +6104,7 @@
Cloud
apps/client/src/app/pages/faq/faq-page.component.ts
- 54
+ 46
libs/common/src/lib/routes/routes.ts
@@ -6088,7 +6116,7 @@
Self-Hosting
apps/client/src/app/pages/faq/faq-page.component.ts
- 60
+ 52
libs/common/src/lib/routes/routes.ts
@@ -6129,7 +6157,7 @@
Aktiv
apps/client/src/app/components/home-holdings/home-holdings.component.ts
- 64
+ 63
@@ -6137,7 +6165,7 @@
Abgeschlossen
apps/client/src/app/components/home-holdings/home-holdings.component.ts
- 65
+ 64
@@ -6169,7 +6197,7 @@
Job ausführen
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 220
+ 229
@@ -6177,7 +6205,7 @@
Priorität
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 96
+ 105
@@ -6233,7 +6261,7 @@
Möchtest du dieses Ghostfolio Konto wirklich schliessen?
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 208
+ 205
@@ -6281,7 +6309,7 @@
Berücksichtigen in
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 374
+ 377
@@ -6289,7 +6317,7 @@
Ups! Beim Einrichten der biometrischen Authentifizierung ist ein Fehler aufgetreten.
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 336
+ 333
@@ -6305,7 +6333,7 @@
Benchmarks
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 126
+ 125
@@ -6353,7 +6381,7 @@
Möchtest du deine persönliche Anlagestrategie verfeinern ?
apps/client/src/app/pages/public/public-page.html
- 234
+ 233
@@ -6685,7 +6713,7 @@
Fehler
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 697
+ 713
@@ -6737,7 +6765,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 592
+ 599
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -6769,7 +6797,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 345
+ 341
apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html
@@ -6777,7 +6805,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html
- 46
+ 47
libs/ui/src/lib/i18n.ts
@@ -6789,7 +6817,7 @@
Schliessen
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 594
+ 601
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -6815,13 +6843,17 @@
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
68
+
+ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
+ 127
+
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
107
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 347
+ 343
libs/ui/src/lib/i18n.ts
@@ -6833,7 +6865,7 @@
Rolle
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 14
+ 33
@@ -6857,7 +6889,7 @@
Portfolio Snapshot
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 56
+ 65
@@ -6924,6 +6956,14 @@
42
+
+ has been copied to the clipboard
+ wurde in die Zwischenablage kopiert
+
+ libs/ui/src/lib/value/value.component.ts
+ 180
+
+
From the beginning
Seit Beginn
@@ -7089,7 +7129,7 @@
API-Schlüssel setzen
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 171
+ 188
@@ -7125,7 +7165,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 45
+ 44
libs/common/src/lib/routes/routes.ts
@@ -7141,7 +7181,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 34
+ 33
libs/common/src/lib/routes/routes.ts
@@ -7195,7 +7235,7 @@
von
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 135
+ 152
@@ -7203,7 +7243,7 @@
täglichen Anfragen
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 137
+ 154
@@ -7211,7 +7251,7 @@
API-Schlüssel löschen
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 161
+ 178
@@ -7219,7 +7259,7 @@
Möchtest du den API-Schlüssel wirklich löschen?
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 127
+ 133
@@ -7239,7 +7279,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 98
+ 117
@@ -7311,7 +7351,7 @@
Speichern
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 603
+ 610
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -7347,11 +7387,11 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 356
+ 352
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html
- 48
+ 49
@@ -7363,7 +7403,7 @@
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 260
+ 257
@@ -7387,7 +7427,7 @@
Bitte gebe deinen Ghostfolio API-Schlüssel ein.
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 146
+ 152
@@ -7403,7 +7443,7 @@
KI-Anweisung wurde in die Zwischenablage kopiert
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 201
+ 199
@@ -7419,7 +7459,7 @@
Verzögert
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 225
+ 231
@@ -7427,7 +7467,7 @@
Sofort
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 229
+ 235
@@ -7435,7 +7475,7 @@
Standardmarktpreis
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 481
+ 484
@@ -7443,7 +7483,7 @@
Modus
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 518
+ 521
@@ -7451,7 +7491,7 @@
Selektor
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 534
+ 537
@@ -7459,7 +7499,7 @@
HTTP Request-Headers
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 494
+ 497
@@ -7467,7 +7507,7 @@
Tagesende
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 225
+ 231
@@ -7475,7 +7515,7 @@
in Echtzeit
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 229
+ 235
@@ -7483,7 +7523,7 @@
Öffne Duck.ai
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 202
+ 200
@@ -7503,7 +7543,7 @@
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 368
+ 377
@@ -7515,7 +7555,7 @@
apps/client/src/app/components/home-overview/home-overview.component.ts
- 55
+ 54
libs/ui/src/lib/holdings-table/holdings-table.component.html
@@ -7523,11 +7563,11 @@
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 368
+ 377
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 381
+ 390
@@ -7631,11 +7671,11 @@
Sicherheits-Token
apps/client/src/app/components/admin-users/admin-users.component.ts
- 236
+ 235
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 170
+ 167
@@ -7643,7 +7683,7 @@
Möchtest du für diesen Benutzer wirklich ein neues Sicherheits-Token generieren?
apps/client/src/app/components/admin-users/admin-users.component.ts
- 241
+ 240
@@ -7651,7 +7691,7 @@
Konto, Position oder Seite finden...
libs/ui/src/lib/assistant/assistant.component.ts
- 151
+ 115
@@ -7716,7 +7756,7 @@
( ) wird bereits verwendet.
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 633
+ 649
@@ -7724,7 +7764,7 @@
Bei der Änderung zu ( ) ist ein Fehler aufgetreten.
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 641
+ 657
@@ -7764,7 +7804,7 @@
jemand
apps/client/src/app/pages/public/public-page.component.ts
- 59
+ 61
@@ -7796,7 +7836,7 @@
Möchtest du diesen Eintrag wirklich löschen?
libs/ui/src/lib/benchmark/benchmark.component.ts
- 144
+ 139
@@ -7837,12 +7877,12 @@
Demo Benutzerkonto wurde synchronisiert.
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 274
+ 277
Sync Demo User Account
- Synchronisiere Demo Benutzerkonto
+ Synchronisiere Demo Benutzerkonto
apps/client/src/app/components/admin-overview/admin-overview.html
195
@@ -7872,7 +7912,7 @@
150
-
+
Fee Ratio
Gebührenverhältnis
@@ -7880,17 +7920,17 @@
152
-
- The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
- Die Gebühren übersteigen ${thresholdMax}% deiner ursprünglichen Investition (${feeRatio}%)
+
+ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
+ Die Gebühren übersteigen ${thresholdMax}% deines gesamten Investitionsvolumens (${feeRatio}%)
apps/client/src/app/pages/i18n/i18n-page.html
154
-
- The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
- Die Gebühren übersteigen ${thresholdMax}% deiner ursprünglichen Investition (${feeRatio}%) nicht
+
+ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
+ Die Gebühren übersteigen ${thresholdMax}% deines gesamten Investitionsvolumens (${feeRatio}%) nicht
apps/client/src/app/pages/i18n/i18n-page.html
158
@@ -8051,7 +8091,7 @@
Aktueller Monat
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 195
+ 201
@@ -8059,11 +8099,11 @@
neu
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 67
+ 79
apps/client/src/app/pages/admin/admin-page.component.ts
- 56
+ 53
@@ -8220,7 +8260,7 @@
Möchtest du wirklich ein neues Sicherheits-Token generieren?
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 175
+ 172
@@ -8244,7 +8284,7 @@
Aktien
apps/client/src/app/components/markets/markets.component.ts
- 52
+ 51
apps/client/src/app/pages/features/features-page.html
@@ -8256,7 +8296,7 @@
Kryptowährungen
apps/client/src/app/components/markets/markets.component.ts
- 53
+ 52
apps/client/src/app/pages/features/features-page.html
@@ -8276,7 +8316,7 @@
Anlageprofil verwalten
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 466
+ 471
@@ -8696,7 +8736,7 @@
Registrierungsdatum
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 26
+ 45
diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf
index 7564e4d80..26c76ef6c 100644
--- a/apps/client/src/locales/messages.es.xlf
+++ b/apps/client/src/locales/messages.es.xlf
@@ -32,7 +32,7 @@
Grantee
- Beneficiario
+ Usuario autorizado
apps/client/src/app/components/access-table/access-table.component.html
11
@@ -51,7 +51,7 @@
Tipo
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 48
+ 57
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
@@ -76,7 +76,7 @@
Revoke
- Revoca
+ Revocar
apps/client/src/app/components/access-table/access-table.component.html
96
@@ -92,7 +92,7 @@
Do you really want to revoke this granted access?
- ¿Quieres revocar el acceso concedido?
+ ¿Seguro que quieres revocar el acceso concedido?
apps/client/src/app/components/access-table/access-table.component.ts
113
@@ -107,7 +107,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 309
+ 310
apps/client/src/app/components/admin-platform/admin-platform.component.html
@@ -119,7 +119,7 @@
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 46
+ 58
apps/client/src/app/components/admin-tag/admin-tag.component.html
@@ -135,7 +135,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 139
+ 135
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -179,15 +179,15 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 205
+ 201
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 208
+ 204
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 211
+ 207
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -224,7 +224,7 @@
Edit
- Edita
+ Editar
apps/client/src/app/components/access-table/access-table.component.html
76
@@ -235,11 +235,11 @@
apps/client/src/app/components/admin-platform/admin-platform.component.html
- 74
+ 78
apps/client/src/app/components/admin-tag/admin-tag.component.html
- 67
+ 71
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -252,7 +252,7 @@
Delete
- Elimina
+ Eliminar
apps/client/src/app/components/admin-market-data/admin-market-data.html
289
@@ -267,11 +267,15 @@
apps/client/src/app/components/admin-platform/admin-platform.component.html
- 85
+ 89
apps/client/src/app/components/admin-tag/admin-tag.component.html
- 78
+ 82
+
+
+ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
+ 22
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -292,18 +296,18 @@
Do you really want to delete this account?
- ¿Estás seguro de eliminar esta cuenta?
+ ¿Seguro que quieres eliminar esta cuenta?
libs/ui/src/lib/accounts-table/accounts-table.component.ts
- 150
+ 148
Delete Jobs
- Elimina los trabajos
+ Eliminar trabajos
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 193
+ 202
@@ -311,7 +315,7 @@
Fuente de datos
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 82
+ 91
apps/client/src/app/components/admin-market-data/admin-market-data.html
@@ -323,7 +327,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 155
+ 151
libs/ui/src/lib/i18n.ts
@@ -335,7 +339,7 @@
Intentos
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 120
+ 129
@@ -343,7 +347,7 @@
Creado
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 134
+ 143
@@ -351,7 +355,7 @@
Finalizado
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 143
+ 152
@@ -359,16 +363,16 @@
Estado
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 152
+ 161
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 92
+ 104
and is driven by the efforts of its contributors
- y es impulsado por los esfuerzos de sus contribuidores
+ y es impulsado por los esfuerzos de sus colaboradores
apps/client/src/app/pages/about/overview/about-overview-page.html
49
@@ -376,10 +380,10 @@
Asset Profiles
- Perfiles de activos.
+ Perfiles de activos
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 106
+ 123
libs/ui/src/lib/assistant/assistant.html
@@ -391,40 +395,40 @@
Datos históricos del mercado
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 54
+ 63
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 448
+ 451
View Data
- Visualiza los datos
+ Ver datos
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 208
+ 217
View Stacktrace
- Visualiza Stacktrace
+ Ver Stacktrace
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 216
+ 225
Delete Job
- Elimina el trabajo
+ Eliminar trabajo
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 224
+ 233
Details for
- Detalles para
+ Detalles de
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html
2
@@ -435,7 +439,7 @@
Fecha
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 161
+ 157
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -468,7 +472,7 @@
First Activity
- Primera actividad
+ Primera operación
apps/client/src/app/components/admin-market-data/admin-market-data.html
147
@@ -488,7 +492,7 @@
Activity Count
- Recuento de actividad
+ Número de operaciones
apps/client/src/app/components/admin-overview/admin-overview.html
19
@@ -503,23 +507,23 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html
- 44
+ 40
Do you really want to delete this coupon?
- ¿Estás seguro de eliminar este cupón?
+ ¿Seguro que quieres eliminar este cupón?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 193
+ 196
Do you really want to flush the cache?
- ¿Estás seguro de limpiar la caché?
+ ¿Seguro que quieres limpiar la caché?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 230
+ 233
@@ -527,7 +531,7 @@
Por favor, establece tu mensaje del sistema:
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 250
+ 253
@@ -540,7 +544,7 @@
per User
- por usario
+ por usuario
apps/client/src/app/components/admin-overview/admin-overview.html
28
@@ -548,7 +552,7 @@
Gather Profile Data
- Recoger los datos del perfil
+ Recopilar datos del perfil
apps/client/src/app/components/admin-market-data/admin-market-data.html
234
@@ -612,7 +616,7 @@
Housekeeping
- Tareas domésticas
+ Limpieza del sistema
apps/client/src/app/components/admin-overview/admin-overview.html
184
@@ -628,7 +632,7 @@
Do you really want to delete this user?
- ¿Estás seguro de eliminar este usuario?
+ ¿Seguro que quieres eliminar este usuario?
apps/client/src/app/components/admin-users/admin-users.component.ts
215
@@ -652,7 +656,7 @@
No auto-renewal on membership.
- No se renueva automáticamente la membresía.
+ Sin renovación automática de la membresía.
apps/client/src/app/components/user-account-membership/user-account-membership.html
74
@@ -660,14 +664,14 @@
Engagement per Day
- Contratación diaria
+ Interacción diaria
apps/client/src/app/components/admin-users/admin-users.html
140
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 89
+ 108
@@ -680,7 +684,7 @@
Current Market Mood
- Estado de ánimo del mercado
+ Sentimiento del mercado
apps/client/src/app/components/fear-and-greed-index/fear-and-greed-index.component.html
12
@@ -723,7 +727,7 @@
apps/client/src/app/pages/public/public-page.html
- 242
+ 241
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
@@ -739,7 +743,7 @@
apps/client/src/app/components/header/header.component.ts
- 297
+ 298
apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html
@@ -756,26 +760,26 @@
Oops! Incorrect Security Token.
- Vaya! Token de seguridad incorrecto.
+ ¡Vaya! Token de seguridad incorrecto.
apps/client/src/app/components/header/header.component.ts
- 312
+ 313
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 154
+ 152
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 193
+ 191
Manage Activities
- Gestión de las operaciones
+ Gestionar operaciones
apps/client/src/app/components/home-holdings/home-holdings.html
- 67
+ 64
@@ -891,7 +895,7 @@
Rendimiento bruto absoluto
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 73
+ 77
@@ -899,7 +903,7 @@
Rendimiento neto absoluto
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 107
+ 111
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
@@ -911,7 +915,7 @@
Rendimiento neto
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 123
+ 127
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
@@ -923,15 +927,15 @@
Total de activos
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 149
+ 153
Buying Power
- Capacidad de compra
+ Poder adquisitivo
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 241
+ 248
@@ -939,7 +943,7 @@
Patrimonio neto
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 317
+ 324
@@ -947,12 +951,12 @@
Rendimiento anualizado
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 331
+ 338
Please set the amount of your emergency fund.
- Por favor, ingresa la cantidad de tu fondo de emergencia:
+ Por favor, ingresa la cantidad de tu fondo de emergencia.
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.ts
111
@@ -967,7 +971,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 396
+ 399
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -975,7 +979,7 @@
apps/client/src/app/pages/public/public-page.html
- 114
+ 113
@@ -987,7 +991,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 407
+ 410
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -999,7 +1003,7 @@
Etiquetas
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 201
+ 218
libs/ui/src/lib/tags-selector/tags-selector.component.html
@@ -1012,10 +1016,10 @@
Report Data Glitch
- Reporta un anomalía de los datos
+ Reportar anomalía en los datos
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 451
+ 456
@@ -1043,7 +1047,7 @@
Mostrar todos
libs/ui/src/lib/holdings-table/holdings-table.component.html
- 216
+ 212
@@ -1055,19 +1059,19 @@
libs/ui/src/lib/assistant/assistant.component.ts
- 363
+ 362
YTD
- Desde principio de año
+ YTD
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 199
+ 205
libs/ui/src/lib/assistant/assistant.component.ts
- 375
+ 374
@@ -1075,11 +1079,11 @@
1 año
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 203
+ 209
libs/ui/src/lib/assistant/assistant.component.ts
- 385
+ 384
@@ -1087,16 +1091,16 @@
5 años
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 207
+ 213
libs/ui/src/lib/assistant/assistant.component.ts
- 409
+ 408
Performance with currency effect
- Rendimiento con el efecto del tipo de cambio de divisa
+ Rendimiento con el efecto de la divisa
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
135
@@ -1107,11 +1111,11 @@
Máximo
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 211
+ 217
libs/ui/src/lib/assistant/assistant.component.ts
- 415
+ 414
@@ -1127,12 +1131,12 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 196
+ 195
About
- Sobre
+ Acerca de
apps/client/src/app/components/footer/footer.component.html
20
@@ -1184,7 +1188,7 @@
Please enter your coupon code.
- Por favor, ingresa tu código de cupón:
+ Por favor, ingresa tu código de cupón.
apps/client/src/app/components/user-account-membership/user-account-membership.component.ts
210
@@ -1192,7 +1196,7 @@
Could not redeem coupon code
- No se puede canjear este código de cupón
+ No se pudo canjear el código de cupón
apps/client/src/app/components/user-account-membership/user-account-membership.component.ts
174
@@ -1200,7 +1204,7 @@
Coupon code has been redeemed
- El codigo de cupón ha sido canjeado
+ El código del cupón ha sido canjeado
apps/client/src/app/components/user-account-membership/user-account-membership.component.ts
187
@@ -1208,7 +1212,7 @@
Reload
- Refrescar
+ Recargar
apps/client/src/app/components/user-account-membership/user-account-membership.component.ts
188
@@ -1216,10 +1220,10 @@
Do you really want to remove this sign in method?
- ¿Estás seguro de eliminar este método de acceso?
+ ¿Seguro que quieres eliminar este método de acceso?
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 282
+ 279
@@ -1244,7 +1248,7 @@
Try Premium
- Prueba Premium
+ Probar Premium
apps/client/src/app/components/user-account-membership/user-account-membership.html
53
@@ -1252,7 +1256,7 @@
Redeem Coupon
- Canjea el cupón
+ Canjear cupón
apps/client/src/app/components/user-account-membership/user-account-membership.html
67
@@ -1276,10 +1280,10 @@
Locale
- Ubicación
+ Configuración regional
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 509
+ 512
apps/client/src/app/components/user-account-settings/user-account-settings.html
@@ -1316,7 +1320,7 @@
User ID
- ID usuario
+ ID de usuario
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
51
@@ -1327,7 +1331,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 11
+ 30
@@ -1375,11 +1379,11 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 375
+ 381
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 66
+ 85
apps/client/src/app/pages/accounts/accounts-page.html
@@ -1396,7 +1400,7 @@
Update account
- Editar cuenta
+ Actualizar cuenta
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
8
@@ -1412,14 +1416,14 @@
Currency
- Divisa base
+ Divisa
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
199
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 316
+ 317
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -1431,7 +1435,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 145
+ 141
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -1476,7 +1480,7 @@
Account ID
- ID cuenta
+ ID de cuenta
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
96
@@ -1611,12 +1615,12 @@
Como estás conectado, no puedes acceder a la cuenta de demostración.
apps/client/src/app/pages/demo/demo-page.component.ts
- 35
+ 32
Frequently Asked Questions (FAQ)
- Preguntas más frecuentes (FAQ)
+ Preguntas frecuentes (FAQ)
apps/client/src/app/components/footer/footer.component.html
33
@@ -1657,6 +1661,10 @@
Overview
Visión general
+
+ apps/client/src/app/components/admin-jobs/admin-jobs.html
+ 7
+
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
114
@@ -1675,11 +1683,11 @@
apps/client/src/app/pages/admin/admin-page.component.ts
- 48
+ 45
apps/client/src/app/pages/resources/resources-page.component.ts
- 30
+ 29
libs/common/src/lib/routes/routes.ts
@@ -1695,7 +1703,7 @@
Mercados
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 378
+ 381
apps/client/src/app/components/footer/footer.component.html
@@ -1719,7 +1727,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 40
+ 39
libs/common/src/lib/routes/routes.ts
@@ -1780,7 +1788,7 @@
By Holding
- Por participación
+ Por posiciones
apps/client/src/app/pages/portfolio/allocations/allocations-page.html
107
@@ -1819,7 +1827,7 @@
apps/client/src/app/pages/public/public-page.html
- 151
+ 150
@@ -1844,7 +1852,7 @@
Top
- Lo mejor
+ Mejores
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
305
@@ -1852,7 +1860,7 @@
Bottom
- Lo peor
+ Peores
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
354
@@ -1876,7 +1884,7 @@
Holdings
- Participaciones
+ Posiciones
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
102
@@ -1904,7 +1912,7 @@
Update activity
- Actualizar opereación
+ Actualizar operación
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
10
@@ -1915,7 +1923,7 @@
Semana actual
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 191
+ 197
@@ -1959,7 +1967,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 124
+ 120
@@ -1971,7 +1979,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 189
+ 185
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -1987,7 +1995,7 @@
Precio unitario
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 214
+ 210
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -1999,7 +2007,7 @@
Nota
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 432
+ 435
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
@@ -2007,19 +2015,19 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 275
+ 271
Activities
- Operación
+ Operaciones
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
86
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
- 115
+ 113
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
@@ -2039,11 +2047,11 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 342
+ 348
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 75
+ 94
apps/client/src/app/pages/portfolio/activities/activities-page.html
@@ -2063,7 +2071,7 @@
Importando datos...
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 175
+ 174
@@ -2071,12 +2079,12 @@
La importación se ha completado
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 185
+ 184
or start a discussion at
- o iniciar una discusión en
+ o inicia una discusión en
apps/client/src/app/pages/about/overview/about-overview-page.html
94
@@ -2143,12 +2151,12 @@
Continentes
apps/client/src/app/pages/public/public-page.html
- 132
+ 131
Sustainable retirement income
- Ingreso sostenible de retiro
+ Ingresos sostenibles para la jubilación
apps/client/src/app/pages/portfolio/fire/fire-page.html
41
@@ -2156,10 +2164,10 @@
Ghostfolio empowers you to keep track of your wealth.
- Ghostfolio te permite hacer un seguimiento de tu riqueza.
+ Ghostfolio te permite hacer un seguimiento de tu patrimonio.
apps/client/src/app/pages/public/public-page.html
- 238
+ 237
@@ -2189,6 +2197,10 @@
apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html
88
+
+ libs/ui/src/lib/value/value.component.html
+ 18
+
Resources
@@ -2304,10 +2316,10 @@
Do you really want to delete this activity?
- ¿Estás seguro de eliminar esta operación?
+ ¿Seguro que quieres eliminar esta operación?
libs/ui/src/lib/activities-table/activities-table.component.ts
- 288
+ 292
@@ -2320,7 +2332,7 @@
contact us
- contactarnos
+ contáctanos
apps/client/src/app/pages/pricing/pricing-page.html
336
@@ -2336,7 +2348,7 @@
Annual Interest Rate
- Tipo de interés anual
+ Tasa de interés anual
libs/ui/src/lib/fire-calculator/fire-calculator.component.html
21
@@ -2368,14 +2380,14 @@
Oops! Something went wrong.
- Vaya! Algo no funcionó bien.
+ ¡Vaya! Algo no funcionó bien.
apps/client/src/app/core/http-response.interceptor.ts
86
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 193
+ 192
@@ -2391,7 +2403,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 195
+ 194
@@ -2415,15 +2427,15 @@
apps/client/src/app/pages/public/public-page.html
- 168
+ 167
Latest activities
- Últimas actividades
+ Últimas operaciones
apps/client/src/app/pages/public/public-page.html
- 211
+ 210
@@ -2443,7 +2455,7 @@
apps/client/src/app/pages/public/public-page.html
- 186
+ 185
@@ -2455,7 +2467,7 @@
apps/client/src/app/pages/public/public-page.html
- 177
+ 176
@@ -2487,7 +2499,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 53
+ 72
@@ -2511,7 +2523,7 @@
Ahorros
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 397
+ 424
@@ -2523,11 +2535,11 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 352
+ 359
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 387
+ 414
libs/ui/src/lib/i18n.ts
@@ -2547,7 +2559,7 @@
Depósito
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 377
+ 404
@@ -2555,7 +2567,7 @@
Mensual
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 91
+ 90
@@ -2579,11 +2591,11 @@
Miedo
apps/client/src/app/components/home-market/home-market.component.ts
- 42
+ 41
apps/client/src/app/components/markets/markets.component.ts
- 47
+ 46
libs/ui/src/lib/i18n.ts
@@ -2595,11 +2607,11 @@
Codicia
apps/client/src/app/components/home-market/home-market.component.ts
- 43
+ 42
apps/client/src/app/components/markets/markets.component.ts
- 48
+ 47
libs/ui/src/lib/i18n.ts
@@ -2611,12 +2623,12 @@
Filtrar por...
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 385
+ 383
Hello, has shared a Portfolio with you!
- Hola, ha compartido una Cartera contigo!
+ ¡Hola, ha compartido una cartera contigo!
apps/client/src/app/pages/public/public-page.html
5
@@ -2644,10 +2656,10 @@
Benchmark
- Benchmark
+ Índice de referencia
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 376
+ 379
apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts
@@ -2659,11 +2671,11 @@
No se pudo validar el formulario
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 554
+ 570
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 557
+ 573
@@ -2687,7 +2699,7 @@
Excluido del análisis
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 267
+ 274
@@ -2695,7 +2707,7 @@
Automático
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 70
+ 69
apps/client/src/app/components/user-account-settings/user-account-settings.html
@@ -2731,12 +2743,12 @@
Importe total
apps/client/src/app/components/investment-chart/investment-chart.component.ts
- 143
+ 146
Portfolio Evolution
- Evolución cartera
+ Evolución de la cartera
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
407
@@ -2783,7 +2795,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 326
+ 327
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -2791,7 +2803,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 290
+ 286
libs/ui/src/lib/i18n.ts
@@ -2807,7 +2819,7 @@
Símbolo
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 68
+ 77
apps/client/src/app/components/admin-market-data/admin-market-data.html
@@ -2823,7 +2835,7 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 315
+ 318
libs/ui/src/lib/i18n.ts
@@ -2847,7 +2859,7 @@
Efectivo
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 212
+ 219
libs/ui/src/lib/i18n.ts
@@ -2856,7 +2868,7 @@
Commodity
- Bien
+ Materia prima
libs/ui/src/lib/i18n.ts
47
@@ -2864,7 +2876,7 @@
Equity
- Capital
+ Renta variable
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
57
@@ -2895,7 +2907,7 @@
Autenticación
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 35
+ 54
@@ -2959,7 +2971,7 @@
Fondo de emergencia
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 164
+ 168
apps/client/src/app/pages/features/features-page.html
@@ -2979,7 +2991,7 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 437
+ 451
@@ -2991,7 +3003,7 @@
apps/client/src/app/pages/public/public-page.html
- 196
+ 195
libs/ui/src/lib/benchmark/benchmark.component.html
@@ -2999,11 +3011,11 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 439
+ 453
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 452
+ 467
libs/ui/src/lib/top-holdings/top-holdings.component.html
@@ -3044,7 +3056,7 @@
If you retire today, you would be able to withdraw
- Si te retirases hoy, podrías sacar
+ Si te jubilas hoy, podrías retirar
apps/client/src/app/pages/portfolio/fire/fire-page.html
68
@@ -3068,7 +3080,7 @@
The following file formats are supported:
- Los siguientes formatos de archivo están soportados:
+ Los siguientes formatos de archivo son compatibles:
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html
90
@@ -3088,7 +3100,7 @@
Activities Count
- Recuento de actividades
+ Número de operaciones
apps/client/src/app/components/admin-market-data/admin-market-data.html
156
@@ -3096,7 +3108,7 @@
Refresh
- Refrescar
+ Actualizar
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
21
@@ -3107,12 +3119,12 @@
Mapeo de símbolos
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 384
+ 387
Looking for a student discount?
- ¿Buscando un descuento para estudiantes?
+ ¿Buscas un descuento para estudiantes?
apps/client/src/app/pages/pricing/pricing-page.html
342
@@ -3131,7 +3143,7 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 365
+ 372
apps/client/src/app/pages/features/features-page.html
@@ -3139,11 +3151,11 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 202
+ 198
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 76
+ 75
libs/ui/src/lib/i18n.ts
@@ -3171,7 +3183,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 342
+ 343
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -3179,7 +3191,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 309
+ 305
libs/ui/src/lib/i18n.ts
@@ -3199,7 +3211,7 @@
Validando datos...
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 299
+ 293
@@ -3215,7 +3227,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html
- 71
+ 67
@@ -3223,7 +3235,7 @@
Datos del mercado
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 398
+ 403
libs/common/src/lib/routes/routes.ts
@@ -3252,7 +3264,7 @@
Holding
- Participación
+ Posición
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html
32
@@ -3275,15 +3287,15 @@
Anual
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 92
+ 91
Import Dividends
- Importar Dividendos
+ Importar dividendos
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 137
+ 136
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -3299,7 +3311,7 @@
Válido hasta
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 74
+ 86
libs/ui/src/lib/membership-card/membership-card.component.html
@@ -3324,7 +3336,7 @@
Higher Risk
- Riesgo mayor
+ Mayor riesgo
libs/ui/src/lib/i18n.ts
20
@@ -3338,6 +3350,14 @@
22
+
+ No Activities
+ Sin operaciones
+
+ apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
+ 145
+
+
Retirement Provision
Provisión de jubilación
@@ -3348,7 +3368,7 @@
Everything in Basic , plus
- Todo en Básico , más
+ Todo lo incluido en Basic , más
apps/client/src/app/pages/pricing/pricing-page.html
199
@@ -3364,7 +3384,7 @@
Protection for sensitive information like absolute performances and quantity values
- Protección de información confidencial como rendimientos absolutos y valores cuantitativos
+ Protección de información confidencial como rendimientos absolutos y cantidades
apps/client/src/app/components/user-account-settings/user-account-settings.html
194
@@ -3388,7 +3408,7 @@
Are you an ambitious investor who needs the full picture?
- ¿Es usted un inversor ambicioso que necesita una visión completa?
+ ¿Eres un inversor ambicioso que necesita una visión completa?
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
15
@@ -3412,7 +3432,7 @@
Performance Benchmarks
- Puntos de referencia de rendimiento
+ Índices de referencia de rendimiento
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
32
@@ -3444,7 +3464,7 @@
and more Features...
- y más características...
+ y más funcionalidades...
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
44
@@ -3460,7 +3480,7 @@
Skip
- Saltar
+ Omitir
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
59
@@ -3516,7 +3536,7 @@
Unlimited Transactions
- Transacciones ilimitadas
+ Operaciones ilimitadas
apps/client/src/app/pages/pricing/pricing-page.html
35
@@ -3540,7 +3560,7 @@
Portfolio Performance
- Rendimiento del Portfolio
+ Rendimiento de la cartera
apps/client/src/app/pages/pricing/pricing-page.html
43
@@ -3552,7 +3572,7 @@
Self-hosted, update manually.
- Auto alojado, actualiza manualmente.
+ Autoalojado, actualiza manualmente.
apps/client/src/app/pages/pricing/pricing-page.html
84
@@ -3572,7 +3592,7 @@
For new investors who are just getting started with trading.
- Para nuevos inversores que estan empezando con el trading.
+ Para nuevos inversores que están empezando con el trading.
apps/client/src/app/pages/pricing/pricing-page.html
119
@@ -3580,7 +3600,7 @@
Fully managed Ghostfolio cloud offering.
- Oferta en la nube de Ghostfolio totalmente administrada.
+ Oferta de Ghostfolio en la nube totalmente gestionada.
apps/client/src/app/pages/pricing/pricing-page.html
150
@@ -3592,7 +3612,7 @@
For ambitious investors who need the full picture of their financial assets.
- Para inversores ambiciosos que necesitan una visión completa de sus activos financieros
+ Para inversores ambiciosos que necesitan una visión completa de sus activos financieros.
apps/client/src/app/pages/pricing/pricing-page.html
193
@@ -3611,11 +3631,11 @@
No se pudo guardar el perfil del activo
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 588
+ 604
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 591
+ 607
@@ -3635,12 +3655,12 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 88
+ 92
Portfolio Allocations
- Distribucion del Portfolio
+ Distribución de la cartera
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
28
@@ -3668,7 +3688,7 @@
Data Import and Export
- Importacion y exportacion de datos
+ Importación y exportación de datos
apps/client/src/app/pages/pricing/pricing-page.html
63
@@ -3680,7 +3700,7 @@
Switch to Ghostfolio Premium easily
- Cambia a Ghostfolio Premium facilmente
+ Cambia a Ghostfolio Premium fácilmente
libs/ui/src/lib/i18n.ts
13
@@ -3696,7 +3716,7 @@
Email and Chat Support
- Soporte a Traves de Email y Chat
+ Soporte a través de correo electrónico y chat
apps/client/src/app/pages/pricing/pricing-page.html
248
@@ -3704,7 +3724,7 @@
Switch to Ghostfolio Premium or Ghostfolio Open Source easily
- Cambie a Ghostfolio Premium o Ghostfolio Open Source fácilmente
+ Cambia a Ghostfolio Premium o Ghostfolio Open Source fácilmente
libs/ui/src/lib/i18n.ts
12
@@ -3712,7 +3732,7 @@
Switch to Ghostfolio Open Source or Ghostfolio Basic easily
- Cambie a Ghostfolio Open Source o Ghostfolio Basic fácilmente
+ Cambia a Ghostfolio Open Source o Ghostfolio Basic fácilmente
libs/ui/src/lib/i18n.ts
14
@@ -3736,7 +3756,7 @@
Professional Data Provider
- Proveedor de datos profesional
+ Proveedor de datos profesional
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
40
@@ -3796,10 +3816,10 @@
Do you really want to delete these activities?
- ¿Realmente deseas eliminar estas actividades?
+ ¿Seguro que quieres eliminar estas operaciones?
libs/ui/src/lib/activities-table/activities-table.component.ts
- 278
+ 282
@@ -3810,6 +3830,14 @@
306
+
+ Explore
+ Explorar
+
+ apps/client/src/app/pages/resources/overview/resources-overview.component.html
+ 11
+
+
By
Por
@@ -3831,12 +3859,12 @@
Año actual
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 199
+ 205
Add platform
- Agregar plataforma
+ Añadir plataforma
apps/client/src/app/components/admin-platform/create-or-update-platform-dialog/create-or-update-platform-dialog.html
10
@@ -3844,14 +3872,14 @@
Url
- ¿La URL?
+ Url
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 419
+ 422
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 550
+ 553
apps/client/src/app/components/admin-platform/admin-platform.component.html
@@ -3864,18 +3892,18 @@
Asset profile has been saved
- El perfil del activo ha sido guardado
+ Perfil del activo guardado
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 578
+ 594
Do you really want to delete this platform?
- ¿Realmente deseas eliminar esta plataforma?
+ ¿Seguro que quieres eliminar esta plataforma?
apps/client/src/app/components/admin-platform/admin-platform.component.ts
- 106
+ 111
@@ -3883,7 +3911,7 @@
Plataformas
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 195
+ 212
@@ -3891,7 +3919,7 @@
Actualizar saldo en efectivo
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 112
+ 108
@@ -3904,7 +3932,7 @@
Upgrade to Ghostfolio Premium today and gain access to exclusive features to enhance your investment experience:
- Actualiza a Ghostfolio Premium hoy y accede a características exclusivas para mejorar tu experiencia de inversión:
+ Actualiza a Ghostfolio Premium hoy y accede a funcionalidades exclusivas para mejorar tu experiencia de inversión:
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
18
@@ -3920,7 +3948,7 @@
Add Platform
- Agregar plataforma
+ Añadir plataforma
apps/client/src/app/components/admin-platform/admin-platform.component.html
9
@@ -3928,7 +3956,7 @@
Settings
- Configuraciones
+ Ajustes
apps/client/src/app/components/user-account-settings/user-account-settings.html
2
@@ -3944,7 +3972,7 @@
This activity already exists.
- Esta actividad ya existe.
+ Esta operación ya existe.
libs/ui/src/lib/i18n.ts
21
@@ -3952,7 +3980,7 @@
Manage Benchmarks
- Gestionar puntos de referencia
+ Gestionar índices de referencia
apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html
35
@@ -3984,7 +4012,7 @@
Select Activities
- Seleccionar dividendos
+ Seleccionar operaciones
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html
115
@@ -4071,7 +4099,7 @@
Pasivos
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 295
+ 302
apps/client/src/app/pages/features/features-page.html
@@ -4144,7 +4172,7 @@
Multi-Accounts
- Cuentas múltiples
+ Múltiples cuentas
apps/client/src/app/pages/features/features-page.html
127
@@ -4152,7 +4180,7 @@
Portfolio Calculations
- Cálculos de portafolio
+ Cálculos de la cartera
apps/client/src/app/pages/features/features-page.html
141
@@ -4168,7 +4196,7 @@
Market Mood
- Modo de mercado
+ Sentimiento del mercado
apps/client/src/app/pages/features/features-page.html
215
@@ -4184,7 +4212,7 @@
Multi-Language
- Multilenguaje
+ Multilingüe
apps/client/src/app/pages/features/features-page.html
259
@@ -4208,7 +4236,7 @@
Liability
- Responsabilidad
+ Pasivo
libs/ui/src/lib/i18n.ts
41
@@ -4216,7 +4244,7 @@
and we share aggregated key metrics of the platform’s performance
- y compartimos agregados métricas clave del rendimiento de la plataforma
+ y compartimos métricas clave agregadas del rendimiento de la plataforma
apps/client/src/app/pages/about/overview/about-overview-page.html
32
@@ -4227,12 +4255,12 @@
Configuración del scraper
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 471
+ 474
Add Asset Profile
- Agregar perfil de activo
+ Añadir perfil de activo
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
7
@@ -4252,7 +4280,7 @@
Discover Open Source Alternatives for Personal Finance Tools
- Descubra alternativas de software libre para herramientas de finanzas personales
+ Descubre alternativas de software de código abierto para herramientas de finanzas personales
apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html
5
@@ -4404,7 +4432,7 @@
Effortlessly track, analyze, and visualize your wealth with Ghostfolio.
- Siga, analice y visualice su patrimonio sin esfuerzo con Ghostfolio.
+ Sigue, analiza y visualiza tu patrimonio sin esfuerzo con Ghostfolio.
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
329
@@ -4448,7 +4476,7 @@
Buy
- Comprar
+ Compra
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
31
@@ -4460,7 +4488,7 @@
Valuable
- Valioso
+ Activo de valor
libs/ui/src/lib/i18n.ts
43
@@ -4471,7 +4499,7 @@
ETFs sin países
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 136
+ 135
@@ -4479,7 +4507,7 @@
ETFs sin sectores
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 141
+ 140
@@ -4487,7 +4515,7 @@
Activos
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 226
+ 233
@@ -4532,7 +4560,7 @@
The source code is fully available as open source software (OSS) under the AGPL-3.0 license
- El código fuente está disponible completamente en software de código abierto (OSS) bajo la licencia AGPL-3.0
+ El código fuente está disponible como software de código abierto (OSS) bajo la licencia AGPL-3.0
apps/client/src/app/pages/about/overview/about-overview-page.html
16
@@ -4556,7 +4584,7 @@
Capture your activities
- Captura tus actividades
+ Captura tus operaciones
apps/client/src/app/components/home-overview/home-overview.html
28
@@ -4564,7 +4592,7 @@
Record your investment activities to keep your portfolio up to date.
- Registra tus actividades de inversión para mantener tu portafolio actualizado.
+ Registra tus operaciones de inversión para mantener tu cartera actualizada.
apps/client/src/app/components/home-overview/home-overview.html
30
@@ -4572,7 +4600,7 @@
Monitor and analyze your portfolio
- Monitorea y analiza tu portafolio
+ Monitorea y analiza tu cartera
apps/client/src/app/components/home-overview/home-overview.html
37
@@ -4588,7 +4616,7 @@
Ready to take control of your personal finances?
- ¿Listo para tomar el control de tus finanzas personales?
+ ¿Estás preparado para tomar el control de tus finanzas personales?
apps/client/src/app/components/home-overview/home-overview.html
12
@@ -4604,7 +4632,7 @@
this is projected to increase to
- esto se proyecta a aumentar a
+ se proyecta que esto aumente a
apps/client/src/app/pages/portfolio/fire/fire-page.html
147
@@ -4620,7 +4648,7 @@
At Ghostfolio, transparency is at the core of our values. We publish the source code as open source software (OSS) under the AGPL-3.0 license and we openly share aggregated key metrics of the platform’s operational status.
- En Ghostfolio, la transparencia está en el centro de nuestros valores. Publicamos el código fuente como software de código abierto (OSS) bajo la licencia Licencia AGPL-3.0 y compartimos abiertamente métricas clave agregadas sobre el estado operativo de la plataforma.
+ En Ghostfolio, la transparencia está en el centro de nuestros valores. Publicamos el código fuente como software de código abierto (OSS) bajo la Licencia AGPL-3.0 y compartimos abiertamente métricas clave agregadas sobre el estado operativo de la plataforma.
apps/client/src/app/pages/open/open-page.html
7
@@ -4656,10 +4684,10 @@
Job ID
- ID de trabajo
+ ID del trabajo
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 34
+ 43
@@ -4712,14 +4740,14 @@
Currencies
- Monedas
+ Divisas
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 131
+ 130
apps/client/src/app/pages/public/public-page.html
- 96
+ 95
@@ -4756,7 +4784,7 @@
Check out the numerous features of Ghostfolio to manage your wealth
- Descubra las numerosas funciones de Ghostfolio para gestionar su patrimonio
+ Descubre las numerosas funciones de Ghostfolio para gestionar tu patrimonio
apps/client/src/app/pages/features/features-page.html
7
@@ -4767,11 +4795,11 @@
No se pudo analizar la configuración del scraper
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 509
+ 525
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 512
+ 528
@@ -4832,7 +4860,7 @@
Protect your assets . Refine your personal investment strategy .
- Protege tus assets . Mejora tu estrategia de inversión personal .
+ Protege tus activos . Mejora tu estrategia de inversión personal .
apps/client/src/app/pages/landing/landing-page.html
124
@@ -4880,7 +4908,7 @@
Get access to 80’000+ tickers from over 50 exchanges
- Obtén acceso a más de 80,000 tickers de más de 50 exchanges
+ Accede a más de 80.000 tickers de más de 50 bolsas
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
84
@@ -4912,7 +4940,7 @@
pursuing a buy & hold strategy
- persiguiendo una compra & mantener estrategia
+ siguiendo una estrategia de comprar y mantener
apps/client/src/app/pages/landing/landing-page.html
184
@@ -4920,7 +4948,7 @@
interested in getting insights of your portfolio composition
- interesado en obtener información sobre la composición de tu portafolio
+ interesado en obtener información sobre la composición de tu cartera
apps/client/src/app/pages/landing/landing-page.html
189
@@ -4936,7 +4964,7 @@
into minimalism
- en el minimalismo
+ interesado en el minimalismo
apps/client/src/app/pages/landing/landing-page.html
197
@@ -4944,7 +4972,7 @@
caring about diversifying your financial resources
- preocuparse por diversificar tus recursos financieros
+ preocupado por diversificar tus recursos financieros
apps/client/src/app/pages/landing/landing-page.html
201
@@ -5000,7 +5028,7 @@
How does Ghostfolio work?
- ¿Cómo Ghostfolio work?
+ ¿Cómo funciona Ghostfolio ?
apps/client/src/app/pages/landing/landing-page.html
282
@@ -5016,7 +5044,7 @@
* no e-mail address nor credit card required
- * no se requiere dirección de correo electrónico ni tarjeta de crédito
+ * no se necesita correo electrónico ni tarjeta de crédito
apps/client/src/app/pages/landing/landing-page.html
292
@@ -5032,7 +5060,7 @@
Get valuable insights of your portfolio composition
- Obtén información valiosa sobre la composición de tu portafolio
+ Obtén información valiosa sobre la composición de tu cartera
apps/client/src/app/pages/landing/landing-page.html
316
@@ -5040,7 +5068,7 @@
Are you ready?
- ¿Estás tú listo?
+ ¿Estás preparado ?
apps/client/src/app/pages/landing/landing-page.html
330
@@ -5064,7 +5092,7 @@
less than
- menos que
+ menos de
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
129
@@ -5253,7 +5281,7 @@
Open Source Alternative to
- Alternativa de software libre a
+ Alternativa de software de código abierto a
apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html
42
@@ -5261,7 +5289,7 @@
The Open Source Alternative to
- La alternativa de software libre a
+ La alternativa de software de código abierto a
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
8
@@ -5269,7 +5297,7 @@
Are you looking for an open source alternative to ? Ghostfolio is a powerful portfolio management tool that provides individuals with a comprehensive platform to track, analyze, and optimize their investments. Whether you are an experienced investor or just starting out, Ghostfolio offers an intuitive user interface and a wide range of functionalities to help you make informed decisions and take control of your financial future.
- ¿Estás buscando una alternativa de código abierto a ? Ghostfolio es una potente herramienta de gestión de carteras que ofrece a los usuarios una plataforma integral para rastrear, analizar y optimizar sus inversiones. Ya seas un inversor con experiencia o estés comenzando, Ghostfolio ofrece una interfaz intuitiva y una amplia gama de funcionalidades para ayudarte a tomar decisiones informadas y tener el control de tu futuro financiero.
+ ¿Estás buscando una alternativa de código abierto a ? Ghostfolio es una potente herramienta de gestión de carteras que proporciona a los usuarios una plataforma completa para seguir, analizar y optimizar sus inversiones. Ya seas un inversor con experiencia o estés comenzando, Ghostfolio ofrece una interfaz intuitiva y una amplia gama de funcionalidades para ayudarte a tomar decisiones informadas y tener el control de tu futuro financiero.
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
19
@@ -5293,7 +5321,7 @@
open-source-alternative-to
- alternativa-de-software-libre-a
+ alternativa-de-software-de-codigo-abierto-a
kebab-case
libs/common/src/lib/routes/routes.ts
@@ -5314,7 +5342,7 @@
Ready to take your investments to the next level ?
- ¿Listo para llevar sus inversiones al siguiente nivel ?
+ ¿Estás preparado para llevar tus inversiones al siguiente nivel ?
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
325
@@ -5362,7 +5390,7 @@
with your university e-mail address
- con tu dirección de correo electrónico de la universidad
+ con tu dirección de correo electrónico universitaria
apps/client/src/app/pages/pricing/pricing-page.html
348
@@ -5414,7 +5442,7 @@
One-time fee, annual account fees
- Tarifa única, tarifas anuales de la cuenta
+ Comisión única, comisiones anuales de la cuenta
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
33
@@ -5430,10 +5458,10 @@
Fee
- Tarifa
+ Comisión
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 262
+ 258
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -5454,7 +5482,7 @@
Add Tag
- Agregar etiqueta
+ Añadir etiqueta
apps/client/src/app/components/admin-tag/admin-tag.component.html
9
@@ -5462,10 +5490,10 @@
Do you really want to delete this tag?
- ¿Realmente deseas eliminar esta etiqueta?
+ ¿Seguro que quieres eliminar esta etiqueta?
apps/client/src/app/components/admin-tag/admin-tag.component.ts
- 103
+ 108
@@ -5533,7 +5561,7 @@
Membresía
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 48
+ 67
libs/common/src/lib/routes/routes.ts
@@ -5546,7 +5574,7 @@
Request it
- Solicitar
+ Solicítalo
apps/client/src/app/pages/pricing/pricing-page.html
344
@@ -5565,12 +5593,12 @@
Perfil de activo
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 52
+ 61
Do you really want to delete this asset profile?
- ¿Realmente deseas eliminar este perfil de activo?
+ ¿Seguro que quieres eliminar este perfil de activo?
apps/client/src/app/components/admin-market-data/admin-market-data.service.ts
37
@@ -5594,7 +5622,7 @@
Ghostfolio is a personal finance dashboard to keep track of your net worth including cash, stocks, ETFs and cryptocurrencies across multiple platforms.
- Ghostfolio es un dashboard de finanzas personales para hacer un seguimiento de tus activos como acciones, ETFs o criptodivisas a través de múltiples plataformas.
+ Ghostfolio es un panel de control de finanzas personales para hacer un seguimiento de tu patrimonio neto, incluyendo efectivo, acciones, ETFs y criptomonedas a través de múltiples plataformas.
apps/client/src/app/pages/i18n/i18n-page.html
5
@@ -5630,7 +5658,7 @@
Ghostfolio vs comparison table
- Ghostfolio vs tabla comparativa
+ Tabla comparativa de Ghostfolio vs
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
55
@@ -5646,7 +5674,7 @@
app, asset, cryptocurrency, dashboard, etf, finance, management, performance, portfolio, software, stock, trading, wealth, web3
- aplicación, activo, criptomoneda, panel, ETF, finanzas, gestión, rendimiento, cartera, software, acciones, comercio, riqueza, web3
+ aplicación, activo, criptomoneda, panel, ETF, finanzas, gestión, rendimiento, cartera, software, acciones, comercio, patrimonio, web3
apps/client/src/app/pages/i18n/i18n-page.html
10
@@ -5654,7 +5682,7 @@
Oops, cash balance transfer has failed.
- Oops, el saldo de efectivo no se ha transferido.
+ ¡Vaya! La transferencia del saldo de efectivo ha fallado.
apps/client/src/app/pages/accounts/accounts-page.component.ts
341
@@ -5670,7 +5698,7 @@
Extreme Greed
- Avaricia extrema
+ Codicia extrema
libs/ui/src/lib/i18n.ts
107
@@ -5686,18 +5714,18 @@
Oops! Could not parse historical data.
- ¡Ups! No se pudieron analizar los datos históricos.
+ ¡Vaya! No se pudieron analizar los datos históricos.
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts
- 262
+ 284
Do you really want to delete this system message?
- ¿Realmente deseas eliminar este mensaje del sistema?
+ ¿Seguro que quieres eliminar este mensaje del sistema?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 206
+ 209
@@ -5721,7 +5749,7 @@
Saldos de efectivo
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
- 148
+ 146
@@ -5738,15 +5766,15 @@
Do you really want to delete this account balance?
- ¿Realmente desea eliminar el saldo de esta cuenta?
+ ¿Seguro que quieres eliminar el saldo de esta cuenta?
libs/ui/src/lib/account-balances/account-balances.component.ts
- 120
+ 113
If a translation is missing, kindly support us in extending it here .
- Si falta una traducción, por favor ayúdenos a ampliarla. here .
+ Si falta una traducción, por favor ayúdanos a completarla aquí .
apps/client/src/app/components/user-account-settings/user-account-settings.html
59
@@ -5757,7 +5785,7 @@
El precio actual de mercado es
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 706
+ 722
@@ -5765,7 +5793,7 @@
Prueba
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 568
+ 571
@@ -5802,7 +5830,7 @@
Oops! Could not grant access.
- ¡Ups! No se pudo otorgar acceso.
+ ¡Vaya! No se pudo otorgar acceso.
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts
141
@@ -5834,7 +5862,7 @@
Market data is delayed for
- Los datos del mercado se retrasan por
+ Los datos del mercado tienen un retraso de
apps/client/src/app/components/portfolio-performance/portfolio-performance.component.ts
95
@@ -5853,11 +5881,11 @@
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 81
+ 80
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 97
+ 96
apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
@@ -5877,7 +5905,7 @@
Cerrar posición
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 442
+ 447
@@ -5890,7 +5918,7 @@
Asset Performance
- Rendimiento de activos
+ Rendimiento de los activos
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
190
@@ -5898,7 +5926,7 @@
Absolute Currency Performance
- Rendimiento absoluto de divisas
+ Rendimiento absoluto de las divisas
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
211
@@ -5906,7 +5934,7 @@
Currency Performance
- Rendimiento de la moneda
+ Rendimiento de la divisa
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
236
@@ -5917,7 +5945,7 @@
Semana hasta la fecha
libs/ui/src/lib/assistant/assistant.component.ts
- 367
+ 366
@@ -5925,11 +5953,11 @@
WTD
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 191
+ 197
libs/ui/src/lib/assistant/assistant.component.ts
- 367
+ 366
@@ -5937,7 +5965,7 @@
Mes hasta la fecha
libs/ui/src/lib/assistant/assistant.component.ts
- 371
+ 370
@@ -5945,19 +5973,19 @@
MTD
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 195
+ 201
libs/ui/src/lib/assistant/assistant.component.ts
- 371
+ 370
Year to date
- El año hasta la fecha
+ Año hasta la fecha
libs/ui/src/lib/assistant/assistant.component.ts
- 375
+ 374
@@ -5974,7 +6002,7 @@
Oops! A data provider is experiencing the hiccups.
- ¡Ups! Un proveedor de datos está experimentando problemas.
+ ¡Vaya! Un proveedor de datos está experimentando problemas.
apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html
8
@@ -5993,7 +6021,7 @@
año
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 203
+ 209
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
@@ -6005,7 +6033,7 @@
libs/ui/src/lib/assistant/assistant.component.ts
- 385
+ 384
@@ -6013,11 +6041,11 @@
años
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 207
+ 213
libs/ui/src/lib/assistant/assistant.component.ts
- 409
+ 408
@@ -6033,7 +6061,7 @@
Recopilación de datos
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 587
+ 594
apps/client/src/app/components/admin-overview/admin-overview.html
@@ -6045,7 +6073,7 @@
General
apps/client/src/app/pages/faq/faq-page.component.ts
- 49
+ 41
@@ -6053,7 +6081,7 @@
Nube
apps/client/src/app/pages/faq/faq-page.component.ts
- 54
+ 46
libs/common/src/lib/routes/routes.ts
@@ -6065,7 +6093,7 @@
Autoalojamiento
apps/client/src/app/pages/faq/faq-page.component.ts
- 60
+ 52
libs/common/src/lib/routes/routes.ts
@@ -6074,7 +6102,7 @@
self-hosting
- auto-alojado
+ autoalojado
kebab-case
libs/common/src/lib/routes/routes.ts
@@ -6106,7 +6134,7 @@
Activo
apps/client/src/app/components/home-holdings/home-holdings.component.ts
- 64
+ 63
@@ -6114,7 +6142,7 @@
Cerrado
apps/client/src/app/components/home-holdings/home-holdings.component.ts
- 65
+ 64
@@ -6127,7 +6155,7 @@
Activity
- Actividad
+ Operación
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
229
@@ -6143,10 +6171,10 @@
Execute Job
- Ejecutar Tarea
+ Ejecutar trabajo
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 220
+ 229
@@ -6154,7 +6182,7 @@
Prioridad
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 96
+ 105
@@ -6175,7 +6203,7 @@
{VAR_PLURAL, plural, =1 {activity} other {activities}}
- {VAR_PLURAL, plural, =1 {actividad} other {actividades}}
+ {VAR_PLURAL, plural, =1 {operación} other {operaciones}}
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
14
@@ -6191,7 +6219,7 @@
Delete Activities
- Eliminar actividades
+ Eliminar operaciones
libs/ui/src/lib/activities-table/activities-table.component.html
69
@@ -6207,10 +6235,10 @@
Do you really want to close your Ghostfolio account?
- ¿Estás seguro de querer borrar tu cuenta de Ghostfolio?
+ ¿Seguro que quieres eliminar tu cuenta de Ghostfolio?
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 208
+ 205
@@ -6239,7 +6267,7 @@
Approximation based on the top holdings of each ETF
- Aproximación basada en las principales participaciones de cada ETF
+ Aproximación basada en las principales posiciones de cada ETF
apps/client/src/app/pages/portfolio/allocations/allocations-page.html
340
@@ -6258,15 +6286,15 @@
Incluir en
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 374
+ 377
Oops! There was an error setting up biometric authentication.
- ¡Ups! Hubo un error al configurar la autenticación biométrica.
+ ¡Vaya! Hubo un error al configurar la autenticación biométrica.
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 336
+ 333
@@ -6279,15 +6307,15 @@
Benchmarks
- Puntos de referencia
+ Índices de referencia
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 126
+ 125
Delete Profiles
- Borrar Perfiles
+ Eliminar Perfiles
apps/client/src/app/components/admin-market-data/admin-market-data.html
242
@@ -6295,7 +6323,7 @@
Do you really want to delete these profiles?
- Estas seguro de borrar estos perfiles?
+ ¿Seguro que quieres eliminar estos perfiles?
apps/client/src/app/components/admin-market-data/admin-market-data.service.ts
68
@@ -6303,7 +6331,7 @@
Oops! Could not delete profiles.
- ¡Ups! No se pudieron eliminar los perfiles.
+ ¡Vaya! No se pudieron eliminar los perfiles.
apps/client/src/app/components/admin-market-data/admin-market-data.service.ts
56
@@ -6319,7 +6347,7 @@
Chart
- Grafico
+ Gráfico
apps/client/src/app/components/home-holdings/home-holdings.html
19
@@ -6330,7 +6358,7 @@
¿Te gustaría refinar tu estrategia de inversión personal ?
apps/client/src/app/pages/public/public-page.html
- 234
+ 233
@@ -6351,7 +6379,7 @@
Budgeting
- Presupuestación
+ Presupuestos
apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
85
@@ -6491,7 +6519,7 @@
Wealth
- Riqueza
+ Patrimonio
apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
99
@@ -6539,7 +6567,7 @@
View Holding
- Ver fondos
+ Ver posición
libs/ui/src/lib/activities-table/activities-table.component.html
450
@@ -6662,7 +6690,7 @@
Error
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 697
+ 713
@@ -6683,7 +6711,7 @@
Oops! Could not update access.
- Oops! No se pudo actualizar el acceso.
+ ¡Vaya! No se pudo actualizar el acceso.
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts
178
@@ -6714,7 +6742,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 592
+ 599
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -6746,7 +6774,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 345
+ 341
apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html
@@ -6754,7 +6782,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html
- 46
+ 47
libs/ui/src/lib/i18n.ts
@@ -6766,7 +6794,7 @@
Cerrar
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 594
+ 601
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -6792,13 +6820,17 @@
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
68
+
+ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
+ 127
+
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
107
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 347
+ 343
libs/ui/src/lib/i18n.ts
@@ -6810,7 +6842,7 @@
Rol
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 14
+ 33
@@ -6834,12 +6866,12 @@
Instantánea de la cartera
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 56
+ 65
Change with currency effect Change
- Cambiar con efecto de cambio dedivisa Cambiar
+ Cambio con el efecto de la divisa Cambio
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
63
@@ -6855,7 +6887,7 @@
Performance with currency effect Performance
- Rendimiento con cambio de divisa Rendimiento
+ Rendimiento con el efecto de la divisa Rendimiento
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
83
@@ -6879,7 +6911,7 @@
send an e-mail to
- enviar un correo electrónico a
+ envía un correo electrónico a
apps/client/src/app/pages/about/overview/about-overview-page.html
87
@@ -6901,6 +6933,14 @@
42
+
+ has been copied to the clipboard
+ has been copied to the clipboard
+
+ libs/ui/src/lib/value/value.component.ts
+ 180
+
+
From the beginning
Desde el principio
@@ -6911,7 +6951,7 @@
Oops! Invalid currency.
- ¡Ups! Moneda inválida.
+ ¡Vaya! Divisa no válida.
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
48
@@ -6959,7 +6999,7 @@
to use our referral link and get a Ghostfolio Premium membership for one year
- para usar nuestro enlace de referido y obtener una membresía Ghostfolio Premium por un año
+ para utilizar nuestro enlace de recomendación y obtener una membresía de Ghostfolio Premium por un año
apps/client/src/app/pages/pricing/pricing-page.html
340
@@ -7039,7 +7079,7 @@
Ghostfolio is a lightweight wealth management application for individuals to keep track of stocks, ETFs or cryptocurrencies and make solid, data-driven investment decisions.
- Ghostfolio es una aplicación de gestión de patrimonio para aquellos individuos que desean realizar un seguimiento de acciones, ETFs o criptomonedas y tomar decisiones de inversión sólidas y basadas en datos.
+ Ghostfolio es una aplicación ligera de gestión de patrimonio para que las personas realicen un seguimiento de acciones, ETFs o criptomonedas y tomen decisiones de inversión sólidas basadas en datos.
apps/client/src/app/pages/about/overview/about-overview-page.html
10
@@ -7047,7 +7087,7 @@
Oops! Could not find any assets.
- ¡Ups! No se pudieron encontrar activos.
+ ¡Vaya! No se pudieron encontrar activos.
libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html
40
@@ -7066,12 +7106,12 @@
Configurar clave API
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 171
+ 188
Get access to 80’000+ tickers from over 50 exchanges
- Accede a más de 80’000 tickers de más de 50 bolsas
+ Accede a más de 80.000 tickers de más de 50 bolsas
libs/ui/src/lib/i18n.ts
26
@@ -7102,7 +7142,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 45
+ 44
libs/common/src/lib/routes/routes.ts
@@ -7118,7 +7158,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 34
+ 33
libs/common/src/lib/routes/routes.ts
@@ -7153,7 +7193,7 @@
Threshold range
- Rango umbral
+ Rango del umbral
apps/client/src/app/components/rule/rule-settings-dialog/rule-settings-dialog.html
9
@@ -7172,7 +7212,7 @@
de
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 135
+ 152
@@ -7180,7 +7220,7 @@
solicitudes diarias
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 137
+ 154
@@ -7188,20 +7228,20 @@
Eliminar clave API
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 161
+ 178
Do you really want to delete the API key?
- ¿Realmente deseas eliminar la clave API?
+ ¿Seguro que quieres eliminar la clave API?
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 127
+ 133
Please enter your Ghostfolio API key:
- Ingrese su clave API de Ghostfolio:
+ Ingresa tu clave API de Ghostfolio:
apps/client/src/app/pages/api/api-page.component.ts
43
@@ -7209,14 +7249,14 @@
API Requests Today
- Solicitudes de API hoy
+ Solicitudes de API de hoy
apps/client/src/app/components/admin-users/admin-users.html
161
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 98
+ 117
@@ -7229,7 +7269,7 @@
Set this API key in your self-hosted environment:
- Configure esta clave API en su entorno autohospedado:
+ Configura esta clave API en tu entorno autoalojado:
apps/client/src/app/components/user-account-membership/user-account-membership.component.ts
151
@@ -7245,7 +7285,7 @@
Do you really want to generate a new API key?
- ¿Realmente desea generar una nueva clave API?
+ ¿Seguro que quieres generar una nueva clave API?
apps/client/src/app/components/user-account-membership/user-account-membership.component.ts
159
@@ -7261,7 +7301,7 @@
Generate Ghostfolio Premium Data Provider API key for self-hosted environments...
- Genere la clave API del proveedor de datos premium de Ghostfolio para entornos autohospedados...
+ Genera la clave API del proveedor de datos premium de Ghostfolio para entornos autoalojados...
libs/ui/src/lib/membership-card/membership-card.component.html
29
@@ -7269,7 +7309,7 @@
out of
- fuera de
+ de
apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html
56
@@ -7277,7 +7317,7 @@
rules align with your portfolio.
- Las reglas se alinean con su cartera.
+ reglas se alinean con tu cartera.
apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html
58
@@ -7285,10 +7325,10 @@
Save
- Ahorrar
+ Guardar
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 603
+ 610
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -7324,11 +7364,11 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 356
+ 352
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html
- 48
+ 49
@@ -7340,7 +7380,7 @@
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 260
+ 257
@@ -7353,7 +7393,7 @@
Check the system status at
- Verificar el estado del sistema en
+ Verifica el estado del sistema en
apps/client/src/app/pages/about/overview/about-overview-page.html
57
@@ -7364,12 +7404,12 @@
Por favor, ingresa tu clave API de Ghostfolio.
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 146
+ 152
Change with currency effect
- Cambiar con el efecto del tipo de cambio de divisa
+ Cambio con el efecto de la divisa
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
116
@@ -7377,10 +7417,10 @@
AI prompt has been copied to the clipboard
- El aviso de IA ha sido copiado al portapapeles
+ El prompt para la IA ha sido copiado al portapapeles
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 201
+ 199
@@ -7393,10 +7433,10 @@
Lazy
- Perezoso
+ Bajo demanda
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 225
+ 231
@@ -7404,7 +7444,7 @@
Instantáneo
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 229
+ 235
@@ -7412,7 +7452,7 @@
Precio de mercado por defecto
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 481
+ 484
@@ -7420,7 +7460,7 @@
Modo
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 518
+ 521
@@ -7428,7 +7468,7 @@
Selector
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 534
+ 537
@@ -7436,7 +7476,7 @@
Encabezados de solicitud HTTP
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 494
+ 497
@@ -7444,7 +7484,7 @@
final del día
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 225
+ 231
@@ -7452,7 +7492,7 @@
en tiempo real
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 229
+ 235
@@ -7460,7 +7500,7 @@
Abrir Duck.ai
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 202
+ 200
@@ -7473,14 +7513,14 @@
Change
- Cambiar
+ Cambio
libs/ui/src/lib/holdings-table/holdings-table.component.html
138
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 368
+ 377
@@ -7492,7 +7532,7 @@
apps/client/src/app/components/home-overview/home-overview.component.ts
- 55
+ 54
libs/ui/src/lib/holdings-table/holdings-table.component.html
@@ -7500,11 +7540,11 @@
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 368
+ 377
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 381
+ 390
@@ -7517,7 +7557,7 @@
Copy portfolio data to clipboard for AI prompt
- Copiar los datos del portafolio al portapapeles para el aviso de IA
+ Copiar los datos de la cartera al portapapeles para el prompt de IA
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
42
@@ -7525,7 +7565,7 @@
Copy AI prompt to clipboard for analysis
- Copiar el aviso de IA al portapapeles para análisis
+ Copiar el prompt de IA al portapapeles para análisis
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
67
@@ -7533,7 +7573,7 @@
Total amount
- Cantidad total
+ Importe total
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
95
@@ -7565,7 +7605,7 @@
Terms and Conditions
- Terminos y condiciones
+ Términos y Condiciones
apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html
15
@@ -7608,27 +7648,27 @@
Token de seguridad
apps/client/src/app/components/admin-users/admin-users.component.ts
- 236
+ 235
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 170
+ 167
Do you really want to generate a new security token for this user?
- ¿Realmente deseas generar un nuevo token de seguridad para este usuario?
+ ¿Seguro que quieres generar un nuevo token de seguridad para este usuario?
apps/client/src/app/components/admin-users/admin-users.component.ts
- 241
+ 240
Find account, holding or page...
- Buscar cuenta, posición o página...
+ Busca una cuenta, posición o página...
libs/ui/src/lib/assistant/assistant.component.ts
- 151
+ 115
@@ -7682,7 +7722,7 @@
and I agree to the Terms of Service .
- y acepto los Términos del servicio .
+ y acepto los Términos de servicio .
apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html
34
@@ -7693,7 +7733,7 @@
( ) ya está en uso.
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 633
+ 649
@@ -7701,7 +7741,7 @@
Ocurrió un error al actualizar a ( ).
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 641
+ 657
@@ -7765,7 +7805,7 @@
alguien
apps/client/src/app/pages/public/public-page.component.ts
- 59
+ 61
@@ -7794,15 +7834,15 @@
Do you really want to delete this item?
- ¿Realmente deseas eliminar este elemento?
+ ¿Seguro que quieres eliminar este elemento?
libs/ui/src/lib/benchmark/benchmark.component.ts
- 144
+ 139
Log out
- Finalizar la sesión
+ Cerrar sesión
apps/client/src/app/components/header/header.component.html
329
@@ -7810,7 +7850,7 @@
Calculations are based on delayed market data and may not be displayed in real-time.
- Los cálculos se basan en datos de mercado retrasados y es posible que no se muestren en tiempo real.
+ Los cálculos se basan en datos de mercado con retraso y es posible que no se muestren en tiempo real.
apps/client/src/app/components/home-market/home-market.html
45
@@ -7822,7 +7862,7 @@
changelog
- registro-decambios
+ registro-de-cambios
kebab-case
libs/common/src/lib/routes/routes.ts
@@ -7838,7 +7878,7 @@
La cuenta de usuario de demostración se ha sincronizado.
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 274
+ 277
@@ -7851,7 +7891,7 @@
Set up
- Fondo de Emergencia: Establecer
+ Establecer
apps/client/src/app/pages/i18n/i18n-page.html
145
@@ -7873,25 +7913,25 @@
150
-
+
Fee Ratio
- Relación de tarifas
+ Relación de comisiones
apps/client/src/app/pages/i18n/i18n-page.html
152
-
- The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
- Las tarifas superan el ${thresholdMax}% de su inversión inicial (${feeRatio}%)
+
+ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
+ Las comisiones superan el ${thresholdMax}% de tu volumen total de inversión (${feeRatio}%)
apps/client/src/app/pages/i18n/i18n-page.html
154
-
- The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
- Las tarifas no superan el ${thresholdMax}% de su inversión inicial (${feeRatio}%)
+
+ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
+ Las comisiones no superan el ${thresholdMax}% de tu volumen total de inversión (${feeRatio}%)
apps/client/src/app/pages/i18n/i18n-page.html
158
@@ -7923,7 +7963,7 @@
Open Source Alternative to
- Alternativa de software libre a
+ Alternativa de software de código abierto a
libs/common/src/lib/routes/routes.ts
326
@@ -7985,7 +8025,7 @@
Fuel your self-hosted Ghostfolio with a powerful data provider to access 80,000+ tickers from over 50 exchanges worldwide.
- Alimenta tu Ghostfolio autoalojado con un proveedor de datos potente para acceder a más de 80.000 tickers de más de 50 intercambios a nivel mundial.
+ Alimenta tu Ghostfolio autoalojado con un proveedor de datos potente para acceder a más de 80.000 tickers de más de 50 bolsas a nivel mundial.
apps/client/src/app/components/admin-settings/admin-settings.component.html
16
@@ -8001,7 +8041,7 @@
Learn more
- Aprender más
+ Más información
apps/client/src/app/components/admin-settings/admin-settings.component.html
38
@@ -8052,7 +8092,7 @@
Mes actual
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 195
+ 201
@@ -8060,11 +8100,11 @@
nuevo
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 67
+ 79
apps/client/src/app/pages/admin/admin-page.component.ts
- 56
+ 53
@@ -8093,7 +8133,7 @@
Equity
- Acciones
+ Renta variable
apps/client/src/app/pages/i18n/i18n-page.html
41
@@ -8157,7 +8197,7 @@
Investment: Base Currency
- Inversión: Moneda base
+ Inversión: Divisa base
apps/client/src/app/pages/i18n/i18n-page.html
85
@@ -8165,7 +8205,7 @@
The major part of your current investment is not in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency})
- La mayor parte de tu inversión actual no está en tu moneda base (${baseCurrencyValueRatio}% en ${baseCurrency})
+ La mayor parte de tu inversión actual no está en tu divisa base (${baseCurrencyValueRatio}% en ${baseCurrency})
apps/client/src/app/pages/i18n/i18n-page.html
88
@@ -8173,7 +8213,7 @@
The major part of your current investment is in your base currency (${baseCurrencyValueRatio}% in ${baseCurrency})
- La mayor parte de tu inversión actual está en tu moneda base (${baseCurrencyValueRatio}% en ${baseCurrency})
+ La mayor parte de tu inversión actual está en tu divisa base (${baseCurrencyValueRatio}% en ${baseCurrency})
apps/client/src/app/pages/i18n/i18n-page.html
92
@@ -8218,10 +8258,10 @@
Do you really want to generate a new security token?
- ¿Realmente deseas generar un nuevo token de seguridad?
+ ¿Seguro que quieres generar un nuevo token de seguridad?
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 175
+ 172
@@ -8234,7 +8274,7 @@
If you encounter a bug, would like to suggest an improvement or a new feature , please join the Ghostfolio Slack community, post to @ghostfolio_
- Si encuentras un error, deseas sugerir una mejora o una nueva característica , por favor únete a la comunidad Ghostfolio Slack , publica en @ghostfolio_
+ Si encuentras un error, deseas sugerir una mejora o una nueva funcionalidad , por favor únete a la comunidad de Ghostfolio en Slack y publica en @ghostfolio_
apps/client/src/app/pages/about/overview/about-overview-page.html
69
@@ -8245,7 +8285,7 @@
Acciones
apps/client/src/app/components/markets/markets.component.ts
- 52
+ 51
apps/client/src/app/pages/features/features-page.html
@@ -8257,7 +8297,7 @@
Criptomonedas
apps/client/src/app/components/markets/markets.component.ts
- 53
+ 52
apps/client/src/app/pages/features/features-page.html
@@ -8266,7 +8306,7 @@
-
+
apps/client/src/app/components/admin-users/admin-users.html
39
@@ -8277,7 +8317,7 @@
Gestionar perfil de activo
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 466
+ 471
@@ -8310,7 +8350,7 @@
Account Cluster Risks
- Riesgos de grupo de cuentas
+ Riesgos de agrupación de cuentas
apps/client/src/app/pages/i18n/i18n-page.html
14
@@ -8318,7 +8358,7 @@
Asset Class Cluster Risks
- Riesgos de grupo de clases de activos
+ Riesgos de agrupación de tipos de activos
apps/client/src/app/pages/i18n/i18n-page.html
39
@@ -8326,7 +8366,7 @@
Currency Cluster Risks
- Riesgos del clúster de divisas
+ Riesgos de agrupación de divisas
apps/client/src/app/pages/i18n/i18n-page.html
83
@@ -8334,7 +8374,7 @@
Economic Market Cluster Risks
- Riesgos del clúster de mercados económicos
+ Riesgos de agrupación de mercados económicos
apps/client/src/app/pages/i18n/i18n-page.html
106
@@ -8366,7 +8406,7 @@
Buying Power
- Poder de compra
+ Poder adquisitivo
apps/client/src/app/pages/i18n/i18n-page.html
71
@@ -8374,7 +8414,7 @@
Your buying power is below ${thresholdMin} ${baseCurrency}
- Tu poder de compra es inferior a ${thresholdMin} ${baseCurrency}
+ Tu poder adquisitivo está por debajo de ${thresholdMin} ${baseCurrency}
apps/client/src/app/pages/i18n/i18n-page.html
73
@@ -8382,7 +8422,7 @@
Your buying power is 0 ${baseCurrency}
- Tu poder de compra es 0 ${baseCurrency}
+ Tu poder adquisitivo es 0 ${baseCurrency}
apps/client/src/app/pages/i18n/i18n-page.html
77
@@ -8390,7 +8430,7 @@
Your buying power exceeds ${thresholdMin} ${baseCurrency}
- Tu poder de compra excede ${thresholdMin} ${baseCurrency}
+ Tu poder adquisitivo supera ${thresholdMin} ${baseCurrency}
apps/client/src/app/pages/i18n/i18n-page.html
80
@@ -8398,7 +8438,7 @@
Regional Market Cluster Risks
- Riesgos de los grupos de mercados regionales
+ Riesgos de agrupación de mercados regionales
apps/client/src/app/pages/i18n/i18n-page.html
163
@@ -8422,7 +8462,7 @@
The developed markets contribution of your current investment (${developedMarketsValueRatio}%) exceeds ${thresholdMax}%
- La contribución a los mercados desarrollados de tu inversión actual (${developedMarketsValueRatio}%) supera el ${thresholdMax}%
+ La contribución a mercados desarrollados de tu inversión actual (${developedMarketsValueRatio}%) supera ${thresholdMax}%
apps/client/src/app/pages/i18n/i18n-page.html
112
@@ -8430,7 +8470,7 @@
The developed markets contribution of your current investment (${developedMarketsValueRatio}%) is below ${thresholdMin}%
- La contribución a los mercados desarrollados de tu inversión actual (${developedMarketsValueRatio}%) es inferior al ${thresholdMin}%
+ La contribución a mercados desarrollados de tu inversión actual (${developedMarketsValueRatio}%) es inferior a ${thresholdMin}%
apps/client/src/app/pages/i18n/i18n-page.html
117
@@ -8438,7 +8478,7 @@
The developed markets contribution of your current investment (${developedMarketsValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%
- La contribución a los mercados desarrollados de tu inversión actual (${developedMarketsValueRatio}%) está dentro del rango de ${thresholdMin}% y ${thresholdMax}%
+ La contribución a mercados desarrollados de tu inversión actual (${developedMarketsValueRatio}%) está dentro del rango de ${thresholdMin}% y ${thresholdMax}%
apps/client/src/app/pages/i18n/i18n-page.html
122
@@ -8454,7 +8494,7 @@
The emerging markets contribution of your current investment (${emergingMarketsValueRatio}%) exceeds ${thresholdMax}%
- La contribución a los mercados emergentes de tu inversión actual (${emergingMarketsValueRatio}%) supera el ${thresholdMax}%
+ La contribución a mercados emergentes de tu inversión actual (${emergingMarketsValueRatio}%) supera ${thresholdMax}%
apps/client/src/app/pages/i18n/i18n-page.html
130
@@ -8462,7 +8502,7 @@
The emerging markets contribution of your current investment (${emergingMarketsValueRatio}%) is below ${thresholdMin}%
- La contribución a los mercados emergentes de tu inversión actual (${emergingMarketsValueRatio}%) es inferior al ${thresholdMin}%
+ La contribución a mercados emergentes de tu inversión actual (${emergingMarketsValueRatio}%) es inferior a ${thresholdMin}%
apps/client/src/app/pages/i18n/i18n-page.html
135
@@ -8470,7 +8510,7 @@
The emerging markets contribution of your current investment (${emergingMarketsValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%
- La contribución a los mercados emergentes de tu inversión actual (${emergingMarketsValueRatio}%) está dentro del rango de ${thresholdMin}% y ${thresholdMax}%
+ La contribución a mercados emergentes de tu inversión actual (${emergingMarketsValueRatio}%) está dentro del rango de ${thresholdMin}% y ${thresholdMax}%
apps/client/src/app/pages/i18n/i18n-page.html
140
@@ -8486,7 +8526,7 @@
Your net worth is managed by 0 accounts
- Su patrimonio neto es administrado por 0 cuentas
+ Tu patrimonio neto es administrado por 0 cuentas
apps/client/src/app/pages/i18n/i18n-page.html
33
@@ -8502,7 +8542,7 @@
The Asia-Pacific market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}%
- La contribución al mercado de Asia-Pacífico de tu inversión actual (${valueRatio}%) supera el ${thresholdMax}%
+ La contribución al mercado Asiático-Pacífico de tu inversión actual (${valueRatio}%) supera ${thresholdMax}%
apps/client/src/app/pages/i18n/i18n-page.html
167
@@ -8510,7 +8550,7 @@
The Asia-Pacific market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}%
- La contribución al mercado de Asia-Pacífico de tu inversión actual (${valueRatio}%) es inferior al ${thresholdMin}%
+ La contribución al mercado Asiático-Pacífico de tu inversión actual (${valueRatio}%) es inferior a ${thresholdMin}%
apps/client/src/app/pages/i18n/i18n-page.html
171
@@ -8518,7 +8558,7 @@
The Asia-Pacific market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%
- La contribución al mercado de Asia-Pacífico de tu inversión actual (${valueRatio}%) está dentro del rango de ${thresholdMin}% y ${thresholdMax}%
+ La contribución al mercado Asiático-Pacífico de tu inversión actual (${valueRatio}%) está dentro del rango de ${thresholdMin}% y ${thresholdMax}%
apps/client/src/app/pages/i18n/i18n-page.html
175
@@ -8534,7 +8574,7 @@
The Emerging Markets contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}%
- La contribución a los mercados emergentes de tu inversión actual (${valueRatio}%) supera el ${thresholdMax}%
+ La contribución a mercados emergentes de tu inversión actual (${valueRatio}%) supera ${thresholdMax}%
apps/client/src/app/pages/i18n/i18n-page.html
183
@@ -8542,7 +8582,7 @@
The Emerging Markets contribution of your current investment (${valueRatio}%) is below ${thresholdMin}%
- La contribución a los mercados emergentes de tu inversión actual (${valueRatio}%) es inferior al ${thresholdMin}%
+ La contribución a mercados emergentes de tu inversión actual (${valueRatio}%) es inferior a ${thresholdMin}%
apps/client/src/app/pages/i18n/i18n-page.html
187
@@ -8550,7 +8590,7 @@
The Emerging Markets contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%
- La contribución a los mercados emergentes de tu inversión actual (${valueRatio}%) está dentro del rango de ${thresholdMin}% y ${thresholdMax}%
+ La contribución a mercados emergentes de tu inversión actual (${valueRatio}%) está dentro del rango de ${thresholdMin}% y ${thresholdMax}%
apps/client/src/app/pages/i18n/i18n-page.html
191
@@ -8566,7 +8606,7 @@
The Europe market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}%
- La contribución al mercado europeo de tu inversión actual (${valueRatio}%) supera el ${thresholdMax}%
+ La contribución al mercado europeo de tu inversión actual (${valueRatio}%) supera ${thresholdMax}%
apps/client/src/app/pages/i18n/i18n-page.html
197
@@ -8574,7 +8614,7 @@
The Europe market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}%
- La contribución al mercado europeo de tu inversión actual (${valueRatio}%) es inferior al ${thresholdMin}%
+ La contribución al mercado europeo de tu inversión actual (${valueRatio}%) es inferior a ${thresholdMin}%
apps/client/src/app/pages/i18n/i18n-page.html
201
@@ -8598,7 +8638,7 @@
The Japan market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}%
- La contribución al mercado japonés de su inversión actual (${valueRatio}%) supera el ${thresholdMax}%
+ La contribución al mercado japonés de tu inversión actual (${valueRatio}%) supera el ${thresholdMax}%
apps/client/src/app/pages/i18n/i18n-page.html
211
@@ -8606,7 +8646,7 @@
The Japan market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}%
- La contribución al mercado japonés de su inversión actual (${valueRatio}%) es inferior a ${thresholdMin}%
+ La contribución al mercado japonés de tu inversión actual (${valueRatio}%) es inferior a ${thresholdMin}%
apps/client/src/app/pages/i18n/i18n-page.html
215
@@ -8614,7 +8654,7 @@
The Japan market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%
- La contribución al mercado japonés de su inversión actual (${valueRatio}%) está dentro del rango de ${thresholdMin}% y ${thresholdMax}%
+ La contribución al mercado japonés de tu inversión actual (${valueRatio}%) está dentro del rango de ${thresholdMin}% y ${thresholdMax}%
apps/client/src/app/pages/i18n/i18n-page.html
219
@@ -8630,7 +8670,7 @@
The North America market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}%
- La contribución del mercado de América del Norte de su inversión actual (${valueRatio}%) supera el ${thresholdMax}%
+ La contribución al mercado de América del Norte de tu inversión actual (${valueRatio}%) supera el ${thresholdMax}%
apps/client/src/app/pages/i18n/i18n-page.html
225
@@ -8638,7 +8678,7 @@
The North America market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}%
- La contribución al mercado de América del Norte de su inversión actual (${valueRatio}%) es inferior a ${thresholdMin}%
+ La contribución al mercado de América del Norte de tu inversión actual (${valueRatio}%) es inferior a ${thresholdMin}%
apps/client/src/app/pages/i18n/i18n-page.html
229
@@ -8646,7 +8686,7 @@
The North America market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%
- La contribución al mercado de América del Norte de su inversión actual (${valueRatio}%) está dentro del rango de ${thresholdMin}% y ${thresholdMax}%
+ La contribución al mercado de América del Norte de tu inversión actual (${valueRatio}%) está dentro del rango de ${thresholdMin}% y ${thresholdMax}%
apps/client/src/app/pages/i18n/i18n-page.html
233
@@ -8666,7 +8706,7 @@
Join the Ghostfolio Slack community
- Únete a la comunidad de Ghostfolio Slack
+ Únete a la comunidad de Ghostfolio en Slack
apps/client/src/app/pages/about/overview/about-overview-page.html
109
@@ -8674,7 +8714,7 @@
Follow Ghostfolio on X (formerly Twitter)
- Siga a Ghostfolio en X (anteriormente Twitter)
+ Sigue a Ghostfolio en X (anteriormente Twitter)
apps/client/src/app/pages/about/overview/about-overview-page.html
118
@@ -8697,12 +8737,12 @@
Fecha de registro
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 26
+ 45
Follow Ghostfolio on LinkedIn
- Siga a Ghostfolio en LinkedIn
+ Sigue a Ghostfolio en LinkedIn
apps/client/src/app/pages/about/overview/about-overview-page.html
147
@@ -8710,7 +8750,7 @@
Ghostfolio is an independent & bootstrapped business
- Ghostfolio es una empresa independiente y autónoma
+ Ghostfolio es una empresa independiente y autofinanciada
apps/client/src/app/pages/about/overview/about-overview-page.html
157
@@ -8718,7 +8758,7 @@
Support Ghostfolio
- Soporte Ghostfolio
+ Apoya a Ghostfolio
apps/client/src/app/pages/about/overview/about-overview-page.html
166
diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf
index 0da1c3f6a..eec144e92 100644
--- a/apps/client/src/locales/messages.fr.xlf
+++ b/apps/client/src/locales/messages.fr.xlf
@@ -42,7 +42,7 @@
Type
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 48
+ 57
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
@@ -114,7 +114,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 309
+ 310
apps/client/src/app/components/admin-platform/admin-platform.component.html
@@ -126,7 +126,7 @@
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 46
+ 58
apps/client/src/app/components/admin-tag/admin-tag.component.html
@@ -142,7 +142,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 139
+ 135
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -186,7 +186,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 316
+ 317
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -198,7 +198,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 145
+ 141
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -234,15 +234,15 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 205
+ 201
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 208
+ 204
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 211
+ 207
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -290,11 +290,11 @@
apps/client/src/app/components/admin-platform/admin-platform.component.html
- 74
+ 78
apps/client/src/app/components/admin-tag/admin-tag.component.html
- 67
+ 71
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -322,11 +322,15 @@
apps/client/src/app/components/admin-platform/admin-platform.component.html
- 85
+ 89
apps/client/src/app/components/admin-tag/admin-tag.component.html
- 78
+ 82
+
+
+ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
+ 22
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -350,7 +354,7 @@
Voulez-vous vraiment supprimer ce compte ?
libs/ui/src/lib/accounts-table/accounts-table.component.ts
- 150
+ 148
@@ -358,7 +362,7 @@
Source Données
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 82
+ 91
apps/client/src/app/components/admin-market-data/admin-market-data.html
@@ -370,7 +374,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 155
+ 151
libs/ui/src/lib/i18n.ts
@@ -382,7 +386,7 @@
Tentatives
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 120
+ 129
@@ -390,7 +394,7 @@
Créé
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 134
+ 143
@@ -398,7 +402,7 @@
Terminé
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 143
+ 152
@@ -406,11 +410,11 @@
Statut
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 152
+ 161
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 92
+ 104
@@ -426,7 +430,7 @@
Supprimer Tâches
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 193
+ 202
@@ -434,7 +438,7 @@
Profils d’Actifs
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 106
+ 123
libs/ui/src/lib/assistant/assistant.html
@@ -446,11 +450,11 @@
Données historiques du marché
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 54
+ 63
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 448
+ 451
@@ -458,7 +462,7 @@
Voir Données
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 208
+ 217
@@ -466,7 +470,7 @@
Voir la Stacktrace
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 216
+ 225
@@ -474,7 +478,7 @@
Supprimer Tâche
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 224
+ 233
@@ -490,7 +494,7 @@
Date
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 161
+ 157
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -526,7 +530,7 @@
Filtrer par...
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 385
+ 383
@@ -566,7 +570,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html
- 44
+ 40
@@ -634,7 +638,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 53
+ 72
@@ -646,7 +650,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 396
+ 399
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -654,7 +658,7 @@
apps/client/src/app/pages/public/public-page.html
- 114
+ 113
@@ -666,7 +670,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 407
+ 410
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -678,7 +682,7 @@
Équivalence de Symboles
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 384
+ 387
@@ -686,7 +690,7 @@
Note
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 432
+ 435
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
@@ -694,7 +698,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 275
+ 271
@@ -702,7 +706,7 @@
Voulez-vous vraiment supprimer ce code promotionnel ?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 193
+ 196
@@ -710,7 +714,7 @@
Voulez-vous vraiment vider le cache ?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 230
+ 233
@@ -718,7 +722,7 @@
Veuillez définir votre message système :
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 250
+ 253
@@ -758,7 +762,7 @@
Étiquettes
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 201
+ 218
libs/ui/src/lib/tags-selector/tags-selector.component.html
@@ -878,7 +882,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 89
+ 108
@@ -894,11 +898,11 @@
Could not validate form
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 554
+ 570
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 557
+ 573
@@ -938,7 +942,7 @@
Référence
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 376
+ 379
apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts
@@ -974,7 +978,7 @@
apps/client/src/app/components/header/header.component.ts
- 297
+ 298
apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html
@@ -994,15 +998,15 @@
Oups! Jeton de Sécurité Incorrect.
apps/client/src/app/components/header/header.component.ts
- 312
+ 313
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 154
+ 152
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 193
+ 191
@@ -1010,7 +1014,7 @@
Gérer les Activités
apps/client/src/app/components/home-holdings/home-holdings.html
- 67
+ 64
@@ -1018,11 +1022,11 @@
Peur
apps/client/src/app/components/home-market/home-market.component.ts
- 42
+ 41
apps/client/src/app/components/markets/markets.component.ts
- 47
+ 46
libs/ui/src/lib/i18n.ts
@@ -1034,11 +1038,11 @@
Avidité
apps/client/src/app/components/home-market/home-market.component.ts
- 43
+ 42
apps/client/src/app/components/markets/markets.component.ts
- 48
+ 47
libs/ui/src/lib/i18n.ts
@@ -1062,7 +1066,7 @@
Montant Total
apps/client/src/app/components/investment-chart/investment-chart.component.ts
- 143
+ 146
@@ -1174,7 +1178,7 @@
Performance Absolue Brute
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 73
+ 77
@@ -1182,7 +1186,7 @@
Performance Absolue Nette
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 107
+ 111
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
@@ -1194,7 +1198,7 @@
Performance nette
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 123
+ 127
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
@@ -1206,7 +1210,7 @@
Actifs Totaux
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 149
+ 153
@@ -1214,7 +1218,7 @@
Pouvoir d’Achat
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 241
+ 248
@@ -1222,7 +1226,7 @@
Exclus de l’Analyse
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 267
+ 274
@@ -1230,7 +1234,7 @@
Fortune
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 317
+ 324
@@ -1238,7 +1242,7 @@
Performance annualisée
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 331
+ 338
@@ -1274,7 +1278,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 189
+ 185
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -1290,7 +1294,7 @@
Signaler une Erreur de Données
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 451
+ 456
@@ -1302,7 +1306,7 @@
libs/ui/src/lib/assistant/assistant.component.ts
- 363
+ 362
@@ -1310,11 +1314,11 @@
CDA
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 199
+ 205
libs/ui/src/lib/assistant/assistant.component.ts
- 375
+ 374
@@ -1322,11 +1326,11 @@
1A
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 203
+ 209
libs/ui/src/lib/assistant/assistant.component.ts
- 385
+ 384
@@ -1334,11 +1338,11 @@
5A
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 207
+ 213
libs/ui/src/lib/assistant/assistant.component.ts
- 409
+ 408
@@ -1354,11 +1358,11 @@
Max
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 211
+ 217
libs/ui/src/lib/assistant/assistant.component.ts
- 415
+ 414
@@ -1382,7 +1386,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 195
+ 194
@@ -1394,7 +1398,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 193
+ 192
@@ -1410,7 +1414,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 196
+ 195
@@ -1470,7 +1474,7 @@
Auto
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 70
+ 69
apps/client/src/app/components/user-account-settings/user-account-settings.html
@@ -1514,7 +1518,7 @@
Voulez-vous vraiment supprimer cette méthode de connexion ?
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 282
+ 279
@@ -1582,7 +1586,7 @@
Paramètres régionaux
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 509
+ 512
apps/client/src/app/components/user-account-settings/user-account-settings.html
@@ -1662,7 +1666,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 11
+ 30
@@ -1710,11 +1714,11 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 375
+ 381
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 66
+ 85
apps/client/src/app/pages/accounts/accounts-page.html
@@ -1758,7 +1762,7 @@
Données du marché
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 398
+ 403
libs/common/src/lib/routes/routes.ts
@@ -1902,7 +1906,7 @@
Puisque vous êtes déjà connecté·e, vous ne pouvez pas accéder au compte de démonstration.
apps/client/src/app/pages/demo/demo-page.component.ts
- 35
+ 32
@@ -1990,7 +1994,7 @@
Marchés
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 378
+ 381
apps/client/src/app/components/footer/footer.component.html
@@ -2014,7 +2018,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 40
+ 39
libs/common/src/lib/routes/routes.ts
@@ -2042,7 +2046,7 @@
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
- 115
+ 113
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
@@ -2062,11 +2066,11 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 342
+ 348
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 75
+ 94
apps/client/src/app/pages/portfolio/activities/activities-page.html
@@ -2094,7 +2098,7 @@
Current week
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 191
+ 197
@@ -2138,7 +2142,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 124
+ 120
@@ -2146,7 +2150,7 @@
Prix Unitaire
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 214
+ 210
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -2158,7 +2162,7 @@
Import des données...
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 175
+ 174
@@ -2166,7 +2170,7 @@
L’import est terminé
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 185
+ 184
@@ -2182,7 +2186,7 @@
Validation des données...
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 299
+ 293
@@ -2218,7 +2222,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html
- 71
+ 67
@@ -2310,7 +2314,7 @@
apps/client/src/app/pages/public/public-page.html
- 151
+ 150
@@ -2334,7 +2338,7 @@
apps/client/src/app/pages/public/public-page.html
- 168
+ 167
@@ -2342,7 +2346,7 @@
Latest activities
apps/client/src/app/pages/public/public-page.html
- 211
+ 210
@@ -2354,7 +2358,7 @@
apps/client/src/app/pages/public/public-page.html
- 177
+ 176
@@ -2366,7 +2370,7 @@
apps/client/src/app/pages/public/public-page.html
- 186
+ 185
@@ -2402,7 +2406,7 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 365
+ 372
apps/client/src/app/pages/features/features-page.html
@@ -2410,11 +2414,11 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 202
+ 198
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 76
+ 75
libs/ui/src/lib/i18n.ts
@@ -2434,7 +2438,7 @@
Dépôt
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 377
+ 404
@@ -2442,7 +2446,7 @@
Mensuel
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 91
+ 90
@@ -2546,7 +2550,7 @@
Continents
apps/client/src/app/pages/public/public-page.html
- 132
+ 131
@@ -2562,7 +2566,7 @@
Ghostfolio vous aide à garder un aperçu de votre patrimoine.
apps/client/src/app/pages/public/public-page.html
- 238
+ 237
@@ -2590,7 +2594,7 @@
apps/client/src/app/pages/public/public-page.html
- 242
+ 241
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
@@ -2644,6 +2648,10 @@
apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html
88
+
+ libs/ui/src/lib/value/value.component.html
+ 18
+
Resources
@@ -2696,6 +2704,10 @@
Overview
Aperçu
+
+ apps/client/src/app/components/admin-jobs/admin-jobs.html
+ 7
+
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
114
@@ -2714,11 +2726,11 @@
apps/client/src/app/pages/admin/admin-page.component.ts
- 48
+ 45
apps/client/src/app/pages/resources/resources-page.component.ts
- 30
+ 29
libs/common/src/lib/routes/routes.ts
@@ -2798,7 +2810,7 @@
Voulez-vous vraiment supprimer cette activité ?
libs/ui/src/lib/activities-table/activities-table.component.ts
- 288
+ 292
@@ -2850,11 +2862,11 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 352
+ 359
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 387
+ 414
libs/ui/src/lib/i18n.ts
@@ -2866,7 +2878,7 @@
Épargne
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 397
+ 424
@@ -2894,7 +2906,7 @@
Montrer tout
libs/ui/src/lib/holdings-table/holdings-table.component.html
- 216
+ 212
@@ -2930,7 +2942,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 326
+ 327
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -2938,7 +2950,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 290
+ 286
libs/ui/src/lib/i18n.ts
@@ -2962,7 +2974,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 342
+ 343
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -2970,7 +2982,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 309
+ 305
libs/ui/src/lib/i18n.ts
@@ -2982,7 +2994,7 @@
Fonds d’Urgence
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 164
+ 168
apps/client/src/app/pages/features/features-page.html
@@ -3002,7 +3014,7 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 437
+ 451
@@ -3010,7 +3022,7 @@
Symbole
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 68
+ 77
apps/client/src/app/components/admin-market-data/admin-market-data.html
@@ -3026,7 +3038,7 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 315
+ 318
libs/ui/src/lib/i18n.ts
@@ -3050,7 +3062,7 @@
Cash
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 212
+ 219
libs/ui/src/lib/i18n.ts
@@ -3098,7 +3110,7 @@
Authentication
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 35
+ 54
@@ -3230,7 +3242,7 @@
apps/client/src/app/pages/public/public-page.html
- 196
+ 195
libs/ui/src/lib/benchmark/benchmark.component.html
@@ -3238,11 +3250,11 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 439
+ 453
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 452
+ 467
libs/ui/src/lib/top-holdings/top-holdings.component.html
@@ -3274,7 +3286,7 @@
Annuel
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 92
+ 91
@@ -3282,7 +3294,7 @@
Importer Dividendes
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 137
+ 136
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -3298,7 +3310,7 @@
Valide jusqu’au
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 74
+ 86
libs/ui/src/lib/membership-card/membership-card.component.html
@@ -3337,6 +3349,14 @@
22
+
+ No Activities
+ No Activities
+
+ apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
+ 145
+
+
Retirement Provision
Réserve pour retraite
@@ -3610,11 +3630,11 @@
Could not save asset profile
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 588
+ 604
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 591
+ 607
@@ -3634,7 +3654,7 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 88
+ 92
@@ -3798,7 +3818,7 @@
Voulez-vous vraiment supprimer toutes vos activités ?
libs/ui/src/lib/activities-table/activities-table.component.ts
- 278
+ 282
@@ -3809,6 +3829,14 @@
306
+
+ Explore
+ Explore
+
+ apps/client/src/app/pages/resources/overview/resources-overview.component.html
+ 11
+
+
By
By
@@ -3830,7 +3858,7 @@
Current year
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 199
+ 205
@@ -3846,11 +3874,11 @@
Lien
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 419
+ 422
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 550
+ 553
apps/client/src/app/components/admin-platform/admin-platform.component.html
@@ -3866,7 +3894,7 @@
Asset profile has been saved
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 578
+ 594
@@ -3874,7 +3902,7 @@
Voulez-vous vraiment supprimer cette plateforme ?
apps/client/src/app/components/admin-platform/admin-platform.component.ts
- 106
+ 111
@@ -3882,7 +3910,7 @@
Platformes
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 195
+ 212
@@ -3890,7 +3918,7 @@
Mettre à jour le Solde
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 112
+ 108
@@ -4070,7 +4098,7 @@
Dettes
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 295
+ 302
apps/client/src/app/pages/features/features-page.html
@@ -4226,7 +4254,7 @@
Configuration du Scraper
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 471
+ 474
@@ -4470,7 +4498,7 @@
ETF sans Pays
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 136
+ 135
@@ -4478,7 +4506,7 @@
ETF sans Secteurs
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 141
+ 140
@@ -4486,7 +4514,7 @@
Actifs
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 226
+ 233
@@ -4658,7 +4686,7 @@
Job ID
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 34
+ 43
@@ -4714,11 +4742,11 @@
Devises
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 131
+ 130
apps/client/src/app/pages/public/public-page.html
- 96
+ 95
@@ -4766,11 +4794,11 @@
Could not parse scraper configuration
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 509
+ 525
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 512
+ 528
@@ -5432,7 +5460,7 @@
Frais
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 262
+ 258
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -5464,7 +5492,7 @@
Confirmez la suppression de ce tag ?
apps/client/src/app/components/admin-tag/admin-tag.component.ts
- 103
+ 108
@@ -5532,7 +5560,7 @@
Statut
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 48
+ 67
libs/common/src/lib/routes/routes.ts
@@ -5564,7 +5592,7 @@
Profil d’Actif
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 52
+ 61
@@ -5688,7 +5716,7 @@
Oops! Echec du parsing des données historiques.
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts
- 262
+ 284
@@ -5696,7 +5724,7 @@
Confirmer la suppresion de ce message système?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 206
+ 209
@@ -5720,7 +5748,7 @@
Cash Balances
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
- 148
+ 146
@@ -5740,7 +5768,7 @@
Voulez-vous vraiment supprimer ce solde de compte ?
libs/ui/src/lib/account-balances/account-balances.component.ts
- 120
+ 113
@@ -5756,7 +5784,7 @@
Le prix actuel du marché est
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 706
+ 722
@@ -5764,7 +5792,7 @@
Test
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 568
+ 571
@@ -5852,11 +5880,11 @@
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 81
+ 80
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 97
+ 96
apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
@@ -5876,7 +5904,7 @@
Close Holding
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 442
+ 447
@@ -5916,7 +5944,7 @@
Week to date
libs/ui/src/lib/assistant/assistant.component.ts
- 367
+ 366
@@ -5924,11 +5952,11 @@
WTD
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 191
+ 197
libs/ui/src/lib/assistant/assistant.component.ts
- 367
+ 366
@@ -5936,7 +5964,7 @@
Month to date
libs/ui/src/lib/assistant/assistant.component.ts
- 371
+ 370
@@ -5944,11 +5972,11 @@
MTD
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 195
+ 201
libs/ui/src/lib/assistant/assistant.component.ts
- 371
+ 370
@@ -5956,7 +5984,7 @@
Year to date
libs/ui/src/lib/assistant/assistant.component.ts
- 375
+ 374
@@ -5992,7 +6020,7 @@
année
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 203
+ 209
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
@@ -6004,7 +6032,7 @@
libs/ui/src/lib/assistant/assistant.component.ts
- 385
+ 384
@@ -6012,11 +6040,11 @@
années
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 207
+ 213
libs/ui/src/lib/assistant/assistant.component.ts
- 409
+ 408
@@ -6032,7 +6060,7 @@
Collecter les données
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 587
+ 594
apps/client/src/app/components/admin-overview/admin-overview.html
@@ -6044,7 +6072,7 @@
Général
apps/client/src/app/pages/faq/faq-page.component.ts
- 49
+ 41
@@ -6052,7 +6080,7 @@
Cloud
apps/client/src/app/pages/faq/faq-page.component.ts
- 54
+ 46
libs/common/src/lib/routes/routes.ts
@@ -6064,7 +6092,7 @@
Self-Hosting
apps/client/src/app/pages/faq/faq-page.component.ts
- 60
+ 52
libs/common/src/lib/routes/routes.ts
@@ -6105,7 +6133,7 @@
Actif
apps/client/src/app/components/home-holdings/home-holdings.component.ts
- 64
+ 63
@@ -6113,7 +6141,7 @@
Clôturé
apps/client/src/app/components/home-holdings/home-holdings.component.ts
- 65
+ 64
@@ -6145,7 +6173,7 @@
Execute la tâche
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 220
+ 229
@@ -6153,7 +6181,7 @@
Priorité
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 96
+ 105
@@ -6209,7 +6237,7 @@
Confirmer la suppresion de votre compte Ghostfolio ?
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 208
+ 205
@@ -6257,7 +6285,7 @@
Include in
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 374
+ 377
@@ -6265,7 +6293,7 @@
Oops! Une erreur s’est produite lors de la configuration de l’authentification biométrique.
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 336
+ 333
@@ -6281,7 +6309,7 @@
Benchmarks
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 126
+ 125
@@ -6329,7 +6357,7 @@
Souhaitez-vous affiner votre stratégie d’investissement personnelle ?
apps/client/src/app/pages/public/public-page.html
- 234
+ 233
@@ -6661,7 +6689,7 @@
Erreur
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 697
+ 713
@@ -6713,7 +6741,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 592
+ 599
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -6745,7 +6773,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 345
+ 341
apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html
@@ -6753,7 +6781,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html
- 46
+ 47
libs/ui/src/lib/i18n.ts
@@ -6765,7 +6793,7 @@
Fermer
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 594
+ 601
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -6791,13 +6819,17 @@
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
68
+
+ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
+ 127
+
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
107
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 347
+ 343
libs/ui/src/lib/i18n.ts
@@ -6809,7 +6841,7 @@
Role
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 14
+ 33
@@ -6833,7 +6865,7 @@
Résumé du portefeuille
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 56
+ 65
@@ -6900,6 +6932,14 @@
42
+
+ has been copied to the clipboard
+ has been copied to the clipboard
+
+ libs/ui/src/lib/value/value.component.ts
+ 180
+
+
From the beginning
Depuis le début
@@ -7065,7 +7105,7 @@
Définir clé API
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 171
+ 188
@@ -7101,7 +7141,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 45
+ 44
libs/common/src/lib/routes/routes.ts
@@ -7117,7 +7157,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 34
+ 33
libs/common/src/lib/routes/routes.ts
@@ -7171,7 +7211,7 @@
sur
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 135
+ 152
@@ -7179,7 +7219,7 @@
requêtes journalières
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 137
+ 154
@@ -7187,7 +7227,7 @@
Retirer la clé API
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 161
+ 178
@@ -7195,7 +7235,7 @@
Voulez-vous vraiment supprimer la clé API?
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 127
+ 133
@@ -7215,7 +7255,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 98
+ 117
@@ -7287,7 +7327,7 @@
Sauvegarder
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 603
+ 610
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -7323,11 +7363,11 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 356
+ 352
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html
- 48
+ 49
@@ -7339,7 +7379,7 @@
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 260
+ 257
@@ -7363,7 +7403,7 @@
Veuillez saisir votre clé API Ghostfolio.
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 146
+ 152
@@ -7379,7 +7419,7 @@
Le prompt IA a été copié dans le presse-papiers
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 201
+ 199
@@ -7395,7 +7435,7 @@
Paresseux
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 225
+ 231
@@ -7403,7 +7443,7 @@
Instantané
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 229
+ 235
@@ -7411,7 +7451,7 @@
Prix du marché par défaut
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 481
+ 484
@@ -7419,7 +7459,7 @@
Mode
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 518
+ 521
@@ -7427,7 +7467,7 @@
Selecteur
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 534
+ 537
@@ -7435,7 +7475,7 @@
En-têtes de requête HTTP
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 494
+ 497
@@ -7443,7 +7483,7 @@
fin de journée
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 225
+ 231
@@ -7451,7 +7491,7 @@
temps réel
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 229
+ 235
@@ -7459,7 +7499,7 @@
Ouvrir Duck.ai
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 202
+ 200
@@ -7479,7 +7519,7 @@
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 368
+ 377
@@ -7491,7 +7531,7 @@
apps/client/src/app/components/home-overview/home-overview.component.ts
- 55
+ 54
libs/ui/src/lib/holdings-table/holdings-table.component.html
@@ -7499,11 +7539,11 @@
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 368
+ 377
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 381
+ 390
@@ -7607,11 +7647,11 @@
Jeton de sécurité
apps/client/src/app/components/admin-users/admin-users.component.ts
- 236
+ 235
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 170
+ 167
@@ -7619,7 +7659,7 @@
Voulez-vous vraiment générer un nouveau jeton de sécurité pour cet utilisateur ?
apps/client/src/app/components/admin-users/admin-users.component.ts
- 241
+ 240
@@ -7627,7 +7667,7 @@
Find account, holding or page...
libs/ui/src/lib/assistant/assistant.component.ts
- 151
+ 115
@@ -7692,7 +7732,7 @@
( ) est déjà utilisé.
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 633
+ 649
@@ -7700,7 +7740,7 @@
Une erreur s’est produite lors de la mise à jour vers ( ).
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 641
+ 657
@@ -7764,7 +7804,7 @@
quelqu’un
apps/client/src/app/pages/public/public-page.component.ts
- 59
+ 61
@@ -7796,7 +7836,7 @@
Voulez-vous vraiment supprimer cet élément?
libs/ui/src/lib/benchmark/benchmark.component.ts
- 144
+ 139
@@ -7837,7 +7877,7 @@
Le compte utilisateur de démonstration a été synchronisé.
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 274
+ 277
@@ -7872,25 +7912,25 @@
150
-
+
Fee Ratio
- Ratio de frais
+ Fee Ratio
apps/client/src/app/pages/i18n/i18n-page.html
152
-
- The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
- Les frais dépassent ${thresholdMax}% de votre investissement initial (${feeRatio}%)
+
+ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
+ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
apps/client/src/app/pages/i18n/i18n-page.html
154
-
- The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
- Les frais ne dépassent pas ${thresholdMax}% de votre investissement initial (${feeRatio}%)
+
+ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
+ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
apps/client/src/app/pages/i18n/i18n-page.html
158
@@ -8051,7 +8091,7 @@
Current month
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 195
+ 201
@@ -8059,11 +8099,11 @@
new
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 67
+ 79
apps/client/src/app/pages/admin/admin-page.component.ts
- 56
+ 53
@@ -8220,7 +8260,7 @@
Voulez-vous vraiment générer un nouveau jeton de sécurité?
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 175
+ 172
@@ -8244,7 +8284,7 @@
Actions
apps/client/src/app/components/markets/markets.component.ts
- 52
+ 51
apps/client/src/app/pages/features/features-page.html
@@ -8256,7 +8296,7 @@
Crypto-monnaies
apps/client/src/app/components/markets/markets.component.ts
- 53
+ 52
apps/client/src/app/pages/features/features-page.html
@@ -8276,7 +8316,7 @@
Gérer le profil d’actif
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 466
+ 471
@@ -8696,7 +8736,7 @@
Registration Date
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 26
+ 45
diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf
index 746e1fbd1..b143bbde3 100644
--- a/apps/client/src/locales/messages.it.xlf
+++ b/apps/client/src/locales/messages.it.xlf
@@ -51,7 +51,7 @@
Tipo
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 48
+ 57
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
@@ -107,7 +107,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 309
+ 310
apps/client/src/app/components/admin-platform/admin-platform.component.html
@@ -119,7 +119,7 @@
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 46
+ 58
apps/client/src/app/components/admin-tag/admin-tag.component.html
@@ -135,7 +135,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 139
+ 135
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -179,15 +179,15 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 205
+ 201
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 208
+ 204
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 211
+ 207
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -235,11 +235,11 @@
apps/client/src/app/components/admin-platform/admin-platform.component.html
- 74
+ 78
apps/client/src/app/components/admin-tag/admin-tag.component.html
- 67
+ 71
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -267,11 +267,15 @@
apps/client/src/app/components/admin-platform/admin-platform.component.html
- 85
+ 89
apps/client/src/app/components/admin-tag/admin-tag.component.html
- 78
+ 82
+
+
+ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
+ 22
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -295,7 +299,7 @@
Vuoi davvero eliminare questo account?
libs/ui/src/lib/accounts-table/accounts-table.component.ts
- 150
+ 148
@@ -303,7 +307,7 @@
Elimina i lavori
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 193
+ 202
@@ -311,7 +315,7 @@
Sorgente dei dati
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 82
+ 91
apps/client/src/app/components/admin-market-data/admin-market-data.html
@@ -323,7 +327,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 155
+ 151
libs/ui/src/lib/i18n.ts
@@ -335,7 +339,7 @@
Tentativi
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 120
+ 129
@@ -343,7 +347,7 @@
Creato
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 134
+ 143
@@ -351,7 +355,7 @@
Finito
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 143
+ 152
@@ -359,11 +363,11 @@
Stato
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 152
+ 161
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 92
+ 104
@@ -379,7 +383,7 @@
Profilo dell’asset
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 106
+ 123
libs/ui/src/lib/assistant/assistant.html
@@ -391,11 +395,11 @@
Dati storici del mercato
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 54
+ 63
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 448
+ 451
@@ -403,7 +407,7 @@
Visualizza i dati
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 208
+ 217
@@ -411,7 +415,7 @@
Visualizza Stacktrace
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 216
+ 225
@@ -419,7 +423,7 @@
Elimina il lavoro
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 224
+ 233
@@ -435,7 +439,7 @@
Data
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 161
+ 157
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -503,7 +507,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html
- 44
+ 40
@@ -511,7 +515,7 @@
Vuoi davvero eliminare questo buono?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 193
+ 196
@@ -519,7 +523,7 @@
Vuoi davvero svuotare la cache?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 230
+ 233
@@ -527,7 +531,7 @@
Imposta il messaggio di sistema:
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 250
+ 253
@@ -667,7 +671,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 89
+ 108
@@ -723,7 +727,7 @@
apps/client/src/app/pages/public/public-page.html
- 242
+ 241
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
@@ -739,7 +743,7 @@
apps/client/src/app/components/header/header.component.ts
- 297
+ 298
apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html
@@ -759,15 +763,15 @@
Ops! Token di sicurezza errato.
apps/client/src/app/components/header/header.component.ts
- 312
+ 313
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 154
+ 152
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 193
+ 191
@@ -775,7 +779,7 @@
Gestione delle attività
apps/client/src/app/components/home-holdings/home-holdings.html
- 67
+ 64
@@ -891,7 +895,7 @@
Prestazioni lorde assolute
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 73
+ 77
@@ -899,7 +903,7 @@
Prestazioni nette assolute
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 107
+ 111
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
@@ -911,7 +915,7 @@
Prestazioni nette
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 123
+ 127
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
@@ -923,7 +927,7 @@
Asset totali
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 149
+ 153
@@ -931,7 +935,7 @@
Potere d’acquisto
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 241
+ 248
@@ -939,7 +943,7 @@
Patrimonio netto
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 317
+ 324
@@ -947,7 +951,7 @@
Prestazioni annualizzate
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 331
+ 338
@@ -967,7 +971,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 396
+ 399
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -975,7 +979,7 @@
apps/client/src/app/pages/public/public-page.html
- 114
+ 113
@@ -987,7 +991,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 407
+ 410
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -999,7 +1003,7 @@
Tag
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 201
+ 218
libs/ui/src/lib/tags-selector/tags-selector.component.html
@@ -1015,7 +1019,7 @@
Segnala un’anomalia dei dati
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 451
+ 456
@@ -1043,7 +1047,7 @@
Mostra tutti
libs/ui/src/lib/holdings-table/holdings-table.component.html
- 216
+ 212
@@ -1055,7 +1059,7 @@
libs/ui/src/lib/assistant/assistant.component.ts
- 363
+ 362
@@ -1063,11 +1067,11 @@
anno corrente
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 199
+ 205
libs/ui/src/lib/assistant/assistant.component.ts
- 375
+ 374
@@ -1075,11 +1079,11 @@
1 anno
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 203
+ 209
libs/ui/src/lib/assistant/assistant.component.ts
- 385
+ 384
@@ -1087,11 +1091,11 @@
5 anni
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 207
+ 213
libs/ui/src/lib/assistant/assistant.component.ts
- 409
+ 408
@@ -1107,11 +1111,11 @@
Massimo
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 211
+ 217
libs/ui/src/lib/assistant/assistant.component.ts
- 415
+ 414
@@ -1127,7 +1131,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 196
+ 195
@@ -1219,7 +1223,7 @@
Vuoi davvero rimuovere questo metodo di accesso?
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 282
+ 279
@@ -1279,7 +1283,7 @@
Locale
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 509
+ 512
apps/client/src/app/components/user-account-settings/user-account-settings.html
@@ -1327,7 +1331,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 11
+ 30
@@ -1375,11 +1379,11 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 375
+ 381
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 66
+ 85
apps/client/src/app/pages/accounts/accounts-page.html
@@ -1419,7 +1423,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 316
+ 317
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -1431,7 +1435,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 145
+ 141
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -1611,7 +1615,7 @@
Poiché hai già effettuato l’accesso, non puoi accedere all’account demo.
apps/client/src/app/pages/demo/demo-page.component.ts
- 35
+ 32
@@ -1657,6 +1661,10 @@
Overview
Panoramica
+
+ apps/client/src/app/components/admin-jobs/admin-jobs.html
+ 7
+
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
114
@@ -1675,11 +1683,11 @@
apps/client/src/app/pages/admin/admin-page.component.ts
- 48
+ 45
apps/client/src/app/pages/resources/resources-page.component.ts
- 30
+ 29
libs/common/src/lib/routes/routes.ts
@@ -1695,7 +1703,7 @@
Mercati
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 378
+ 381
apps/client/src/app/components/footer/footer.component.html
@@ -1719,7 +1727,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 40
+ 39
libs/common/src/lib/routes/routes.ts
@@ -1819,7 +1827,7 @@
apps/client/src/app/pages/public/public-page.html
- 151
+ 150
@@ -1915,7 +1923,7 @@
Current week
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 191
+ 197
@@ -1959,7 +1967,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 124
+ 120
@@ -1971,7 +1979,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 189
+ 185
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -1987,7 +1995,7 @@
Prezzo unitario
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 214
+ 210
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -1999,7 +2007,7 @@
Nota
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 432
+ 435
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
@@ -2007,7 +2015,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 275
+ 271
@@ -2019,7 +2027,7 @@
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
- 115
+ 113
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
@@ -2039,11 +2047,11 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 342
+ 348
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 75
+ 94
apps/client/src/app/pages/portfolio/activities/activities-page.html
@@ -2063,7 +2071,7 @@
Importazione dei dati...
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 175
+ 174
@@ -2071,7 +2079,7 @@
L’importazione è stata completata
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 185
+ 184
@@ -2143,7 +2151,7 @@
Continenti
apps/client/src/app/pages/public/public-page.html
- 132
+ 131
@@ -2159,7 +2167,7 @@
Ghostfolio ti permette di tenere traccia della tua ricchezza.
apps/client/src/app/pages/public/public-page.html
- 238
+ 237
@@ -2189,6 +2197,10 @@
apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html
88
+
+ libs/ui/src/lib/value/value.component.html
+ 18
+
Resources
@@ -2307,7 +2319,7 @@
Vuoi davvero eliminare questa attività?
libs/ui/src/lib/activities-table/activities-table.component.ts
- 288
+ 292
@@ -2375,7 +2387,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 193
+ 192
@@ -2391,7 +2403,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 195
+ 194
@@ -2415,7 +2427,7 @@
apps/client/src/app/pages/public/public-page.html
- 168
+ 167
@@ -2423,7 +2435,7 @@
Latest activities
apps/client/src/app/pages/public/public-page.html
- 211
+ 210
@@ -2443,7 +2455,7 @@
apps/client/src/app/pages/public/public-page.html
- 186
+ 185
@@ -2455,7 +2467,7 @@
apps/client/src/app/pages/public/public-page.html
- 177
+ 176
@@ -2487,7 +2499,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 53
+ 72
@@ -2511,7 +2523,7 @@
Risparmio
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 397
+ 424
@@ -2523,11 +2535,11 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 352
+ 359
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 387
+ 414
libs/ui/src/lib/i18n.ts
@@ -2547,7 +2559,7 @@
Deposito
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 377
+ 404
@@ -2555,7 +2567,7 @@
Mensile
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 91
+ 90
@@ -2579,11 +2591,11 @@
Paura
apps/client/src/app/components/home-market/home-market.component.ts
- 42
+ 41
apps/client/src/app/components/markets/markets.component.ts
- 47
+ 46
libs/ui/src/lib/i18n.ts
@@ -2595,11 +2607,11 @@
Avidità
apps/client/src/app/components/home-market/home-market.component.ts
- 43
+ 42
apps/client/src/app/components/markets/markets.component.ts
- 48
+ 47
libs/ui/src/lib/i18n.ts
@@ -2611,7 +2623,7 @@
Filtra per...
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 385
+ 383
@@ -2647,7 +2659,7 @@
Benchmark
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 376
+ 379
apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts
@@ -2659,11 +2671,11 @@
Could not validate form
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 554
+ 570
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 557
+ 573
@@ -2687,7 +2699,7 @@
Escluso dall’analisi
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 267
+ 274
@@ -2695,7 +2707,7 @@
Auto
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 70
+ 69
apps/client/src/app/components/user-account-settings/user-account-settings.html
@@ -2731,7 +2743,7 @@
Importo totale
apps/client/src/app/components/investment-chart/investment-chart.component.ts
- 143
+ 146
@@ -2783,7 +2795,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 326
+ 327
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -2791,7 +2803,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 290
+ 286
libs/ui/src/lib/i18n.ts
@@ -2807,7 +2819,7 @@
Simbolo
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 68
+ 77
apps/client/src/app/components/admin-market-data/admin-market-data.html
@@ -2823,7 +2835,7 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 315
+ 318
libs/ui/src/lib/i18n.ts
@@ -2847,7 +2859,7 @@
Contanti
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 212
+ 219
libs/ui/src/lib/i18n.ts
@@ -2895,7 +2907,7 @@
Authentication
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 35
+ 54
@@ -2959,7 +2971,7 @@
Fondo di emergenza
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 164
+ 168
apps/client/src/app/pages/features/features-page.html
@@ -2979,7 +2991,7 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 437
+ 451
@@ -2991,7 +3003,7 @@
apps/client/src/app/pages/public/public-page.html
- 196
+ 195
libs/ui/src/lib/benchmark/benchmark.component.html
@@ -2999,11 +3011,11 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 439
+ 453
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 452
+ 467
libs/ui/src/lib/top-holdings/top-holdings.component.html
@@ -3107,7 +3119,7 @@
Mappatura dei simboli
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 384
+ 387
@@ -3131,7 +3143,7 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 365
+ 372
apps/client/src/app/pages/features/features-page.html
@@ -3139,11 +3151,11 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 202
+ 198
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 76
+ 75
libs/ui/src/lib/i18n.ts
@@ -3171,7 +3183,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 342
+ 343
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -3179,7 +3191,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 309
+ 305
libs/ui/src/lib/i18n.ts
@@ -3199,7 +3211,7 @@
Convalida dei dati...
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 299
+ 293
@@ -3215,7 +3227,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html
- 71
+ 67
@@ -3223,7 +3235,7 @@
Dati del mercato
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 398
+ 403
libs/common/src/lib/routes/routes.ts
@@ -3240,7 +3252,7 @@
Summary
- Summario
+ Riepilogo
apps/client/src/app/components/home-summary/home-summary.html
2
@@ -3275,7 +3287,7 @@
Annuale
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 92
+ 91
@@ -3283,7 +3295,7 @@
Importa i dividendi
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 137
+ 136
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -3299,7 +3311,7 @@
Valido fino a
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 74
+ 86
libs/ui/src/lib/membership-card/membership-card.component.html
@@ -3338,6 +3350,14 @@
22
+
+ No Activities
+ No Activities
+
+ apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
+ 145
+
+
Retirement Provision
Fondo pensione
@@ -3611,11 +3631,11 @@
Could not save asset profile
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 588
+ 604
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 591
+ 607
@@ -3635,7 +3655,7 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 88
+ 92
@@ -3799,7 +3819,7 @@
Vuoi davvero eliminare tutte le tue attività?
libs/ui/src/lib/activities-table/activities-table.component.ts
- 278
+ 282
@@ -3810,6 +3830,14 @@
306
+
+ Explore
+ Explore
+
+ apps/client/src/app/pages/resources/overview/resources-overview.component.html
+ 11
+
+
By
By
@@ -3831,7 +3859,7 @@
Current year
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 199
+ 205
@@ -3847,11 +3875,11 @@
Url
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 419
+ 422
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 550
+ 553
apps/client/src/app/components/admin-platform/admin-platform.component.html
@@ -3867,7 +3895,7 @@
Asset profile has been saved
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 578
+ 594
@@ -3875,7 +3903,7 @@
Vuoi davvero eliminare questa piattaforma?
apps/client/src/app/components/admin-platform/admin-platform.component.ts
- 106
+ 111
@@ -3883,7 +3911,7 @@
Piattaforme
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 195
+ 212
@@ -3891,7 +3919,7 @@
Aggiornamento del saldo di cassa
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 112
+ 108
@@ -4071,7 +4099,7 @@
Passività
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 295
+ 302
apps/client/src/app/pages/features/features-page.html
@@ -4227,7 +4255,7 @@
Configurazione dello scraper
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 471
+ 474
@@ -4471,7 +4499,7 @@
ETF senza paesi
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 136
+ 135
@@ -4479,7 +4507,7 @@
ETF senza settori
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 141
+ 140
@@ -4487,7 +4515,7 @@
Asset
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 226
+ 233
@@ -4659,7 +4687,7 @@
Job ID
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 34
+ 43
@@ -4715,11 +4743,11 @@
Valute
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 131
+ 130
apps/client/src/app/pages/public/public-page.html
- 96
+ 95
@@ -4767,11 +4795,11 @@
Could not parse scraper configuration
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 509
+ 525
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 512
+ 528
@@ -5433,7 +5461,7 @@
Commissione
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 262
+ 258
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -5465,7 +5493,7 @@
Sei sicuro di voler eliminare questo tag?
apps/client/src/app/components/admin-tag/admin-tag.component.ts
- 103
+ 108
@@ -5533,7 +5561,7 @@
Iscrizione
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 48
+ 67
libs/common/src/lib/routes/routes.ts
@@ -5565,7 +5593,7 @@
Profilo dell’asset
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 52
+ 61
@@ -5689,7 +5717,7 @@
Ops! Impossibile elaborare i dati storici.
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts
- 262
+ 284
@@ -5697,7 +5725,7 @@
Confermi di voler cancellare questo messaggio di sistema?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 206
+ 209
@@ -5721,7 +5749,7 @@
Saldi di cassa
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
- 148
+ 146
@@ -5741,7 +5769,7 @@
Vuoi veramente elimnare il saldo di questo conto?
libs/ui/src/lib/account-balances/account-balances.component.ts
- 120
+ 113
@@ -5757,7 +5785,7 @@
L’attuale prezzo di mercato è
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 706
+ 722
@@ -5765,7 +5793,7 @@
Prova
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 568
+ 571
@@ -5853,11 +5881,11 @@
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 81
+ 80
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 97
+ 96
apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
@@ -5877,7 +5905,7 @@
Close Holding
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 442
+ 447
@@ -5917,7 +5945,7 @@
Da inizio settimana
libs/ui/src/lib/assistant/assistant.component.ts
- 367
+ 366
@@ -5925,11 +5953,11 @@
Settimana corrente
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 191
+ 197
libs/ui/src/lib/assistant/assistant.component.ts
- 367
+ 366
@@ -5937,7 +5965,7 @@
Da inizio mese
libs/ui/src/lib/assistant/assistant.component.ts
- 371
+ 370
@@ -5945,11 +5973,11 @@
Mese corrente
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 195
+ 201
libs/ui/src/lib/assistant/assistant.component.ts
- 371
+ 370
@@ -5957,7 +5985,7 @@
Da inizio anno
libs/ui/src/lib/assistant/assistant.component.ts
- 375
+ 374
@@ -5993,7 +6021,7 @@
anno
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 203
+ 209
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
@@ -6005,7 +6033,7 @@
libs/ui/src/lib/assistant/assistant.component.ts
- 385
+ 384
@@ -6013,11 +6041,11 @@
anni
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 207
+ 213
libs/ui/src/lib/assistant/assistant.component.ts
- 409
+ 408
@@ -6033,7 +6061,7 @@
Raccolta Dati
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 587
+ 594
apps/client/src/app/components/admin-overview/admin-overview.html
@@ -6045,7 +6073,7 @@
Generale
apps/client/src/app/pages/faq/faq-page.component.ts
- 49
+ 41
@@ -6053,7 +6081,7 @@
Cloud
apps/client/src/app/pages/faq/faq-page.component.ts
- 54
+ 46
libs/common/src/lib/routes/routes.ts
@@ -6065,7 +6093,7 @@
Self-Hosting
apps/client/src/app/pages/faq/faq-page.component.ts
- 60
+ 52
libs/common/src/lib/routes/routes.ts
@@ -6106,7 +6134,7 @@
Attivo
apps/client/src/app/components/home-holdings/home-holdings.component.ts
- 64
+ 63
@@ -6114,7 +6142,7 @@
Chiuso
apps/client/src/app/components/home-holdings/home-holdings.component.ts
- 65
+ 64
@@ -6146,7 +6174,7 @@
Esegui il lavoro
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 220
+ 229
@@ -6154,7 +6182,7 @@
Priorità
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 96
+ 105
@@ -6210,7 +6238,7 @@
Confermi di voler chiudere il tuo account Ghostfolio?
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 208
+ 205
@@ -6258,7 +6286,7 @@
Include in
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 374
+ 377
@@ -6266,7 +6294,7 @@
Ops! C’è stato un errore impostando l’autenticazione biometrica.
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 336
+ 333
@@ -6282,7 +6310,7 @@
Benchmarks
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 126
+ 125
@@ -6330,7 +6358,7 @@
Vorresti perfezionare la tua strategia personale di investimento ?
apps/client/src/app/pages/public/public-page.html
- 234
+ 233
@@ -6662,7 +6690,7 @@
Errore
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 697
+ 713
@@ -6714,7 +6742,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 592
+ 599
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -6746,7 +6774,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 345
+ 341
apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html
@@ -6754,7 +6782,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html
- 46
+ 47
libs/ui/src/lib/i18n.ts
@@ -6766,7 +6794,7 @@
Chiudi
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 594
+ 601
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -6792,13 +6820,17 @@
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
68
+
+ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
+ 127
+
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
107
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 347
+ 343
libs/ui/src/lib/i18n.ts
@@ -6810,7 +6842,7 @@
Role
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 14
+ 33
@@ -6834,7 +6866,7 @@
Stato del Portfolio
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 56
+ 65
@@ -6901,6 +6933,14 @@
42
+
+ has been copied to the clipboard
+ has been copied to the clipboard
+
+ libs/ui/src/lib/value/value.component.ts
+ 180
+
+
From the beginning
Dall’inizio
@@ -7066,7 +7106,7 @@
Imposta API Key
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 171
+ 188
@@ -7102,7 +7142,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 45
+ 44
libs/common/src/lib/routes/routes.ts
@@ -7118,7 +7158,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 34
+ 33
libs/common/src/lib/routes/routes.ts
@@ -7172,7 +7212,7 @@
di
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 135
+ 152
@@ -7180,7 +7220,7 @@
richieste giornaliere
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 137
+ 154
@@ -7188,7 +7228,7 @@
Rimuovi API key
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 161
+ 178
@@ -7196,7 +7236,7 @@
Vuoi davvero eliminare l’API key?
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 127
+ 133
@@ -7216,7 +7256,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 98
+ 117
@@ -7288,7 +7328,7 @@
Salva
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 603
+ 610
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -7324,11 +7364,11 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 356
+ 352
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html
- 48
+ 49
@@ -7340,7 +7380,7 @@
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 260
+ 257
@@ -7364,7 +7404,7 @@
Inserisci la tua API key di Ghostfolio.
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 146
+ 152
@@ -7380,7 +7420,7 @@
L’AI prompt è stato copiato negli appunti
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 201
+ 199
@@ -7396,7 +7436,7 @@
Pigro
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 225
+ 231
@@ -7404,7 +7444,7 @@
Istantaneo
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 229
+ 235
@@ -7412,7 +7452,7 @@
Prezzo di mercato predefinito
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 481
+ 484
@@ -7420,7 +7460,7 @@
Modalità
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 518
+ 521
@@ -7428,7 +7468,7 @@
Selettore
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 534
+ 537
@@ -7436,7 +7476,7 @@
Intestazioni della richiesta HTTP
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 494
+ 497
@@ -7444,7 +7484,7 @@
fine giornata
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 225
+ 231
@@ -7452,7 +7492,7 @@
in tempo reale
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 229
+ 235
@@ -7460,7 +7500,7 @@
Apri Duck.ai
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 202
+ 200
@@ -7480,7 +7520,7 @@
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 368
+ 377
@@ -7492,7 +7532,7 @@
apps/client/src/app/components/home-overview/home-overview.component.ts
- 55
+ 54
libs/ui/src/lib/holdings-table/holdings-table.component.html
@@ -7500,11 +7540,11 @@
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 368
+ 377
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 381
+ 390
@@ -7608,11 +7648,11 @@
Token di sicurezza
apps/client/src/app/components/admin-users/admin-users.component.ts
- 236
+ 235
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 170
+ 167
@@ -7620,7 +7660,7 @@
Vuoi davvero generare un nuovo token di sicurezza per questo utente?
apps/client/src/app/components/admin-users/admin-users.component.ts
- 241
+ 240
@@ -7628,7 +7668,7 @@
Find account, holding or page...
libs/ui/src/lib/assistant/assistant.component.ts
- 151
+ 115
@@ -7693,7 +7733,7 @@
( ) e gia in uso.
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 633
+ 649
@@ -7701,7 +7741,7 @@
Si è verificato un errore durante l’aggiornamento di ( ).
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 641
+ 657
@@ -7765,7 +7805,7 @@
qualcuno
apps/client/src/app/pages/public/public-page.component.ts
- 59
+ 61
@@ -7797,7 +7837,7 @@
Vuoi davvero eliminare questo elemento?
libs/ui/src/lib/benchmark/benchmark.component.ts
- 144
+ 139
@@ -7838,7 +7878,7 @@
L’account utente demo è stato sincronizzato.
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 274
+ 277
@@ -7873,25 +7913,25 @@
150
-
+
Fee Ratio
- Rapporto tariffario
+ Fee Ratio
apps/client/src/app/pages/i18n/i18n-page.html
152
-
- The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
- Le commissioni superano il ${thresholdMax}% del tuo investimento iniziale (${feeRatio}%)
+
+ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
+ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
apps/client/src/app/pages/i18n/i18n-page.html
154
-
- The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
- Le commissioni non superano il ${thresholdMax}% del tuo investimento iniziale (${feeRatio}%)
+
+ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
+ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
apps/client/src/app/pages/i18n/i18n-page.html
158
@@ -8052,7 +8092,7 @@
Current month
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 195
+ 201
@@ -8060,11 +8100,11 @@
nuovo
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 67
+ 79
apps/client/src/app/pages/admin/admin-page.component.ts
- 56
+ 53
@@ -8221,7 +8261,7 @@
Vuoi davvero generare un nuovo token di sicurezza?
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 175
+ 172
@@ -8245,7 +8285,7 @@
Azioni
apps/client/src/app/components/markets/markets.component.ts
- 52
+ 51
apps/client/src/app/pages/features/features-page.html
@@ -8257,7 +8297,7 @@
criptovalute
apps/client/src/app/components/markets/markets.component.ts
- 53
+ 52
apps/client/src/app/pages/features/features-page.html
@@ -8277,7 +8317,7 @@
Gestisci profilo risorsa
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 466
+ 471
@@ -8697,7 +8737,7 @@
Registration Date
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 26
+ 45
diff --git a/apps/client/src/locales/messages.ko.xlf b/apps/client/src/locales/messages.ko.xlf
index 67443706b..4f544e4aa 100644
--- a/apps/client/src/locales/messages.ko.xlf
+++ b/apps/client/src/locales/messages.ko.xlf
@@ -252,7 +252,7 @@
유형
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 48
+ 57
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
@@ -336,7 +336,7 @@
현금 잔액
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
- 148
+ 146
@@ -360,7 +360,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 309
+ 310
apps/client/src/app/components/admin-platform/admin-platform.component.html
@@ -372,7 +372,7 @@
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 46
+ 58
apps/client/src/app/components/admin-tag/admin-tag.component.html
@@ -388,7 +388,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 139
+ 135
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -432,7 +432,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 316
+ 317
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -444,7 +444,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 145
+ 141
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -464,15 +464,15 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 205
+ 201
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 208
+ 204
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 211
+ 207
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -520,11 +520,11 @@
apps/client/src/app/components/admin-platform/admin-platform.component.html
- 74
+ 78
apps/client/src/app/components/admin-tag/admin-tag.component.html
- 67
+ 71
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -552,11 +552,15 @@
apps/client/src/app/components/admin-platform/admin-platform.component.html
- 85
+ 89
apps/client/src/app/components/admin-tag/admin-tag.component.html
- 78
+ 82
+
+
+ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
+ 22
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -580,7 +584,7 @@
이 계정을 정말 삭제하시겠습니까?
libs/ui/src/lib/accounts-table/accounts-table.component.ts
- 150
+ 148
@@ -588,7 +592,7 @@
자산 프로필
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 52
+ 61
@@ -596,11 +600,11 @@
과거 시장 데이터
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 54
+ 63
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 448
+ 451
@@ -608,7 +612,7 @@
데이터 소스
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 82
+ 91
apps/client/src/app/components/admin-market-data/admin-market-data.html
@@ -620,7 +624,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 155
+ 151
libs/ui/src/lib/i18n.ts
@@ -632,7 +636,7 @@
시도 횟수
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 120
+ 129
@@ -640,7 +644,7 @@
생성됨
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 134
+ 143
@@ -648,7 +652,7 @@
완료됨
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 143
+ 152
@@ -656,11 +660,11 @@
상태
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 152
+ 161
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 92
+ 104
@@ -676,7 +680,7 @@
작업 삭제
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 193
+ 202
@@ -684,7 +688,7 @@
데이터 보기
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 208
+ 217
@@ -692,7 +696,7 @@
스택트레이스 보기
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 216
+ 225
@@ -700,7 +704,7 @@
작업 삭제
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 224
+ 233
@@ -716,7 +720,7 @@
날짜
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 161
+ 157
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -752,11 +756,11 @@
통화
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 131
+ 130
apps/client/src/app/pages/public/public-page.html
- 96
+ 95
@@ -764,7 +768,7 @@
국가 정보 없는 ETF
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 136
+ 135
@@ -772,7 +776,7 @@
섹터 정보 없는 ETF
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 141
+ 140
@@ -788,7 +792,7 @@
다음 기준으로 필터...
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 385
+ 383
@@ -828,7 +832,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html
- 44
+ 40
@@ -880,7 +884,7 @@
이런! 과거 데이터를 파싱할 수 없습니다.
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts
- 262
+ 284
@@ -912,7 +916,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html
- 71
+ 67
@@ -944,7 +948,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 53
+ 72
@@ -956,7 +960,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 396
+ 399
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -964,7 +968,7 @@
apps/client/src/app/pages/public/public-page.html
- 114
+ 113
@@ -976,7 +980,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 407
+ 410
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -988,7 +992,7 @@
심볼 매핑
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 384
+ 387
@@ -1004,7 +1008,7 @@
스크래퍼 설정
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 471
+ 474
@@ -1012,7 +1016,7 @@
메모
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 432
+ 435
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
@@ -1020,7 +1024,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 275
+ 271
@@ -1064,7 +1068,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 124
+ 120
@@ -1072,7 +1076,7 @@
이 쿠폰을 정말 삭제하시겠습니까?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 193
+ 196
@@ -1080,7 +1084,7 @@
이 시스템 메시지를 정말 삭제하시겠습니까?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 206
+ 209
@@ -1088,7 +1092,7 @@
정말로 캐시를 플러시하시겠습니까?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 230
+ 233
@@ -1096,7 +1100,7 @@
시스템 메시지를 설정하십시오:
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 250
+ 253
@@ -1220,11 +1224,11 @@
링크
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 419
+ 422
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 550
+ 553
apps/client/src/app/components/admin-platform/admin-platform.component.html
@@ -1240,7 +1244,7 @@
Asset profile has been saved
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 578
+ 594
@@ -1248,7 +1252,15 @@
정말로 이 플랫폼을 삭제하시겠습니까?
apps/client/src/app/components/admin-platform/admin-platform.component.ts
- 106
+ 111
+
+
+
+ Explore
+ Explore
+
+ apps/client/src/app/pages/resources/overview/resources-overview.component.html
+ 11
@@ -1272,7 +1284,7 @@
올해
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 199
+ 205
@@ -1288,7 +1300,7 @@
플랫폼
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 195
+ 212
@@ -1296,7 +1308,7 @@
태그
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 201
+ 218
libs/ui/src/lib/tags-selector/tags-selector.component.html
@@ -1320,7 +1332,7 @@
이 태그를 정말로 삭제하시겠습니까?
apps/client/src/app/components/admin-tag/admin-tag.component.ts
- 103
+ 108
@@ -1380,7 +1392,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 89
+ 108
@@ -1412,11 +1424,11 @@
Could not validate form
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 554
+ 570
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 557
+ 573
@@ -1464,7 +1476,7 @@
기준
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 376
+ 379
apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts
@@ -1500,7 +1512,7 @@
apps/client/src/app/components/header/header.component.ts
- 297
+ 298
apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html
@@ -1520,15 +1532,15 @@
이런! 잘못된 보안 토큰.
apps/client/src/app/components/header/header.component.ts
- 312
+ 313
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 154
+ 152
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 193
+ 191
@@ -1536,7 +1548,7 @@
활동 관리
apps/client/src/app/components/home-holdings/home-holdings.html
- 67
+ 64
@@ -1544,11 +1556,11 @@
두려움
apps/client/src/app/components/home-market/home-market.component.ts
- 42
+ 41
apps/client/src/app/components/markets/markets.component.ts
- 47
+ 46
libs/ui/src/lib/i18n.ts
@@ -1560,11 +1572,11 @@
탐욕
apps/client/src/app/components/home-market/home-market.component.ts
- 43
+ 42
apps/client/src/app/components/markets/markets.component.ts
- 48
+ 47
libs/ui/src/lib/i18n.ts
@@ -1668,7 +1680,7 @@
이번주
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 191
+ 197
@@ -1688,7 +1700,7 @@
총액
apps/client/src/app/components/investment-chart/investment-chart.component.ts
- 143
+ 146
@@ -1800,7 +1812,7 @@
절대 총 성과
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 73
+ 77
@@ -1812,7 +1824,7 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 88
+ 92
@@ -1820,7 +1832,7 @@
절대 순 성과
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 107
+ 111
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
@@ -1832,7 +1844,7 @@
순 성과
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 123
+ 127
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
@@ -1844,7 +1856,7 @@
총자산
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 149
+ 153
@@ -1852,7 +1864,7 @@
자산
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 226
+ 233
@@ -1860,7 +1872,7 @@
매수 가능 금액
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 241
+ 248
@@ -1868,7 +1880,7 @@
분석에서 제외됨
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 267
+ 274
@@ -1876,7 +1888,7 @@
부채
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 295
+ 302
apps/client/src/app/pages/features/features-page.html
@@ -1888,7 +1900,7 @@
순자산
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 317
+ 324
@@ -1896,7 +1908,7 @@
연환산 성과
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 331
+ 338
@@ -1932,7 +1944,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 189
+ 185
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -1948,7 +1960,7 @@
데이터 결함 보고
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 451
+ 456
@@ -2128,7 +2140,7 @@
libs/ui/src/lib/assistant/assistant.component.ts
- 363
+ 362
@@ -2136,11 +2148,11 @@
연초 대비
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 199
+ 205
libs/ui/src/lib/assistant/assistant.component.ts
- 375
+ 374
@@ -2148,11 +2160,11 @@
1년
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 203
+ 209
libs/ui/src/lib/assistant/assistant.component.ts
- 385
+ 384
@@ -2160,11 +2172,11 @@
5년
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 207
+ 213
libs/ui/src/lib/assistant/assistant.component.ts
- 409
+ 408
@@ -2180,11 +2192,11 @@
맥스
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 211
+ 217
libs/ui/src/lib/assistant/assistant.component.ts
- 415
+ 414
@@ -2284,7 +2296,7 @@
자동
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 70
+ 69
apps/client/src/app/components/user-account-settings/user-account-settings.html
@@ -2296,7 +2308,7 @@
이 로그인 방법을 정말로 제거하시겠습니까?
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 282
+ 279
@@ -2336,7 +2348,7 @@
장소
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 509
+ 512
apps/client/src/app/components/user-account-settings/user-account-settings.html
@@ -2448,7 +2460,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 11
+ 30
@@ -2480,7 +2492,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 195
+ 194
@@ -2492,7 +2504,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 193
+ 192
@@ -2508,7 +2520,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 196
+ 195
@@ -2636,11 +2648,11 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 375
+ 381
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 66
+ 85
apps/client/src/app/pages/accounts/accounts-page.html
@@ -2732,7 +2744,7 @@
시장 데이터
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 398
+ 403
libs/common/src/lib/routes/routes.ts
@@ -2766,6 +2778,10 @@
Overview
개요
+
+ apps/client/src/app/components/admin-jobs/admin-jobs.html
+ 7
+
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
114
@@ -2784,11 +2800,11 @@
apps/client/src/app/pages/admin/admin-page.component.ts
- 48
+ 45
apps/client/src/app/pages/resources/resources-page.component.ts
- 30
+ 29
libs/common/src/lib/routes/routes.ts
@@ -2912,11 +2928,11 @@
Could not parse scraper configuration
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 509
+ 525
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 512
+ 528
@@ -2932,7 +2948,7 @@
이미 로그인되어 있으므로 데모 계정에 접근할 수 없습니다.
apps/client/src/app/pages/demo/demo-page.component.ts
- 35
+ 32
@@ -3104,7 +3120,7 @@
apps/client/src/app/pages/public/public-page.html
- 242
+ 241
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
@@ -3156,7 +3172,7 @@
시장
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 378
+ 381
apps/client/src/app/components/footer/footer.component.html
@@ -3180,7 +3196,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 40
+ 39
libs/common/src/lib/routes/routes.ts
@@ -3612,7 +3628,7 @@
작업 ID
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 34
+ 43
@@ -3648,7 +3664,7 @@
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
- 115
+ 113
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
@@ -3668,11 +3684,11 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 342
+ 348
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 75
+ 94
apps/client/src/app/pages/portfolio/activities/activities-page.html
@@ -3692,7 +3708,7 @@
정말로 이 활동을 삭제하시겠습니까?
libs/ui/src/lib/activities-table/activities-table.component.ts
- 278
+ 282
@@ -3760,7 +3776,7 @@
현금 잔액 업데이트
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 112
+ 108
@@ -3768,7 +3784,7 @@
단가
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 214
+ 210
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -3796,7 +3812,7 @@
배당금 가져오기
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 137
+ 136
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -3812,7 +3828,7 @@
데이터 가져오는 중...
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 175
+ 174
@@ -3820,7 +3836,7 @@
가져오기가 완료되었습니다.
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 185
+ 184
@@ -3836,7 +3852,7 @@
데이터 유효성을 검사하는 중...
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 299
+ 293
@@ -4008,7 +4024,7 @@
apps/client/src/app/pages/public/public-page.html
- 151
+ 150
@@ -4032,7 +4048,7 @@
apps/client/src/app/pages/public/public-page.html
- 168
+ 167
@@ -4040,7 +4056,7 @@
최신 활동
apps/client/src/app/pages/public/public-page.html
- 211
+ 210
@@ -4052,7 +4068,7 @@
apps/client/src/app/pages/public/public-page.html
- 177
+ 176
@@ -4064,7 +4080,7 @@
apps/client/src/app/pages/public/public-page.html
- 186
+ 185
@@ -4124,7 +4140,7 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 365
+ 372
apps/client/src/app/pages/features/features-page.html
@@ -4132,11 +4148,11 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 202
+ 198
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 76
+ 75
libs/ui/src/lib/i18n.ts
@@ -4156,7 +4172,7 @@
보증금
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 377
+ 404
@@ -4164,7 +4180,7 @@
월간
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 91
+ 90
@@ -4172,7 +4188,7 @@
매년
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 92
+ 91
@@ -4452,11 +4468,11 @@
Could not save asset profile
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 588
+ 604
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 591
+ 607
@@ -4480,7 +4496,7 @@
대륙
apps/client/src/app/pages/public/public-page.html
- 132
+ 131
@@ -4496,7 +4512,7 @@
Ghostfolio는 귀하의 재산을 추적할 수 있도록 해줍니다.
apps/client/src/app/pages/public/public-page.html
- 238
+ 237
@@ -4526,6 +4542,10 @@
apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html
88
+
+ libs/ui/src/lib/value/value.component.html
+ 18
+
Personal Finance Tools
@@ -4869,7 +4889,7 @@
멤버십
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 48
+ 67
libs/common/src/lib/routes/routes.ts
@@ -4937,7 +4957,7 @@
정말로 이 계정 잔액을 삭제하시겠습니까?
libs/ui/src/lib/account-balances/account-balances.component.ts
- 120
+ 113
@@ -4993,7 +5013,7 @@
정말로 이 활동을 삭제하시겠습니까?
libs/ui/src/lib/activities-table/activities-table.component.ts
- 288
+ 292
@@ -5001,7 +5021,7 @@
자산 프로필
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 106
+ 123
libs/ui/src/lib/assistant/assistant.html
@@ -5113,11 +5133,11 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 352
+ 359
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 387
+ 414
libs/ui/src/lib/i18n.ts
@@ -5129,7 +5149,7 @@
저금
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 397
+ 424
@@ -5157,7 +5177,7 @@
모두 표시
libs/ui/src/lib/holdings-table/holdings-table.component.html
- 216
+ 212
@@ -5201,7 +5221,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 326
+ 327
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -5209,7 +5229,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 290
+ 286
libs/ui/src/lib/i18n.ts
@@ -5233,7 +5253,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 342
+ 343
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -5241,7 +5261,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 309
+ 305
libs/ui/src/lib/i18n.ts
@@ -5285,7 +5305,7 @@
비상자금
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 164
+ 168
apps/client/src/app/pages/features/features-page.html
@@ -5361,7 +5381,7 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 437
+ 451
@@ -5372,6 +5392,14 @@
27
+
+ No Activities
+ No Activities
+
+ apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
+ 145
+
+
Retirement Provision
퇴직금
@@ -5401,7 +5429,7 @@
상징
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 68
+ 77
apps/client/src/app/components/admin-market-data/admin-market-data.html
@@ -5417,7 +5445,7 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 315
+ 318
libs/ui/src/lib/i18n.ts
@@ -5489,7 +5517,7 @@
요금
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 262
+ 258
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -5533,7 +5561,7 @@
현금
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 212
+ 219
libs/ui/src/lib/i18n.ts
@@ -5581,7 +5609,7 @@
입증
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 35
+ 54
@@ -5725,7 +5753,7 @@
유효기간
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 74
+ 86
libs/ui/src/lib/membership-card/membership-card.component.html
@@ -5749,7 +5777,7 @@
apps/client/src/app/pages/public/public-page.html
- 196
+ 195
libs/ui/src/lib/benchmark/benchmark.component.html
@@ -5757,11 +5785,11 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 439
+ 453
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 452
+ 467
libs/ui/src/lib/top-holdings/top-holdings.component.html
@@ -5789,7 +5817,7 @@
현재 시장가격은
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 706
+ 722
@@ -5797,7 +5825,7 @@
시험
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 568
+ 571
@@ -5877,7 +5905,7 @@
닫기 보유
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 442
+ 447
@@ -5901,11 +5929,11 @@
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 81
+ 80
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 97
+ 96
apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
@@ -5941,7 +5969,7 @@
연초 현재
libs/ui/src/lib/assistant/assistant.component.ts
- 375
+ 374
@@ -5949,7 +5977,7 @@
이번주 현재까지
libs/ui/src/lib/assistant/assistant.component.ts
- 367
+ 366
@@ -5957,7 +5985,7 @@
월간 누계
libs/ui/src/lib/assistant/assistant.component.ts
- 371
+ 370
@@ -5965,11 +5993,11 @@
MTD
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 195
+ 201
libs/ui/src/lib/assistant/assistant.component.ts
- 371
+ 370
@@ -5977,11 +6005,11 @@
WTD
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 191
+ 197
libs/ui/src/lib/assistant/assistant.component.ts
- 367
+ 366
@@ -6017,7 +6045,7 @@
년도
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 203
+ 209
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
@@ -6029,7 +6057,7 @@
libs/ui/src/lib/assistant/assistant.component.ts
- 385
+ 384
@@ -6037,11 +6065,11 @@
연령
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 207
+ 213
libs/ui/src/lib/assistant/assistant.component.ts
- 409
+ 408
@@ -6070,7 +6098,7 @@
셀프 호스팅
apps/client/src/app/pages/faq/faq-page.component.ts
- 60
+ 52
libs/common/src/lib/routes/routes.ts
@@ -6082,7 +6110,7 @@
데이터 수집
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 587
+ 594
apps/client/src/app/components/admin-overview/admin-overview.html
@@ -6094,7 +6122,7 @@
일반적인
apps/client/src/app/pages/faq/faq-page.component.ts
- 49
+ 41
@@ -6102,7 +6130,7 @@
구름
apps/client/src/app/pages/faq/faq-page.component.ts
- 54
+ 46
libs/common/src/lib/routes/routes.ts
@@ -6130,7 +6158,7 @@
닫은
apps/client/src/app/components/home-holdings/home-holdings.component.ts
- 65
+ 64
@@ -6138,7 +6166,7 @@
활동적인
apps/client/src/app/components/home-holdings/home-holdings.component.ts
- 64
+ 63
@@ -6170,7 +6198,7 @@
작업 실행
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 220
+ 229
@@ -6186,7 +6214,7 @@
우선 사항
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 96
+ 105
@@ -6242,7 +6270,7 @@
정말로 Ghostfolio 계정을 폐쇄하시겠습니까?
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 208
+ 205
@@ -6282,7 +6310,7 @@
포함
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 374
+ 377
@@ -6290,7 +6318,7 @@
이런! 생체 인증을 설정하는 중에 오류가 발생했습니다.
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 336
+ 333
@@ -6330,7 +6358,7 @@
벤치마크
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 126
+ 125
@@ -6354,7 +6382,7 @@
개인 투자 전략 을 개선 하시겠습니까?
apps/client/src/app/pages/public/public-page.html
- 234
+ 233
@@ -6686,7 +6714,7 @@
오류
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 697
+ 713
@@ -6698,7 +6726,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 592
+ 599
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -6730,7 +6758,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 345
+ 341
apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html
@@ -6738,7 +6766,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html
- 46
+ 47
libs/ui/src/lib/i18n.ts
@@ -6750,7 +6778,7 @@
역할
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 14
+ 33
@@ -6782,7 +6810,7 @@
닫다
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 594
+ 601
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -6808,13 +6836,17 @@
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
68
+
+ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
+ 127
+
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
107
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 347
+ 343
libs/ui/src/lib/i18n.ts
@@ -6874,7 +6906,7 @@
포트폴리오 스냅샷
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 56
+ 65
@@ -6933,6 +6965,14 @@
42
+
+ has been copied to the clipboard
+ has been copied to the clipboard
+
+ libs/ui/src/lib/value/value.component.ts
+ 180
+
+
offers a free plan
은(는) 무료 요금제를 제공합니다
@@ -7090,7 +7130,7 @@
API 키 설정
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 171
+ 188
@@ -7126,7 +7166,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 45
+ 44
libs/common/src/lib/routes/routes.ts
@@ -7155,7 +7195,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 34
+ 33
libs/common/src/lib/routes/routes.ts
@@ -7204,7 +7244,7 @@
~의
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 135
+ 152
@@ -7212,7 +7252,7 @@
API 키를 정말로 삭제하시겠습니까?
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 127
+ 133
@@ -7220,7 +7260,7 @@
API 키 제거
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 161
+ 178
@@ -7228,7 +7268,7 @@
일일 요청
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 137
+ 154
@@ -7256,7 +7296,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 98
+ 117
@@ -7312,7 +7352,7 @@
구하다
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 603
+ 610
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -7348,11 +7388,11 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 356
+ 352
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html
- 48
+ 49
@@ -7380,7 +7420,7 @@
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 260
+ 257
@@ -7388,7 +7428,7 @@
Ghostfolio API 키를 입력하세요.
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 146
+ 152
@@ -7404,7 +7444,7 @@
AI 프롬프트가 클립보드에 복사되었습니다.
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 201
+ 199
@@ -7420,7 +7460,7 @@
방법
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 518
+ 521
@@ -7428,7 +7468,7 @@
기본 시장 가격
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 481
+ 484
@@ -7436,7 +7476,7 @@
선택자
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 534
+ 537
@@ -7444,7 +7484,7 @@
즉각적인
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 229
+ 235
@@ -7452,7 +7492,7 @@
게으른
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 225
+ 231
@@ -7460,7 +7500,7 @@
HTTP 요청 헤더
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 494
+ 497
@@ -7468,7 +7508,7 @@
실시간
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 229
+ 235
@@ -7476,7 +7516,7 @@
하루의 끝
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 225
+ 231
@@ -7484,7 +7524,7 @@
오픈 Duck.ai
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 202
+ 200
@@ -7504,7 +7544,7 @@
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 368
+ 377
@@ -7516,7 +7556,7 @@
apps/client/src/app/components/home-overview/home-overview.component.ts
- 55
+ 54
libs/ui/src/lib/holdings-table/holdings-table.component.html
@@ -7524,11 +7564,11 @@
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 368
+ 377
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 381
+ 390
@@ -7632,7 +7672,7 @@
정말로 이 사용자에 대한 새 보안 토큰을 생성하시겠습니까?
apps/client/src/app/components/admin-users/admin-users.component.ts
- 241
+ 240
@@ -7640,7 +7680,7 @@
계정, 보유 또는 페이지 찾기...
libs/ui/src/lib/assistant/assistant.component.ts
- 151
+ 115
@@ -7648,11 +7688,11 @@
보안 토큰
apps/client/src/app/components/admin-users/admin-users.component.ts
- 236
+ 235
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 170
+ 167
@@ -7717,7 +7757,7 @@
( )은(는) 이미 사용 중입니다.
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 633
+ 649
@@ -7725,7 +7765,7 @@
( )로 업데이트하는 동안 오류가 발생했습니다.
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 641
+ 657
@@ -7765,7 +7805,7 @@
누구
apps/client/src/app/pages/public/public-page.component.ts
- 59
+ 61
@@ -7797,7 +7837,7 @@
이 항목을 정말로 삭제하시겠습니까?
libs/ui/src/lib/benchmark/benchmark.component.ts
- 144
+ 139
@@ -7846,7 +7886,7 @@
데모 사용자 계정이 동기화되었습니다.
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 274
+ 277
@@ -7873,25 +7913,25 @@
150
-
+
Fee Ratio
- 수수료 비율
+ Fee Ratio
apps/client/src/app/pages/i18n/i18n-page.html
152
-
- The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
- 수수료가 초기 투자금(${feeRatio}%)의 ${thresholdMax}%를 초과합니다.
+
+ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
+ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
apps/client/src/app/pages/i18n/i18n-page.html
154
-
- The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
- 수수료는 초기 투자금의 ${thresholdMax}%(${feeRatio}%)를 초과하지 않습니다.
+
+ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
+ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
apps/client/src/app/pages/i18n/i18n-page.html
158
@@ -8052,7 +8092,7 @@
이번 달
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 195
+ 201
@@ -8060,11 +8100,11 @@
새로운
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 67
+ 79
apps/client/src/app/pages/admin/admin-page.component.ts
- 56
+ 53
@@ -8237,7 +8277,7 @@
정말로 새로운 보안 토큰을 생성하시겠습니까?
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 175
+ 172
@@ -8245,7 +8285,7 @@
암호화폐
apps/client/src/app/components/markets/markets.component.ts
- 53
+ 52
apps/client/src/app/pages/features/features-page.html
@@ -8257,7 +8297,7 @@
주식
apps/client/src/app/components/markets/markets.component.ts
- 52
+ 51
apps/client/src/app/pages/features/features-page.html
@@ -8277,7 +8317,7 @@
자산 프로필 관리
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 466
+ 471
@@ -8697,7 +8737,7 @@
등록일
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 26
+ 45
diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf
index d7d0b71e8..039969da0 100644
--- a/apps/client/src/locales/messages.nl.xlf
+++ b/apps/client/src/locales/messages.nl.xlf
@@ -39,7 +39,7 @@
please
- please
+ alsjeblieft
apps/client/src/app/pages/pricing/pricing-page.html
333
@@ -50,7 +50,7 @@
Type
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 48
+ 57
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
@@ -83,7 +83,7 @@
with
- with
+ met
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
87
@@ -106,7 +106,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 309
+ 310
apps/client/src/app/components/admin-platform/admin-platform.component.html
@@ -118,7 +118,7 @@
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 46
+ 58
apps/client/src/app/components/admin-tag/admin-tag.component.html
@@ -134,7 +134,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 139
+ 135
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -178,15 +178,15 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 205
+ 201
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 208
+ 204
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 211
+ 207
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -234,11 +234,11 @@
apps/client/src/app/components/admin-platform/admin-platform.component.html
- 74
+ 78
apps/client/src/app/components/admin-tag/admin-tag.component.html
- 67
+ 71
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -266,11 +266,15 @@
apps/client/src/app/components/admin-platform/admin-platform.component.html
- 85
+ 89
apps/client/src/app/components/admin-tag/admin-tag.component.html
- 78
+ 82
+
+
+ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
+ 22
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -294,7 +298,7 @@
Wil je deze rekening echt verwijderen?
libs/ui/src/lib/accounts-table/accounts-table.component.ts
- 150
+ 148
@@ -302,7 +306,7 @@
Taken verwijderen
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 193
+ 202
@@ -310,7 +314,7 @@
Gegevensbron
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 82
+ 91
apps/client/src/app/components/admin-market-data/admin-market-data.html
@@ -322,7 +326,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 155
+ 151
libs/ui/src/lib/i18n.ts
@@ -334,7 +338,7 @@
Pogingen
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 120
+ 129
@@ -342,7 +346,7 @@
Aangemaakt
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 134
+ 143
@@ -350,7 +354,7 @@
Voltooid
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 143
+ 152
@@ -358,16 +362,16 @@
Status
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 152
+ 161
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 92
+ 104
and is driven by the efforts of its contributors
- and is driven by the efforts of its contributors
+ en wordt gedreven door de inspanningen van zijn bijdragers
apps/client/src/app/pages/about/overview/about-overview-page.html
49
@@ -378,7 +382,7 @@
Activa Profiel
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 106
+ 123
libs/ui/src/lib/assistant/assistant.html
@@ -390,11 +394,11 @@
Historische marktgegevens
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 54
+ 63
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 448
+ 451
@@ -402,7 +406,7 @@
Bekijk gegevens
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 208
+ 217
@@ -410,7 +414,7 @@
Bekijk Stacktrace
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 216
+ 225
@@ -418,7 +422,7 @@
Taak verwijderen
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 224
+ 233
@@ -434,7 +438,7 @@
Datum
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 161
+ 157
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -502,7 +506,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html
- 44
+ 40
@@ -510,7 +514,7 @@
Wil je deze coupon echt verwijderen?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 193
+ 196
@@ -518,7 +522,7 @@
Wil je echt de cache legen?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 230
+ 233
@@ -526,7 +530,7 @@
Stel je systeemboodschap in:
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 250
+ 253
@@ -651,7 +655,7 @@
No auto-renewal on membership.
- No auto-renewal on membership.
+ Het lidmaatschap wordt niet automatisch verlengd.
apps/client/src/app/components/user-account-membership/user-account-membership.html
74
@@ -666,7 +670,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 89
+ 108
@@ -722,7 +726,7 @@
apps/client/src/app/pages/public/public-page.html
- 242
+ 241
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
@@ -738,7 +742,7 @@
apps/client/src/app/components/header/header.component.ts
- 297
+ 298
apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html
@@ -758,15 +762,15 @@
Oeps! Onjuiste beveiligingstoken.
apps/client/src/app/components/header/header.component.ts
- 312
+ 313
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 154
+ 152
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 193
+ 191
@@ -774,7 +778,7 @@
Activiteiten beheren
apps/client/src/app/components/home-holdings/home-holdings.html
- 67
+ 64
@@ -890,7 +894,7 @@
Absoluut bruto rendement
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 73
+ 77
@@ -898,7 +902,7 @@
Absoluut netto rendement
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 107
+ 111
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
@@ -910,7 +914,7 @@
Netto rendement
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 123
+ 127
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
@@ -922,7 +926,7 @@
Totaal Activa
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 149
+ 153
@@ -930,7 +934,7 @@
Koopkracht
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 241
+ 248
@@ -938,7 +942,7 @@
Netto waarde
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 317
+ 324
@@ -946,7 +950,7 @@
Rendement per jaar
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 331
+ 338
@@ -966,7 +970,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 396
+ 399
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -974,7 +978,7 @@
apps/client/src/app/pages/public/public-page.html
- 114
+ 113
@@ -986,7 +990,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 407
+ 410
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -998,7 +1002,7 @@
Tags
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 201
+ 218
libs/ui/src/lib/tags-selector/tags-selector.component.html
@@ -1014,7 +1018,7 @@
Gegevensstoring melden
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 451
+ 456
@@ -1042,7 +1046,7 @@
Toon alle
libs/ui/src/lib/holdings-table/holdings-table.component.html
- 216
+ 212
@@ -1054,7 +1058,7 @@
libs/ui/src/lib/assistant/assistant.component.ts
- 363
+ 362
@@ -1062,11 +1066,11 @@
YTD
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 199
+ 205
libs/ui/src/lib/assistant/assistant.component.ts
- 375
+ 374
@@ -1074,11 +1078,11 @@
1J
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 203
+ 209
libs/ui/src/lib/assistant/assistant.component.ts
- 385
+ 384
@@ -1086,16 +1090,16 @@
5J
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 207
+ 213
libs/ui/src/lib/assistant/assistant.component.ts
- 409
+ 408
Performance with currency effect
- Performance with currency effect
+ Prestaties met valuta-effect
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
135
@@ -1106,11 +1110,11 @@
Max
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 211
+ 217
libs/ui/src/lib/assistant/assistant.component.ts
- 415
+ 414
@@ -1126,7 +1130,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 196
+ 195
@@ -1218,7 +1222,7 @@
Wil je deze aanmeldingsmethode echt verwijderen?
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 282
+ 279
@@ -1278,7 +1282,7 @@
Locatie
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 509
+ 512
apps/client/src/app/components/user-account-settings/user-account-settings.html
@@ -1326,7 +1330,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 11
+ 30
@@ -1374,11 +1378,11 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 375
+ 381
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 66
+ 85
apps/client/src/app/pages/accounts/accounts-page.html
@@ -1418,7 +1422,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 316
+ 317
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -1430,7 +1434,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 145
+ 141
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -1610,7 +1614,7 @@
Aangezien je al ingelogd bent, heb je geen toegang tot de demo-account.
apps/client/src/app/pages/demo/demo-page.component.ts
- 35
+ 32
@@ -1656,6 +1660,10 @@
Overview
Overzicht
+
+ apps/client/src/app/components/admin-jobs/admin-jobs.html
+ 7
+
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
114
@@ -1674,11 +1682,11 @@
apps/client/src/app/pages/admin/admin-page.component.ts
- 48
+ 45
apps/client/src/app/pages/resources/resources-page.component.ts
- 30
+ 29
libs/common/src/lib/routes/routes.ts
@@ -1694,7 +1702,7 @@
Markten
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 378
+ 381
apps/client/src/app/components/footer/footer.component.html
@@ -1718,7 +1726,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 40
+ 39
libs/common/src/lib/routes/routes.ts
@@ -1818,7 +1826,7 @@
apps/client/src/app/pages/public/public-page.html
- 151
+ 150
@@ -1911,10 +1919,10 @@
Current week
- Current week
+ Huidige week
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 191
+ 197
@@ -1958,7 +1966,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 124
+ 120
@@ -1970,7 +1978,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 189
+ 185
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -1986,7 +1994,7 @@
Prijs per eenheid
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 214
+ 210
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -1998,7 +2006,7 @@
Opmerking
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 432
+ 435
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
@@ -2006,7 +2014,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 275
+ 271
@@ -2018,7 +2026,7 @@
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
- 115
+ 113
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
@@ -2038,11 +2046,11 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 342
+ 348
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 75
+ 94
apps/client/src/app/pages/portfolio/activities/activities-page.html
@@ -2062,7 +2070,7 @@
Gegevens importeren...
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 175
+ 174
@@ -2070,12 +2078,12 @@
Importeren is voltooid
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 185
+ 184
or start a discussion at
- or start a discussion at
+ of start een discussie op
apps/client/src/app/pages/about/overview/about-overview-page.html
94
@@ -2142,12 +2150,12 @@
Continenten
apps/client/src/app/pages/public/public-page.html
- 132
+ 131
Sustainable retirement income
- Sustainable retirement income
+ Duurzaam pensioeninkomen
apps/client/src/app/pages/portfolio/fire/fire-page.html
41
@@ -2158,7 +2166,7 @@
Ghostfolio stelt je in staat om je vermogen bij te houden.
apps/client/src/app/pages/public/public-page.html
- 238
+ 237
@@ -2188,6 +2196,10 @@
apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html
88
+
+ libs/ui/src/lib/value/value.component.html
+ 18
+
Resources
@@ -2306,7 +2318,7 @@
Wil je deze activiteit echt verwijderen?
libs/ui/src/lib/activities-table/activities-table.component.ts
- 288
+ 292
@@ -2319,7 +2331,7 @@
contact us
- contact us
+ contacteer ons
apps/client/src/app/pages/pricing/pricing-page.html
336
@@ -2374,7 +2386,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 193
+ 192
@@ -2390,12 +2402,12 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 195
+ 194
Exclude from Analysis
- Exclude from Analysis
+ Uitsluiten van analyse
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
90
@@ -2414,15 +2426,15 @@
apps/client/src/app/pages/public/public-page.html
- 168
+ 167
Latest activities
- Latest activities
+ Laatste activiteiten
apps/client/src/app/pages/public/public-page.html
- 211
+ 210
@@ -2442,7 +2454,7 @@
apps/client/src/app/pages/public/public-page.html
- 186
+ 185
@@ -2454,7 +2466,7 @@
apps/client/src/app/pages/public/public-page.html
- 177
+ 176
@@ -2486,7 +2498,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 53
+ 72
@@ -2510,7 +2522,7 @@
Besparingen
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 397
+ 424
@@ -2522,11 +2534,11 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 352
+ 359
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 387
+ 414
libs/ui/src/lib/i18n.ts
@@ -2535,7 +2547,7 @@
annual interest rate
- annual interest rate
+ jaarlijkse rente
apps/client/src/app/pages/portfolio/fire/fire-page.html
185
@@ -2546,7 +2558,7 @@
Storting
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 377
+ 404
@@ -2554,7 +2566,7 @@
Maandelijks
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 91
+ 90
@@ -2578,11 +2590,11 @@
Angst
apps/client/src/app/components/home-market/home-market.component.ts
- 42
+ 41
apps/client/src/app/components/markets/markets.component.ts
- 47
+ 46
libs/ui/src/lib/i18n.ts
@@ -2594,11 +2606,11 @@
Hebzucht
apps/client/src/app/components/home-market/home-market.component.ts
- 43
+ 42
apps/client/src/app/components/markets/markets.component.ts
- 48
+ 47
libs/ui/src/lib/i18n.ts
@@ -2610,7 +2622,7 @@
Filter op...
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 385
+ 383
@@ -2646,7 +2658,7 @@
Benchmark
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 376
+ 379
apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts
@@ -2655,14 +2667,14 @@
Could not validate form
- Could not validate form
+ Het formulier kon niet worden gevalideerd.
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 554
+ 570
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 557
+ 573
@@ -2686,7 +2698,7 @@
Uitgesloten van analyse
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 267
+ 274
@@ -2694,7 +2706,7 @@
Automatisch
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 70
+ 69
apps/client/src/app/components/user-account-settings/user-account-settings.html
@@ -2730,7 +2742,7 @@
Totaalbedrag
apps/client/src/app/components/investment-chart/investment-chart.component.ts
- 143
+ 146
@@ -2782,7 +2794,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 326
+ 327
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -2790,7 +2802,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 290
+ 286
libs/ui/src/lib/i18n.ts
@@ -2806,7 +2818,7 @@
Symbool
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 68
+ 77
apps/client/src/app/components/admin-market-data/admin-market-data.html
@@ -2822,7 +2834,7 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 315
+ 318
libs/ui/src/lib/i18n.ts
@@ -2846,7 +2858,7 @@
Contant geld
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 212
+ 219
libs/ui/src/lib/i18n.ts
@@ -2891,10 +2903,10 @@
Authentication
- Authentication
+ Authenticatie
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 35
+ 54
@@ -2958,7 +2970,7 @@
Noodfonds
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 164
+ 168
apps/client/src/app/pages/features/features-page.html
@@ -2978,7 +2990,7 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 437
+ 451
@@ -2990,7 +3002,7 @@
apps/client/src/app/pages/public/public-page.html
- 196
+ 195
libs/ui/src/lib/benchmark/benchmark.component.html
@@ -2998,11 +3010,11 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 439
+ 453
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 452
+ 467
libs/ui/src/lib/top-holdings/top-holdings.component.html
@@ -3043,7 +3055,7 @@
If you retire today, you would be able to withdraw
- If you retire today, you would be able to withdraw
+ Als u vandaag met pensioen gaat, kunt u
apps/client/src/app/pages/portfolio/fire/fire-page.html
68
@@ -3106,12 +3118,12 @@
Symbool toewijzen
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 384
+ 387
Looking for a student discount?
- Looking for a student discount?
+ Op zoek naar studentenkorting?
apps/client/src/app/pages/pricing/pricing-page.html
342
@@ -3130,7 +3142,7 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 365
+ 372
apps/client/src/app/pages/features/features-page.html
@@ -3138,11 +3150,11 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 202
+ 198
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 76
+ 75
libs/ui/src/lib/i18n.ts
@@ -3170,7 +3182,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 342
+ 343
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -3178,7 +3190,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 309
+ 305
libs/ui/src/lib/i18n.ts
@@ -3198,7 +3210,7 @@
Gegevens valideren...
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 299
+ 293
@@ -3214,7 +3226,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html
- 71
+ 67
@@ -3222,7 +3234,7 @@
Marktgegevens
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 398
+ 403
libs/common/src/lib/routes/routes.ts
@@ -3274,7 +3286,7 @@
Jaarlijks
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 92
+ 91
@@ -3282,7 +3294,7 @@
Importeer dividenden
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 137
+ 136
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -3298,7 +3310,7 @@
Geldig tot
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 74
+ 86
libs/ui/src/lib/membership-card/membership-card.component.html
@@ -3337,6 +3349,14 @@
22
+
+ No Activities
+ Geen activiteiten
+
+ apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
+ 145
+
+
Retirement Provision
Pensioen
@@ -3347,7 +3367,7 @@
Everything in Basic , plus
- Everything in Basic , plus
+ Alles van Basic , plus
apps/client/src/app/pages/pricing/pricing-page.html
199
@@ -3607,14 +3627,14 @@
Could not save asset profile
- Could not save asset profile
+ Kon het assetprofiel niet opslaan
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 588
+ 604
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 591
+ 607
@@ -3634,7 +3654,7 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 88
+ 92
@@ -3798,7 +3818,7 @@
Weet je zeker dat je alle activiteiten wilt verwijderen?
libs/ui/src/lib/activities-table/activities-table.component.ts
- 278
+ 282
@@ -3809,9 +3829,17 @@
306
+
+ Explore
+ Explore
+
+ apps/client/src/app/pages/resources/overview/resources-overview.component.html
+ 11
+
+
By
- By
+ Tegen
apps/client/src/app/pages/portfolio/fire/fire-page.html
139
@@ -3827,10 +3855,10 @@
Current year
- Current year
+ Huidig jaar
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 199
+ 205
@@ -3846,11 +3874,11 @@
Url
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 419
+ 422
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 550
+ 553
apps/client/src/app/components/admin-platform/admin-platform.component.html
@@ -3863,10 +3891,10 @@
Asset profile has been saved
- Asset profile has been saved
+ Het activaprofiel is opgeslagen.
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 578
+ 594
@@ -3874,7 +3902,7 @@
Wil je dit platform echt verwijderen?
apps/client/src/app/components/admin-platform/admin-platform.component.ts
- 106
+ 111
@@ -3882,7 +3910,7 @@
Platforms
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 195
+ 212
@@ -3890,7 +3918,7 @@
Saldo bijwerken
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 112
+ 108
@@ -4055,7 +4083,7 @@
View Details
- View Details
+ Bekijk details
apps/client/src/app/components/admin-users/admin-users.html
225
@@ -4070,7 +4098,7 @@
Verplichtingen
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 295
+ 302
apps/client/src/app/pages/features/features-page.html
@@ -4191,7 +4219,7 @@
per week
- per week
+ per week
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
130
@@ -4215,7 +4243,7 @@
and we share aggregated key metrics of the platform’s performance
- and we share aggregated key metrics of the platform’s performance
+ en we delen geaggregeerde belangrijke prestatiegegevens van het platform
apps/client/src/app/pages/about/overview/about-overview-page.html
32
@@ -4226,7 +4254,7 @@
Scraper instellingen
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 471
+ 474
@@ -4259,7 +4287,7 @@
Website of Thomas Kaul
- Website of Thomas Kaul
+ Website van Thomas Kaul
apps/client/src/app/pages/about/overview/about-overview-page.html
44
@@ -4439,7 +4467,7 @@
Sign in with OpenID Connect
- Sign in with OpenID Connect
+ Meld je aan met OpenID Connect
apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html
55
@@ -4470,7 +4498,7 @@
ETF’s zonder Landen
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 136
+ 135
@@ -4478,7 +4506,7 @@
ETF’s zonder Sectoren
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 141
+ 140
@@ -4486,7 +4514,7 @@
Assets
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 226
+ 233
@@ -4531,7 +4559,7 @@
The source code is fully available as open source software (OSS) under the AGPL-3.0 license
- The source code is fully available as open source software (OSS) under the AGPL-3.0 license
+ De broncode is volledig beschikbaar als open source software (OSS) onder de AGPL-3.0-licentie
apps/client/src/app/pages/about/overview/about-overview-page.html
16
@@ -4603,7 +4631,7 @@
this is projected to increase to
- this is projected to increase to
+ zal dit naar verwachting stijgen tot
apps/client/src/app/pages/portfolio/fire/fire-page.html
147
@@ -4655,10 +4683,10 @@
Job ID
- Job ID
+ Opdracht ID
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 34
+ 43
@@ -4714,11 +4742,11 @@
Valuta
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 131
+ 130
apps/client/src/app/pages/public/public-page.html
- 96
+ 95
@@ -4739,7 +4767,7 @@
for
- for
+ voor
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
128
@@ -4763,14 +4791,14 @@
Could not parse scraper configuration
- Could not parse scraper configuration
+ De scraperconfiguratie kon niet worden geparseerd
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 509
+ 525
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 512
+ 528
@@ -4807,7 +4835,7 @@
Edit access
- Edit access
+ Toegang bewerken
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
11
@@ -4879,7 +4907,7 @@
Get access to 80’000+ tickers from over 50 exchanges
- Get access to 80’000+ tickers from over 50 exchanges
+ Krijg toegang tot meer dan 80.000+ tickers van meer dan 50 beurzen
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
84
@@ -5063,7 +5091,7 @@
less than
- less than
+ minder dan
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
129
@@ -5353,7 +5381,7 @@
Ghostfolio Status
- Ghostfolio Status
+ Ghostfolio Status
apps/client/src/app/pages/about/overview/about-overview-page.html
62
@@ -5361,7 +5389,7 @@
with your university e-mail address
- with your university e-mail address
+ met uw universitaire e-mailadres
apps/client/src/app/pages/pricing/pricing-page.html
348
@@ -5381,7 +5409,7 @@
and a safe withdrawal rate (SWR) of
- and a safe withdrawal rate (SWR) of
+ en een veilige opnameratio (SWR) van
apps/client/src/app/pages/portfolio/fire/fire-page.html
108
@@ -5432,7 +5460,7 @@
Kosten
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 262
+ 258
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -5464,7 +5492,7 @@
Weet u zetker dat u dit label wilt verwijderen?
apps/client/src/app/components/admin-tag/admin-tag.component.ts
- 103
+ 108
@@ -5532,7 +5560,7 @@
Lidmaatschap
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 48
+ 67
libs/common/src/lib/routes/routes.ts
@@ -5545,7 +5573,7 @@
Request it
- Request it
+ Aanvragen
apps/client/src/app/pages/pricing/pricing-page.html
344
@@ -5564,7 +5592,7 @@
Bezittingen Profiel
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 52
+ 61
@@ -5601,7 +5629,7 @@
,
- ,
+ ,
apps/client/src/app/pages/portfolio/fire/fire-page.html
145
@@ -5617,7 +5645,7 @@
per month
- per month
+ per maand
apps/client/src/app/pages/portfolio/fire/fire-page.html
94
@@ -5688,7 +5716,7 @@
Oeps! Ophalen van historische data is mislukt.
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts
- 262
+ 284
@@ -5696,7 +5724,7 @@
Wilt u dit systeembericht echt verwijderen?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 206
+ 209
@@ -5720,7 +5748,7 @@
Contant Saldo
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
- 148
+ 146
@@ -5740,7 +5768,7 @@
Wilt u dit rekeningsaldo echt verwijderen?
libs/ui/src/lib/account-balances/account-balances.component.ts
- 120
+ 113
@@ -5756,7 +5784,7 @@
De huidige markt waarde is
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 706
+ 722
@@ -5764,7 +5792,7 @@
Test
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 568
+ 571
@@ -5809,7 +5837,7 @@
Argentina
- Argentina
+ Argentinië
libs/ui/src/lib/i18n.ts
78
@@ -5852,11 +5880,11 @@
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 81
+ 80
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 97
+ 96
apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
@@ -5865,7 +5893,7 @@
here
- here
+ hier
apps/client/src/app/pages/pricing/pricing-page.html
347
@@ -5873,10 +5901,10 @@
Close Holding
- Close Holding
+ Sluit Holding
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 442
+ 447
@@ -5916,7 +5944,7 @@
Week tot nu toe
libs/ui/src/lib/assistant/assistant.component.ts
- 367
+ 366
@@ -5924,11 +5952,11 @@
Week tot nu toe
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 191
+ 197
libs/ui/src/lib/assistant/assistant.component.ts
- 367
+ 366
@@ -5936,7 +5964,7 @@
Maand tot nu toe
libs/ui/src/lib/assistant/assistant.component.ts
- 371
+ 370
@@ -5944,11 +5972,11 @@
MTD
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 195
+ 201
libs/ui/src/lib/assistant/assistant.component.ts
- 371
+ 370
@@ -5956,7 +5984,7 @@
Jaar tot nu toe
libs/ui/src/lib/assistant/assistant.component.ts
- 375
+ 374
@@ -5992,7 +6020,7 @@
jaar
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 203
+ 209
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
@@ -6004,7 +6032,7 @@
libs/ui/src/lib/assistant/assistant.component.ts
- 385
+ 384
@@ -6012,11 +6040,11 @@
jaren
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 207
+ 213
libs/ui/src/lib/assistant/assistant.component.ts
- 409
+ 408
@@ -6032,7 +6060,7 @@
Data Verzamelen
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 587
+ 594
apps/client/src/app/components/admin-overview/admin-overview.html
@@ -6044,7 +6072,7 @@
Algemeen
apps/client/src/app/pages/faq/faq-page.component.ts
- 49
+ 41
@@ -6052,7 +6080,7 @@
Cloud
apps/client/src/app/pages/faq/faq-page.component.ts
- 54
+ 46
libs/common/src/lib/routes/routes.ts
@@ -6064,7 +6092,7 @@
Zelf Hosten
apps/client/src/app/pages/faq/faq-page.component.ts
- 60
+ 52
libs/common/src/lib/routes/routes.ts
@@ -6105,7 +6133,7 @@
Actief
apps/client/src/app/components/home-holdings/home-holdings.component.ts
- 64
+ 63
@@ -6113,7 +6141,7 @@
Gesloten
apps/client/src/app/components/home-holdings/home-holdings.component.ts
- 65
+ 64
@@ -6145,7 +6173,7 @@
Opdracht Uitvoeren
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 220
+ 229
@@ -6153,7 +6181,7 @@
Prioriteit
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 96
+ 105
@@ -6209,7 +6237,7 @@
Wilt u uw Ghostfolio account echt sluiten?
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 208
+ 205
@@ -6254,10 +6282,10 @@
Include in
- Include in
+ Opnemen in
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 374
+ 377
@@ -6265,7 +6293,7 @@
Oeps! Er is een fout opgetreden met het instellen van de biometrische authenticatie.
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 336
+ 333
@@ -6281,7 +6309,7 @@
Benchmarks
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 126
+ 125
@@ -6329,7 +6357,7 @@
Wilt u uw persoonlijke belegginngsstrategie verfijnen ?
apps/client/src/app/pages/public/public-page.html
- 234
+ 233
@@ -6538,7 +6566,7 @@
View Holding
- View Holding
+ Bekijk Holding
libs/ui/src/lib/activities-table/activities-table.component.html
450
@@ -6661,7 +6689,7 @@
Fout
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 697
+ 713
@@ -6682,7 +6710,7 @@
Oops! Could not update access.
- Oops! Could not update access.
+ Oops! Kan de toegang niet updaten.
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts
178
@@ -6690,7 +6718,7 @@
, based on your total assets of
- , based on your total assets of
+ opnemen, dit is gebaseerd op uw totale vermogen van
apps/client/src/app/pages/portfolio/fire/fire-page.html
96
@@ -6713,7 +6741,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 592
+ 599
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -6745,7 +6773,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 345
+ 341
apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html
@@ -6753,7 +6781,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html
- 46
+ 47
libs/ui/src/lib/i18n.ts
@@ -6765,7 +6793,7 @@
Sluiten
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 594
+ 601
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -6791,13 +6819,17 @@
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
68
+
+ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
+ 127
+
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
107
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 347
+ 343
libs/ui/src/lib/i18n.ts
@@ -6806,10 +6838,10 @@
Role
- Role
+ Rol
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 14
+ 33
@@ -6833,7 +6865,7 @@
Portfolio Momentopname
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 56
+ 65
@@ -6846,7 +6878,7 @@
If you plan to open an account at
- If you plan to open an account at
+ Als u van plan bent een rekening te openen bij
apps/client/src/app/pages/pricing/pricing-page.html
312
@@ -6878,7 +6910,7 @@
send an e-mail to
- send an e-mail to
+ stuur een e-mail naar
apps/client/src/app/pages/about/overview/about-overview-page.html
87
@@ -6900,6 +6932,14 @@
42
+
+ has been copied to the clipboard
+ has been copied to the clipboard
+
+ libs/ui/src/lib/value/value.component.ts
+ 180
+
+
From the beginning
Vanaf het begin
@@ -6950,7 +6990,7 @@
, assuming a
- , assuming a
+ , uitgaande van
apps/client/src/app/pages/portfolio/fire/fire-page.html
174
@@ -7038,7 +7078,7 @@
Ghostfolio is a lightweight wealth management application for individuals to keep track of stocks, ETFs or cryptocurrencies and make solid, data-driven investment decisions.
- Ghostfolio is a lightweight wealth management application for individuals to keep track of stocks, ETFs or cryptocurrencies and make solid, data-driven investment decisions.
+ Ghostfolio is een gebruiksvriendelijke applicatie voor vermogensbeheer waarmee particulieren hun aandelen, ETF's of cryptovaluta kunnen volgen en weloverwogen, datagestuurde beleggingsbeslissingen kunnen nemen.
apps/client/src/app/pages/about/overview/about-overview-page.html
10
@@ -7065,7 +7105,7 @@
API-sleutel instellen
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 171
+ 188
@@ -7101,7 +7141,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 45
+ 44
libs/common/src/lib/routes/routes.ts
@@ -7117,7 +7157,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 34
+ 33
libs/common/src/lib/routes/routes.ts
@@ -7171,7 +7211,7 @@
van
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 135
+ 152
@@ -7179,7 +7219,7 @@
dagelijkse verzoeken
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 137
+ 154
@@ -7187,7 +7227,7 @@
Verwijder API-sleutel
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 161
+ 178
@@ -7195,7 +7235,7 @@
Wilt u de API-sleutel echt verwijderen?
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 127
+ 133
@@ -7215,7 +7255,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 98
+ 117
@@ -7287,7 +7327,7 @@
Opslaan
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 603
+ 610
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -7323,11 +7363,11 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 356
+ 352
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html
- 48
+ 49
@@ -7339,7 +7379,7 @@
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 260
+ 257
@@ -7363,12 +7403,12 @@
Voer uw Ghostfolio API-sleutel in.
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 146
+ 152
Change with currency effect
- Change with currency effect
+ Verandering met valuta-effect
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
116
@@ -7379,7 +7419,7 @@
AI-prompt is naar het klembord gekopieerd
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 201
+ 199
@@ -7395,7 +7435,7 @@
Lui
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 225
+ 231
@@ -7403,7 +7443,7 @@
Direct
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 229
+ 235
@@ -7411,7 +7451,7 @@
Standaard Marktprijs
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 481
+ 484
@@ -7419,7 +7459,7 @@
Modus
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 518
+ 521
@@ -7427,7 +7467,7 @@
Kiezer
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 534
+ 537
@@ -7435,7 +7475,7 @@
HTTP Verzoek Headers
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 494
+ 497
@@ -7443,7 +7483,7 @@
eind van de dag
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 225
+ 231
@@ -7451,7 +7491,7 @@
real-time
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 229
+ 235
@@ -7459,7 +7499,7 @@
Open Duck.ai
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 202
+ 200
@@ -7479,7 +7519,7 @@
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 368
+ 377
@@ -7491,7 +7531,7 @@
apps/client/src/app/components/home-overview/home-overview.component.ts
- 55
+ 54
libs/ui/src/lib/holdings-table/holdings-table.component.html
@@ -7499,16 +7539,16 @@
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 368
+ 377
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 381
+ 390
The project has been initiated by
- The project has been initiated by
+ Het project is geïnitieerd door
apps/client/src/app/pages/about/overview/about-overview-page.html
40
@@ -7532,7 +7572,7 @@
Total amount
- Total amount
+ Totaal bedrag
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
95
@@ -7607,11 +7647,11 @@
Beveiligingstoken
apps/client/src/app/components/admin-users/admin-users.component.ts
- 236
+ 235
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 170
+ 167
@@ -7619,15 +7659,15 @@
Wilt u echt een nieuw beveiligingstoken voor deze gebruiker aanmaken?
apps/client/src/app/components/admin-users/admin-users.component.ts
- 241
+ 240
Find account, holding or page...
- Find account, holding or page...
+ Vindt een account, holding of pagina...
libs/ui/src/lib/assistant/assistant.component.ts
- 151
+ 115
@@ -7692,7 +7732,7 @@
( ) is al in gebruik.
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 633
+ 649
@@ -7700,7 +7740,7 @@
Er is een fout opgetreden tijdens het updaten naar ( ).
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 641
+ 657
@@ -7764,7 +7804,7 @@
iemand
apps/client/src/app/pages/public/public-page.component.ts
- 59
+ 61
@@ -7796,7 +7836,7 @@
Wilt u dit item echt verwijderen?
libs/ui/src/lib/benchmark/benchmark.component.ts
- 144
+ 139
@@ -7837,7 +7877,7 @@
Demo-gebruikersaccount is gesynchroniseerd.
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 274
+ 277
@@ -7872,7 +7912,7 @@
150
-
+
Fee Ratio
Vergoedingsverhouding
@@ -7880,17 +7920,17 @@
152
-
- The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
- De kosten overschrijden ${thresholdMax}% van uw initiële investering (${feeRatio}%)
+
+ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
+ De kosten overschrijden ${thresholdMax}% van uw totale investeringsvolume (${feeRatio}%)
apps/client/src/app/pages/i18n/i18n-page.html
154
-
- The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
- De kosten bedragen niet meer dan ${thresholdMax}% van uw initiële investering (${feeRatio}%)
+
+ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
+ De kosten bedragen maximaal ${thresholdMax}% van uw totale investeringsvolume (${feeRatio}%)
apps/client/src/app/pages/i18n/i18n-page.html
158
@@ -8048,10 +8088,10 @@
Current month
- Current month
+ Huidige maand
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 195
+ 201
@@ -8059,11 +8099,11 @@
nieuw
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 67
+ 79
apps/client/src/app/pages/admin/admin-page.component.ts
- 56
+ 53
@@ -8220,7 +8260,7 @@
Wilt u echt een nieuwe securitytoken genereren?
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 175
+ 172
@@ -8233,7 +8273,7 @@
If you encounter a bug, would like to suggest an improvement or a new feature , please join the Ghostfolio Slack community, post to @ghostfolio_
- If you encounter a bug, would like to suggest an improvement or a new feature , please join the Ghostfolio Slack community, post to @ghostfolio_
+ Als je een bug tegenkomt, een verbetering wilt voorstellen of een nieuwe functie wilt toevoegen, word dan lid van de Ghostfolio Slack-community . Stuur een bericht naar @ghostfolio_
apps/client/src/app/pages/about/overview/about-overview-page.html
69
@@ -8244,7 +8284,7 @@
Aandelen
apps/client/src/app/components/markets/markets.component.ts
- 52
+ 51
apps/client/src/app/pages/features/features-page.html
@@ -8256,7 +8296,7 @@
Cryptovaluta
apps/client/src/app/components/markets/markets.component.ts
- 53
+ 52
apps/client/src/app/pages/features/features-page.html
@@ -8276,7 +8316,7 @@
Beheer activaprofiel
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 466
+ 471
@@ -8357,7 +8397,7 @@
Liquidity
- Liquidity
+ Liquiditeit
apps/client/src/app/pages/i18n/i18n-page.html
70
@@ -8365,7 +8405,7 @@
Buying Power
- Buying Power
+ Koopkracht
apps/client/src/app/pages/i18n/i18n-page.html
71
@@ -8373,7 +8413,7 @@
Your buying power is below ${thresholdMin} ${baseCurrency}
- Your buying power is below ${thresholdMin} ${baseCurrency}
+ Uw koopkracht ligt onder ${thresholdMin} ${baseCurrency}
apps/client/src/app/pages/i18n/i18n-page.html
73
@@ -8381,7 +8421,7 @@
Your buying power is 0 ${baseCurrency}
- Your buying power is 0 ${baseCurrency}
+ Uw koopkracht is 0 ${baseCurrency}
apps/client/src/app/pages/i18n/i18n-page.html
77
@@ -8389,7 +8429,7 @@
Your buying power exceeds ${thresholdMin} ${baseCurrency}
- Your buying power exceeds ${thresholdMin} ${baseCurrency}
+ Uw koopkracht overschrijdt ${thresholdMin} ${baseCurrency}
apps/client/src/app/pages/i18n/i18n-page.html
80
@@ -8693,10 +8733,10 @@
Registration Date
- Registration Date
+ Registratiedatum
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 26
+ 45
diff --git a/apps/client/src/locales/messages.pl.xlf b/apps/client/src/locales/messages.pl.xlf
index a94a76d2f..a15609e6a 100644
--- a/apps/client/src/locales/messages.pl.xlf
+++ b/apps/client/src/locales/messages.pl.xlf
@@ -240,7 +240,7 @@
please
- please
+ proszę
apps/client/src/app/pages/pricing/pricing-page.html
333
@@ -251,7 +251,7 @@
Typ
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 48
+ 57
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
@@ -284,7 +284,7 @@
with
- with
+ z
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
87
@@ -351,7 +351,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 309
+ 310
apps/client/src/app/components/admin-platform/admin-platform.component.html
@@ -363,7 +363,7 @@
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 46
+ 58
apps/client/src/app/components/admin-tag/admin-tag.component.html
@@ -379,7 +379,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 139
+ 135
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -423,7 +423,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 316
+ 317
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -435,7 +435,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 145
+ 141
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -455,15 +455,15 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 205
+ 201
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 208
+ 204
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 211
+ 207
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -511,11 +511,11 @@
apps/client/src/app/components/admin-platform/admin-platform.component.html
- 74
+ 78
apps/client/src/app/components/admin-tag/admin-tag.component.html
- 67
+ 71
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -543,11 +543,15 @@
apps/client/src/app/components/admin-platform/admin-platform.component.html
- 85
+ 89
apps/client/src/app/components/admin-tag/admin-tag.component.html
- 78
+ 82
+
+
+ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
+ 22
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -571,7 +575,7 @@
Czy na pewno chcesz usunąć to konto?
libs/ui/src/lib/accounts-table/accounts-table.component.ts
- 150
+ 148
@@ -579,7 +583,7 @@
Profil Aktywów
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 52
+ 61
@@ -587,11 +591,11 @@
Historyczne Dane Rynkowe
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 54
+ 63
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 448
+ 451
@@ -599,7 +603,7 @@
Źródło Danych
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 82
+ 91
apps/client/src/app/components/admin-market-data/admin-market-data.html
@@ -611,7 +615,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 155
+ 151
libs/ui/src/lib/i18n.ts
@@ -623,7 +627,7 @@
Próby
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 120
+ 129
@@ -631,7 +635,7 @@
Utworzono
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 134
+ 143
@@ -639,7 +643,7 @@
Zakończono
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 143
+ 152
@@ -647,16 +651,16 @@
Status
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 152
+ 161
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 92
+ 104
and is driven by the efforts of its contributors
- and is driven by the efforts of its contributors
+ i jest rozwijany dzięki pracy jego współtwórców
apps/client/src/app/pages/about/overview/about-overview-page.html
49
@@ -667,7 +671,7 @@
Usuń Zadania
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 193
+ 202
@@ -675,7 +679,7 @@
Zobacz Dane
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 208
+ 217
@@ -683,7 +687,7 @@
Wyświetl Stos Wywołań
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 216
+ 225
@@ -691,7 +695,7 @@
Usuń Zadanie
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 224
+ 233
@@ -707,7 +711,7 @@
Data
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 161
+ 157
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -743,11 +747,11 @@
Waluty
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 131
+ 130
apps/client/src/app/pages/public/public-page.html
- 96
+ 95
@@ -755,7 +759,7 @@
ETF-y bez Krajów
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 136
+ 135
@@ -763,7 +767,7 @@
ETF-y bez Sektorów
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 141
+ 140
@@ -779,7 +783,7 @@
Filtruj według...
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 385
+ 383
@@ -819,7 +823,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html
- 44
+ 40
@@ -855,7 +859,7 @@
Ups! Nie udało się sparsować danych historycznych.
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts
- 262
+ 284
@@ -879,7 +883,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html
- 71
+ 67
@@ -911,7 +915,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 53
+ 72
@@ -923,7 +927,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 396
+ 399
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -931,7 +935,7 @@
apps/client/src/app/pages/public/public-page.html
- 114
+ 113
@@ -943,7 +947,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 407
+ 410
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -955,7 +959,7 @@
Mapowanie Symboli
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 384
+ 387
@@ -971,7 +975,7 @@
Konfiguracja Scrapera
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 471
+ 474
@@ -979,7 +983,7 @@
Notatka
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 432
+ 435
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
@@ -987,7 +991,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 275
+ 271
@@ -1031,7 +1035,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 124
+ 120
@@ -1039,7 +1043,7 @@
Czy naprawdę chcesz usunąć ten kupon?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 193
+ 196
@@ -1047,7 +1051,7 @@
Czy naprawdę chcesz usunąć tę wiadomość systemową?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 206
+ 209
@@ -1055,7 +1059,7 @@
Czy naprawdę chcesz wyczyścić pamięć podręczną?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 230
+ 233
@@ -1063,7 +1067,7 @@
Proszę ustawić swoją wiadomość systemową:
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 250
+ 253
@@ -1187,11 +1191,11 @@
Url
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 419
+ 422
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 550
+ 553
apps/client/src/app/components/admin-platform/admin-platform.component.html
@@ -1204,10 +1208,10 @@
Asset profile has been saved
- Asset profile has been saved
+ Profil zasobu został zapisany
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 578
+ 594
@@ -1215,12 +1219,20 @@
Czy naprawdę chcesz usunąć tę platformę?
apps/client/src/app/components/admin-platform/admin-platform.component.ts
- 106
+ 111
+
+
+
+ Explore
+ Eksploruj
+
+ apps/client/src/app/pages/resources/overview/resources-overview.component.html
+ 11
By
- By
+ Przez
apps/client/src/app/pages/portfolio/fire/fire-page.html
139
@@ -1236,10 +1248,10 @@
Current year
- Current year
+ Obecny rok
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 199
+ 205
@@ -1255,7 +1267,7 @@
Platformy
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 195
+ 212
@@ -1263,7 +1275,7 @@
Tagi
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 201
+ 218
libs/ui/src/lib/tags-selector/tags-selector.component.html
@@ -1287,7 +1299,7 @@
Czy naprawdę chcesz usunąć ten tag?
apps/client/src/app/components/admin-tag/admin-tag.component.ts
- 103
+ 108
@@ -1332,7 +1344,7 @@
No auto-renewal on membership.
- No auto-renewal on membership.
+ Brak automatycznego odnawiania członkostwa.
apps/client/src/app/components/user-account-membership/user-account-membership.html
74
@@ -1347,7 +1359,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 89
+ 108
@@ -1379,11 +1391,11 @@
Could not validate form
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 554
+ 570
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 557
+ 573
@@ -1431,7 +1443,7 @@
Poziom Odniesienia (Benchmark)
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 376
+ 379
apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts
@@ -1467,7 +1479,7 @@
apps/client/src/app/components/header/header.component.ts
- 297
+ 298
apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html
@@ -1487,15 +1499,15 @@
Ups! Nieprawidłowy token bezpieczeństwa.
apps/client/src/app/components/header/header.component.ts
- 312
+ 313
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 154
+ 152
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 193
+ 191
@@ -1503,7 +1515,7 @@
Zarządzaj Aktywnościami
apps/client/src/app/components/home-holdings/home-holdings.html
- 67
+ 64
@@ -1511,11 +1523,11 @@
Zagrożenie
apps/client/src/app/components/home-market/home-market.component.ts
- 42
+ 41
apps/client/src/app/components/markets/markets.component.ts
- 47
+ 46
libs/ui/src/lib/i18n.ts
@@ -1527,11 +1539,11 @@
Zachłanność
apps/client/src/app/components/home-market/home-market.component.ts
- 43
+ 42
apps/client/src/app/components/markets/markets.component.ts
- 48
+ 47
libs/ui/src/lib/i18n.ts
@@ -1568,7 +1580,7 @@
The source code is fully available as open source software (OSS) under the AGPL-3.0 license
- The source code is fully available as open source software (OSS) under the AGPL-3.0 license
+ Kod źródłowy jest w pełni dostępny jako oprogramowanie open source (OSS) na licencji AGPL-3.0 license
apps/client/src/app/pages/about/overview/about-overview-page.html
16
@@ -1632,10 +1644,10 @@
Current week
- Current week
+ Obecny tydzień
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 191
+ 197
@@ -1655,7 +1667,7 @@
Całkowita Kwota
apps/client/src/app/components/investment-chart/investment-chart.component.ts
- 143
+ 146
@@ -1767,7 +1779,7 @@
Bezwzględne Osiągi Brutto
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 73
+ 77
@@ -1779,7 +1791,7 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 88
+ 92
@@ -1787,7 +1799,7 @@
Bezwzględne Osiągi Netto
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 107
+ 111
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
@@ -1799,7 +1811,7 @@
Osiągi Netto
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 123
+ 127
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
@@ -1811,7 +1823,7 @@
Suma Aktywów
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 149
+ 153
@@ -1819,7 +1831,7 @@
Aktywa
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 226
+ 233
@@ -1827,7 +1839,7 @@
Siła Nabywcza
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 241
+ 248
@@ -1835,7 +1847,7 @@
Wykluczone z Analizy
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 267
+ 274
@@ -1843,7 +1855,7 @@
Pasywa (Zobowiązania Finansowe)
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 295
+ 302
apps/client/src/app/pages/features/features-page.html
@@ -1855,7 +1867,7 @@
Wartość Netto
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 317
+ 324
@@ -1863,7 +1875,7 @@
Osiągi w Ujęciu Rocznym
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 331
+ 338
@@ -1899,7 +1911,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 189
+ 185
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -1915,7 +1927,7 @@
Zgłoś Błąd Danych
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 451
+ 456
@@ -2095,7 +2107,7 @@
libs/ui/src/lib/assistant/assistant.component.ts
- 363
+ 362
@@ -2103,11 +2115,11 @@
Liczony od początku roku (year-to-date)
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 199
+ 205
libs/ui/src/lib/assistant/assistant.component.ts
- 375
+ 374
@@ -2115,11 +2127,11 @@
1 rok
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 203
+ 209
libs/ui/src/lib/assistant/assistant.component.ts
- 385
+ 384
@@ -2127,16 +2139,16 @@
5 lat
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 207
+ 213
libs/ui/src/lib/assistant/assistant.component.ts
- 409
+ 408
Performance with currency effect
- Performance with currency effect
+ Wynik z efektem walutowym
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
135
@@ -2147,11 +2159,11 @@
Maksimum
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 211
+ 217
libs/ui/src/lib/assistant/assistant.component.ts
- 415
+ 414
@@ -2251,7 +2263,7 @@
Auto
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 70
+ 69
apps/client/src/app/components/user-account-settings/user-account-settings.html
@@ -2263,7 +2275,7 @@
Czy na pewno chcesz usunąć tą metode logowania?
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 282
+ 279
@@ -2303,7 +2315,7 @@
Ustawienia Regionalne
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 509
+ 512
apps/client/src/app/components/user-account-settings/user-account-settings.html
@@ -2364,7 +2376,7 @@
this is projected to increase to
- this is projected to increase to
+ prognozuje się wzrost tej kwoty do
apps/client/src/app/pages/portfolio/fire/fire-page.html
147
@@ -2415,7 +2427,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 11
+ 30
@@ -2447,7 +2459,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 195
+ 194
@@ -2459,7 +2471,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 193
+ 192
@@ -2475,7 +2487,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 196
+ 195
@@ -2576,7 +2588,7 @@
for
- for
+ dla
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
128
@@ -2603,11 +2615,11 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 375
+ 381
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 66
+ 85
apps/client/src/app/pages/accounts/accounts-page.html
@@ -2699,7 +2711,7 @@
Dane Rynkowe
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 398
+ 403
libs/common/src/lib/routes/routes.ts
@@ -2733,6 +2745,10 @@
Overview
Przegląd
+
+ apps/client/src/app/components/admin-jobs/admin-jobs.html
+ 7
+
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
114
@@ -2751,11 +2767,11 @@
apps/client/src/app/pages/admin/admin-page.component.ts
- 48
+ 45
apps/client/src/app/pages/resources/resources-page.component.ts
- 30
+ 29
libs/common/src/lib/routes/routes.ts
@@ -2876,14 +2892,14 @@
Could not parse scraper configuration
- Could not parse scraper configuration
+ Nie udało się przetworzyć konfiguracji scrapera
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 509
+ 525
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 512
+ 528
@@ -2899,7 +2915,7 @@
Ponieważ jesteś już zalogowany, nie możesz uzyskać dostępu do konta demo.
apps/client/src/app/pages/demo/demo-page.component.ts
- 35
+ 32
@@ -3032,7 +3048,7 @@
per week
- per week
+ na tydzień
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
130
@@ -3071,7 +3087,7 @@
apps/client/src/app/pages/public/public-page.html
- 242
+ 241
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
@@ -3123,7 +3139,7 @@
Rynki
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 378
+ 381
apps/client/src/app/components/footer/footer.component.html
@@ -3147,7 +3163,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 40
+ 39
libs/common/src/lib/routes/routes.ts
@@ -3208,7 +3224,7 @@
Edit access
- Edit access
+ Edytuj dostęp
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
11
@@ -3312,7 +3328,7 @@
Get access to 80’000+ tickers from over 50 exchanges
- Get access to 80’000+ tickers from over 50 exchanges
+ Uzyskaj dostęp do 80 000+ tickerów z ponad 50 giełd
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
84
@@ -3448,7 +3464,7 @@
less than
- less than
+ mniej niż
apps/client/src/app/components/subscription-interstitial-dialog/subscription-interstitial-dialog.html
129
@@ -3512,7 +3528,7 @@
Ghostfolio Status
- Ghostfolio Status
+ Ghostfolio Status
apps/client/src/app/pages/about/overview/about-overview-page.html
62
@@ -3520,7 +3536,7 @@
with your university e-mail address
- with your university e-mail address
+ używając swojego adresu e-mail uczelni
apps/client/src/app/pages/pricing/pricing-page.html
348
@@ -3552,7 +3568,7 @@
and a safe withdrawal rate (SWR) of
- and a safe withdrawal rate (SWR) of
+ oraz bezpiecznej stopy wypłaty (SWR) na poziomie
apps/client/src/app/pages/portfolio/fire/fire-page.html
108
@@ -3579,7 +3595,7 @@
Job ID
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 34
+ 43
@@ -3615,7 +3631,7 @@
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
- 115
+ 113
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
@@ -3635,11 +3651,11 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 342
+ 348
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 75
+ 94
apps/client/src/app/pages/portfolio/activities/activities-page.html
@@ -3659,7 +3675,7 @@
Czy na pewno chcesz usunąć te aktywności?
libs/ui/src/lib/activities-table/activities-table.component.ts
- 278
+ 282
@@ -3727,7 +3743,7 @@
Zaktualizuj Saldo Gotówkowe
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 112
+ 108
@@ -3735,7 +3751,7 @@
Cena Jednostkowa
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 214
+ 210
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -3763,7 +3779,7 @@
Impotruj Dywidendy
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 137
+ 136
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -3779,7 +3795,7 @@
Importowanie danych...
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 175
+ 174
@@ -3787,12 +3803,12 @@
Importowanie zakończone
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 185
+ 184
or start a discussion at
- or start a discussion at
+ lub rozpocznij dyskusję n
apps/client/src/app/pages/about/overview/about-overview-page.html
94
@@ -3803,7 +3819,7 @@
Weryfikacja danych...
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 299
+ 293
@@ -3975,7 +3991,7 @@
apps/client/src/app/pages/public/public-page.html
- 151
+ 150
@@ -3999,15 +4015,15 @@
apps/client/src/app/pages/public/public-page.html
- 168
+ 167
Latest activities
- Latest activities
+ Ostatnie transakcje
apps/client/src/app/pages/public/public-page.html
- 211
+ 210
@@ -4019,7 +4035,7 @@
apps/client/src/app/pages/public/public-page.html
- 177
+ 176
@@ -4031,7 +4047,7 @@
apps/client/src/app/pages/public/public-page.html
- 186
+ 185
@@ -4072,7 +4088,7 @@
Looking for a student discount?
- Looking for a student discount?
+ Szukasz zniżki studenckiej?
apps/client/src/app/pages/pricing/pricing-page.html
342
@@ -4091,7 +4107,7 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 365
+ 372
apps/client/src/app/pages/features/features-page.html
@@ -4099,11 +4115,11 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 202
+ 198
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 76
+ 75
libs/ui/src/lib/i18n.ts
@@ -4112,7 +4128,7 @@
annual interest rate
- annual interest rate
+ rocznej stopy zwrotu
apps/client/src/app/pages/portfolio/fire/fire-page.html
185
@@ -4123,7 +4139,7 @@
Depozyt
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 377
+ 404
@@ -4131,7 +4147,7 @@
Miesięcznie
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 91
+ 90
@@ -4139,7 +4155,7 @@
Rocznie
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 92
+ 91
@@ -4419,11 +4435,11 @@
Could not save asset profile
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 588
+ 604
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 591
+ 607
@@ -4447,12 +4463,12 @@
Kontynenty
apps/client/src/app/pages/public/public-page.html
- 132
+ 131
Sustainable retirement income
- Sustainable retirement income
+ Zrównoważony dochód na emeryturze
apps/client/src/app/pages/portfolio/fire/fire-page.html
41
@@ -4463,7 +4479,7 @@
Ghostfolio umożliwia śledzenie wartości swojego majątku.
apps/client/src/app/pages/public/public-page.html
- 238
+ 237
@@ -4493,6 +4509,10 @@
apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html
88
+
+ libs/ui/src/lib/value/value.component.html
+ 18
+
Personal Finance Tools
@@ -4585,7 +4605,7 @@
per month
- per month
+ miesięcznie
apps/client/src/app/pages/portfolio/fire/fire-page.html
94
@@ -4605,7 +4625,7 @@
Website of Thomas Kaul
- Website of Thomas Kaul
+ Strona internetowa Thomas'a Kaul'a
apps/client/src/app/pages/about/overview/about-overview-page.html
44
@@ -4824,7 +4844,7 @@
Członkostwo
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 48
+ 67
libs/common/src/lib/routes/routes.ts
@@ -4837,7 +4857,7 @@
Request it
- Request it
+ Porpoś o
apps/client/src/app/pages/pricing/pricing-page.html
344
@@ -4940,7 +4960,7 @@
Czy na pewno chcesz usunąć tę działalność?
libs/ui/src/lib/activities-table/activities-table.component.ts
- 288
+ 292
@@ -4948,7 +4968,7 @@
Profile aktywów
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 106
+ 123
libs/ui/src/lib/assistant/assistant.html
@@ -4957,7 +4977,7 @@
,
- ,
+ ,
apps/client/src/app/pages/portfolio/fire/fire-page.html
145
@@ -4981,7 +5001,7 @@
contact us
- contact us
+ skontaktuj się z nami
apps/client/src/app/pages/pricing/pricing-page.html
336
@@ -5037,18 +5057,18 @@
Interest
- Udział
+ Odsetki
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
69
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 352
+ 359
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 387
+ 414
libs/ui/src/lib/i18n.ts
@@ -5060,7 +5080,7 @@
Oszczędności
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 397
+ 424
@@ -5088,7 +5108,7 @@
Pokaż wszystko
libs/ui/src/lib/holdings-table/holdings-table.component.html
- 216
+ 212
@@ -5132,7 +5152,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 326
+ 327
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -5140,7 +5160,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 290
+ 286
libs/ui/src/lib/i18n.ts
@@ -5164,7 +5184,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 342
+ 343
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -5172,7 +5192,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 309
+ 305
libs/ui/src/lib/i18n.ts
@@ -5216,7 +5236,7 @@
Fundusz Rezerwowy
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 164
+ 168
apps/client/src/app/pages/features/features-page.html
@@ -5292,7 +5312,7 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 437
+ 451
@@ -5303,6 +5323,14 @@
27
+
+ No Activities
+ Brak transakcji
+
+ apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
+ 145
+
+
Retirement Provision
Świadczenia Emerytalne
@@ -5332,7 +5360,7 @@
Symbol
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 68
+ 77
apps/client/src/app/components/admin-market-data/admin-market-data.html
@@ -5348,7 +5376,7 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 315
+ 318
libs/ui/src/lib/i18n.ts
@@ -5377,7 +5405,7 @@
View Details
- View Details
+ Zobacz szczegóły
apps/client/src/app/components/admin-users/admin-users.html
225
@@ -5397,7 +5425,7 @@
Sign in with OpenID Connect
- Sign in with OpenID Connect
+ Zaloguj się za pomocą OpenID Connect
apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html
55
@@ -5405,7 +5433,7 @@
Buy
- Zakup
+ Kupno
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
31
@@ -5420,7 +5448,7 @@
Opłata
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 262
+ 258
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -5449,7 +5477,7 @@
Sell
- Sprzedaj
+ Sprzedaż
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
44
@@ -5464,7 +5492,7 @@
Gotówka
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 212
+ 219
libs/ui/src/lib/i18n.ts
@@ -5509,10 +5537,10 @@
Authentication
- Authentication
+ Uwierzytelnianie
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 35
+ 54
@@ -5605,7 +5633,7 @@
If you retire today, you would be able to withdraw
- If you retire today, you would be able to withdraw
+ Gdybyś przeszedł na emeryturę dziś, mógłbyś wypłacać
apps/client/src/app/pages/portfolio/fire/fire-page.html
68
@@ -5656,7 +5684,7 @@
Ważność do
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 74
+ 86
libs/ui/src/lib/membership-card/membership-card.component.html
@@ -5680,7 +5708,7 @@
apps/client/src/app/pages/public/public-page.html
- 196
+ 195
libs/ui/src/lib/benchmark/benchmark.component.html
@@ -5688,11 +5716,11 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 439
+ 453
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 452
+ 467
libs/ui/src/lib/top-holdings/top-holdings.component.html
@@ -5720,7 +5748,7 @@
Salda Gotówkowe
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
- 148
+ 146
@@ -5740,7 +5768,7 @@
Czy na pewno chcesz usunąć saldo tego konta?
libs/ui/src/lib/account-balances/account-balances.component.ts
- 120
+ 113
@@ -5756,7 +5784,7 @@
Obecna cena rynkowa wynosi
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 706
+ 722
@@ -5764,7 +5792,7 @@
Test
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 568
+ 571
@@ -5809,7 +5837,7 @@
Argentina
- Argentina
+ Argentyna
libs/ui/src/lib/i18n.ts
78
@@ -5852,11 +5880,11 @@
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 81
+ 80
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 97
+ 96
apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
@@ -5865,7 +5893,7 @@
here
- here
+ tutaj
apps/client/src/app/pages/pricing/pricing-page.html
347
@@ -5873,10 +5901,10 @@
Close Holding
- Close Holding
+ Zamknij pozycję
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 442
+ 447
@@ -5916,7 +5944,7 @@
Dotychczasowy tydzień
libs/ui/src/lib/assistant/assistant.component.ts
- 367
+ 366
@@ -5924,11 +5952,11 @@
WTD
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 191
+ 197
libs/ui/src/lib/assistant/assistant.component.ts
- 367
+ 366
@@ -5936,7 +5964,7 @@
Od początku miesiąca
libs/ui/src/lib/assistant/assistant.component.ts
- 371
+ 370
@@ -5944,11 +5972,11 @@
MTD
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 195
+ 201
libs/ui/src/lib/assistant/assistant.component.ts
- 371
+ 370
@@ -5956,7 +5984,7 @@
Od początku roku
libs/ui/src/lib/assistant/assistant.component.ts
- 375
+ 374
@@ -5992,7 +6020,7 @@
rok
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 203
+ 209
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
@@ -6004,7 +6032,7 @@
libs/ui/src/lib/assistant/assistant.component.ts
- 385
+ 384
@@ -6012,11 +6040,11 @@
lata
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 207
+ 213
libs/ui/src/lib/assistant/assistant.component.ts
- 409
+ 408
@@ -6032,7 +6060,7 @@
Gromadzenie Danych
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 587
+ 594
apps/client/src/app/components/admin-overview/admin-overview.html
@@ -6044,7 +6072,7 @@
Informacje Ogólne
apps/client/src/app/pages/faq/faq-page.component.ts
- 49
+ 41
@@ -6052,7 +6080,7 @@
Rozwiązanie w Chmurze
apps/client/src/app/pages/faq/faq-page.component.ts
- 54
+ 46
libs/common/src/lib/routes/routes.ts
@@ -6064,7 +6092,7 @@
Własny Hosting
apps/client/src/app/pages/faq/faq-page.component.ts
- 60
+ 52
libs/common/src/lib/routes/routes.ts
@@ -6105,7 +6133,7 @@
Antywne
apps/client/src/app/components/home-holdings/home-holdings.component.ts
- 64
+ 63
@@ -6113,7 +6141,7 @@
Zamknięte
apps/client/src/app/components/home-holdings/home-holdings.component.ts
- 65
+ 64
@@ -6145,7 +6173,7 @@
Wykonaj Zadanie
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 220
+ 229
@@ -6153,7 +6181,7 @@
Priorytet
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 96
+ 105
@@ -6209,7 +6237,7 @@
Czy na pewno chcesz zamknąć swoje konto Ghostfolio?
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 208
+ 205
@@ -6254,10 +6282,10 @@
Include in
- Include in
+ Uwzględnij w
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 374
+ 377
@@ -6265,7 +6293,7 @@
Ups! Wystąpił błąd podczas konfigurowania uwierzytelniania biometrycznego.
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 336
+ 333
@@ -6281,7 +6309,7 @@
Punkty Odniesienia
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 126
+ 125
@@ -6329,7 +6357,7 @@
Chcesz udoskonalić swoją osobistą strategię inwestycyjną ?
apps/client/src/app/pages/public/public-page.html
- 234
+ 233
@@ -6538,7 +6566,7 @@
View Holding
- View Holding
+ Podgląd inwestycji
libs/ui/src/lib/activities-table/activities-table.component.html
450
@@ -6661,7 +6689,7 @@
Błąd
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 697
+ 713
@@ -6682,7 +6710,7 @@
Oops! Could not update access.
- Oops! Could not update access.
+ Ups! Nie udało się zaktualizować dostępu.
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.component.ts
178
@@ -6690,7 +6718,7 @@
, based on your total assets of
- , based on your total assets of
+ , na podstawie całkowitej wartości aktywów wynoszącej
apps/client/src/app/pages/portfolio/fire/fire-page.html
96
@@ -6713,7 +6741,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 592
+ 599
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -6745,7 +6773,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 345
+ 341
apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html
@@ -6753,7 +6781,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html
- 46
+ 47
libs/ui/src/lib/i18n.ts
@@ -6765,7 +6793,7 @@
Zamknij
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 594
+ 601
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -6791,13 +6819,17 @@
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
68
+
+ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
+ 127
+
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
107
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 347
+ 343
libs/ui/src/lib/i18n.ts
@@ -6806,10 +6838,10 @@
Role
- Role
+ Rola
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 14
+ 33
@@ -6833,7 +6865,7 @@
Przegląd portfela
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 56
+ 65
@@ -6846,7 +6878,7 @@
If you plan to open an account at
- If you plan to open an account at
+ Jeśli planujesz otworzyć konto w
apps/client/src/app/pages/pricing/pricing-page.html
312
@@ -6878,7 +6910,7 @@
send an e-mail to
- send an e-mail to
+ wyślij e-mail do
apps/client/src/app/pages/about/overview/about-overview-page.html
87
@@ -6900,6 +6932,14 @@
42
+
+ has been copied to the clipboard
+ has been copied to the clipboard
+
+ libs/ui/src/lib/value/value.component.ts
+ 180
+
+
From the beginning
Od samego początku
@@ -6950,7 +6990,7 @@
, assuming a
- , assuming a
+ , przyjmując
apps/client/src/app/pages/portfolio/fire/fire-page.html
174
@@ -6958,7 +6998,7 @@
to use our referral link and get a Ghostfolio Premium membership for one year
- to use our referral link and get a Ghostfolio Premium membership for one year
+ aby skorzystać z naszego linku polecającego i otrzymać roczną subskrypcję Ghostfolio Premium
apps/client/src/app/pages/pricing/pricing-page.html
340
@@ -6966,7 +7006,7 @@
can be self-hosted
- może być hostowany samodzielnie
+ może być hostowana samodzielnie
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
178
@@ -6990,7 +7030,7 @@
can be used anonymously
- może być używany anonimowo
+ może być używana anonimowo
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
217
@@ -7002,7 +7042,7 @@
cannot be used anonymously
- nie może być używany anonimowo
+ nie może być używana anonimowo
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
224
@@ -7038,7 +7078,7 @@
Ghostfolio is a lightweight wealth management application for individuals to keep track of stocks, ETFs or cryptocurrencies and make solid, data-driven investment decisions.
- Ghostfolio is a lightweight wealth management application for individuals to keep track of stocks, ETFs or cryptocurrencies and make solid, data-driven investment decisions.
+ Ghostfolio to aplikacja do zarządzania majątkiem, przeznaczona dla osób prywatnych do śledzenia akcji, ETF‑ów i kryptowalut oraz podejmowania solidnych, opartych na danych decyzji inwestycyjnych.
apps/client/src/app/pages/about/overview/about-overview-page.html
10
@@ -7065,7 +7105,7 @@
Skonfiguruj klucz API
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 171
+ 188
@@ -7101,7 +7141,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 45
+ 44
libs/common/src/lib/routes/routes.ts
@@ -7117,7 +7157,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 34
+ 33
libs/common/src/lib/routes/routes.ts
@@ -7171,7 +7211,7 @@
z
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 135
+ 152
@@ -7179,7 +7219,7 @@
codzienne żądania
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 137
+ 154
@@ -7187,7 +7227,7 @@
Usuń klucz API
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 161
+ 178
@@ -7195,7 +7235,7 @@
Czy na pewno chcesz usunąć klucz API??
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 127
+ 133
@@ -7215,7 +7255,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 98
+ 117
@@ -7287,7 +7327,7 @@
Zapisz
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 603
+ 610
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -7323,11 +7363,11 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 356
+ 352
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html
- 48
+ 49
@@ -7339,7 +7379,7 @@
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 260
+ 257
@@ -7352,7 +7392,7 @@
Check the system status at
- Check the system status at
+ Sprawdź status systemu n
apps/client/src/app/pages/about/overview/about-overview-page.html
57
@@ -7363,12 +7403,12 @@
Wprowadź swój klucz API Ghostfolio.
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 146
+ 152
Change with currency effect
- Change with currency effect
+ Zmiana z efektem walutowym
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
116
@@ -7379,7 +7419,7 @@
Prompt AI został skopiowany do schowka
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 201
+ 199
@@ -7395,7 +7435,7 @@
Leniwy
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 225
+ 231
@@ -7403,7 +7443,7 @@
Natychmiastowy
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 229
+ 235
@@ -7411,7 +7451,7 @@
Domyślna cena rynkowa
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 481
+ 484
@@ -7419,7 +7459,7 @@
Tryb
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 518
+ 521
@@ -7427,7 +7467,7 @@
Selektor
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 534
+ 537
@@ -7435,7 +7475,7 @@
Nagłówki żądań HTTP
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 494
+ 497
@@ -7443,7 +7483,7 @@
koniec dnia
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 225
+ 231
@@ -7451,7 +7491,7 @@
w czasie rzeczywistym
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 229
+ 235
@@ -7459,7 +7499,7 @@
Otwórz Duck.ai
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 202
+ 200
@@ -7479,7 +7519,7 @@
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 368
+ 377
@@ -7491,7 +7531,7 @@
apps/client/src/app/components/home-overview/home-overview.component.ts
- 55
+ 54
libs/ui/src/lib/holdings-table/holdings-table.component.html
@@ -7499,16 +7539,16 @@
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 368
+ 377
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 381
+ 390
The project has been initiated by
- The project has been initiated by
+ Projekt został zainicjowany przez
apps/client/src/app/pages/about/overview/about-overview-page.html
40
@@ -7532,7 +7572,7 @@
Total amount
- Total amount
+ Wartość portfela
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
95
@@ -7607,11 +7647,11 @@
Token bezpieczeństwa
apps/client/src/app/components/admin-users/admin-users.component.ts
- 236
+ 235
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 170
+ 167
@@ -7619,15 +7659,15 @@
Czy napewno chcesz wygenerować nowy token bezpieczeństwa dla tego użytkownika?
apps/client/src/app/components/admin-users/admin-users.component.ts
- 241
+ 240
Find account, holding or page...
- Find account, holding or page...
+ Znajdź konto, pozycję lub stronę...
libs/ui/src/lib/assistant/assistant.component.ts
- 151
+ 115
@@ -7692,7 +7732,7 @@
( ) jest już w użyciu.
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 633
+ 649
@@ -7700,7 +7740,7 @@
Wystąpił błąd podczas aktualizacji do ( ).
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 641
+ 657
@@ -7764,7 +7804,7 @@
ktoś
apps/client/src/app/pages/public/public-page.component.ts
- 59
+ 61
@@ -7796,7 +7836,7 @@
Czy na pewno chcesz usunąć ten element?
libs/ui/src/lib/benchmark/benchmark.component.ts
- 144
+ 139
@@ -7837,7 +7877,7 @@
Konto użytkownika demonstracyjnego zostało zsynchronizowane.
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 274
+ 277
@@ -7872,25 +7912,25 @@
150
-
+
Fee Ratio
- Stosunek opłat
+ Wskaźnik opłat
apps/client/src/app/pages/i18n/i18n-page.html
152
-
- The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
- Opłaty przekraczają ${thresholdMax}% początkowej inwestycji (${feeRatio}%)
+
+ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
+ Opłaty przekraczają ${thresholdMax}% twojej całkowitej wartości inwestycji (${feeRatio}%)
apps/client/src/app/pages/i18n/i18n-page.html
154
-
- The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
- Opłaty nie przekraczają ${thresholdMax}% początkowej inwestycji (${feeRatio}%)
+
+ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
+ Opłaty nie przekraczają ${thresholdMax}% twojej całkowitej wartości inwestycji (${feeRatio}%)
apps/client/src/app/pages/i18n/i18n-page.html
158
@@ -8048,10 +8088,10 @@
Current month
- Current month
+ Bieżący miesiąc
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 195
+ 201
@@ -8059,11 +8099,11 @@
nowy
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 67
+ 79
apps/client/src/app/pages/admin/admin-page.component.ts
- 56
+ 53
@@ -8220,7 +8260,7 @@
Czy na pewno chcesz wygenerować nowy token bezpieczeństwa?
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 175
+ 172
@@ -8244,7 +8284,7 @@
Akcje
apps/client/src/app/components/markets/markets.component.ts
- 52
+ 51
apps/client/src/app/pages/features/features-page.html
@@ -8256,7 +8296,7 @@
Kryptowaluty
apps/client/src/app/components/markets/markets.component.ts
- 53
+ 52
apps/client/src/app/pages/features/features-page.html
@@ -8276,7 +8316,7 @@
Zarządzaj profilem aktywów
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 466
+ 471
@@ -8309,7 +8349,7 @@
Account Cluster Risks
- Account Cluster Risks
+ Ryzyka skupienia w obrębie rachunków
apps/client/src/app/pages/i18n/i18n-page.html
14
@@ -8317,7 +8357,7 @@
Asset Class Cluster Risks
- Asset Class Cluster Risks
+ Ryzyka skupienia w obrębie klas aktywów
apps/client/src/app/pages/i18n/i18n-page.html
39
@@ -8325,7 +8365,7 @@
Currency Cluster Risks
- Currency Cluster Risks
+ Ryzyka koncentracji walutowej
apps/client/src/app/pages/i18n/i18n-page.html
83
@@ -8333,7 +8373,7 @@
Economic Market Cluster Risks
- Economic Market Cluster Risks
+ Ryzyka skupienia w obrębie segmentów rynku gospodarczego
apps/client/src/app/pages/i18n/i18n-page.html
106
@@ -8341,7 +8381,7 @@
Emergency Fund
- Emergency Fund
+ Fundusz Awaryjny
apps/client/src/app/pages/i18n/i18n-page.html
144
@@ -8349,7 +8389,7 @@
Fees
- Fees
+ Opłaty
apps/client/src/app/pages/i18n/i18n-page.html
161
@@ -8357,7 +8397,7 @@
Liquidity
- Liquidity
+ Płynność
apps/client/src/app/pages/i18n/i18n-page.html
70
@@ -8365,7 +8405,7 @@
Buying Power
- Buying Power
+ Siła nabywcza
apps/client/src/app/pages/i18n/i18n-page.html
71
@@ -8373,7 +8413,7 @@
Your buying power is below ${thresholdMin} ${baseCurrency}
- Your buying power is below ${thresholdMin} ${baseCurrency}
+ Twoja siła nabywcza jest niższa niż ${thresholdMin} ${baseCurrency}
apps/client/src/app/pages/i18n/i18n-page.html
73
@@ -8381,7 +8421,7 @@
Your buying power is 0 ${baseCurrency}
- Your buying power is 0 ${baseCurrency}
+ Twoja siła nabywcza to 0 ${baseCurrency}
apps/client/src/app/pages/i18n/i18n-page.html
77
@@ -8389,7 +8429,7 @@
Your buying power exceeds ${thresholdMin} ${baseCurrency}
- Your buying power exceeds ${thresholdMin} ${baseCurrency}
+ Twoja siła nabywcza przekracza ${thresholdMin} ${baseCurrency}
apps/client/src/app/pages/i18n/i18n-page.html
80
@@ -8397,7 +8437,7 @@
Regional Market Cluster Risks
- Regional Market Cluster Risks
+ Ryzyka skupienia w obrębie regionów rynkowych
apps/client/src/app/pages/i18n/i18n-page.html
163
@@ -8405,7 +8445,7 @@
No results found...
- No results found...
+ Nie znaleziono wyników...
libs/ui/src/lib/assistant/assistant.html
51
@@ -8413,7 +8453,7 @@
Developed Markets
- Developed Markets
+ Rynki rozwinięte
apps/client/src/app/pages/i18n/i18n-page.html
109
@@ -8421,7 +8461,7 @@
The developed markets contribution of your current investment (${developedMarketsValueRatio}%) exceeds ${thresholdMax}%
- The developed markets contribution of your current investment (${developedMarketsValueRatio}%) exceeds ${thresholdMax}%
+ Udział rynków rozwiniętych w Twojej obecnej inwestycji (${developedMarketsValueRatio}%) przekracza ${thresholdMax}%
apps/client/src/app/pages/i18n/i18n-page.html
112
@@ -8429,7 +8469,7 @@
The developed markets contribution of your current investment (${developedMarketsValueRatio}%) is below ${thresholdMin}%
- The developed markets contribution of your current investment (${developedMarketsValueRatio}%) is below ${thresholdMin}%
+ Udział rynków rozwiniętych w Twojej obecnej inwestycji (${developedMarketsValueRatio}%) jest poniżej ${thresholdMin}%
apps/client/src/app/pages/i18n/i18n-page.html
117
@@ -8437,7 +8477,7 @@
The developed markets contribution of your current investment (${developedMarketsValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%
- The developed markets contribution of your current investment (${developedMarketsValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%
+ Udział rynków rozwiniętych w Twojej obecnej inwestycji (${developedMarketsValueRatio}%) mieści się w zakresie ${thresholdMin}% i ${thresholdMax}%
apps/client/src/app/pages/i18n/i18n-page.html
122
@@ -8445,7 +8485,7 @@
Emerging Markets
- Emerging Markets
+ Rynki wschodzące
apps/client/src/app/pages/i18n/i18n-page.html
127
@@ -8453,7 +8493,7 @@
The emerging markets contribution of your current investment (${emergingMarketsValueRatio}%) exceeds ${thresholdMax}%
- The emerging markets contribution of your current investment (${emergingMarketsValueRatio}%) exceeds ${thresholdMax}%
+ Udział rynków wschodzących w obecnej inwestycji (${emergingMarketsValueRatio}%) przekracza ${thresholdMax}%
apps/client/src/app/pages/i18n/i18n-page.html
130
@@ -8461,7 +8501,7 @@
The emerging markets contribution of your current investment (${emergingMarketsValueRatio}%) is below ${thresholdMin}%
- The emerging markets contribution of your current investment (${emergingMarketsValueRatio}%) is below ${thresholdMin}%
+ Udział rynków wschodzących w obecnej inwestycji (${emergingMarketsValueRatio}%) jest poniżej ${thresholdMin}%
apps/client/src/app/pages/i18n/i18n-page.html
135
@@ -8469,7 +8509,7 @@
The emerging markets contribution of your current investment (${emergingMarketsValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%
- The emerging markets contribution of your current investment (${emergingMarketsValueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%
+ Udział rynków wschodzących w obecnej inwestycji (${emergingMarketsValueRatio}%) mieści się w zakresie ${thresholdMin}% i ${thresholdMax}%
apps/client/src/app/pages/i18n/i18n-page.html
140
@@ -8477,7 +8517,7 @@
No accounts have been set up
- No accounts have been set up
+ Nie utworzono żadnych kont
apps/client/src/app/pages/i18n/i18n-page.html
21
@@ -8485,7 +8525,7 @@
Your net worth is managed by 0 accounts
- Your net worth is managed by 0 accounts
+ Twój majątek jest zarządzany przez 0 kont
apps/client/src/app/pages/i18n/i18n-page.html
33
@@ -8493,7 +8533,7 @@
Asia-Pacific
- Asia-Pacific
+ Asia-Pacific
apps/client/src/app/pages/i18n/i18n-page.html
165
@@ -8501,7 +8541,7 @@
The Asia-Pacific market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}%
- The Asia-Pacific market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}%
+ Udział rynku Azji i Pacyfiku w Twojej obecnej inwestycji (${valueRatio}%) przekracza ${thresholdMax}%
apps/client/src/app/pages/i18n/i18n-page.html
167
@@ -8509,7 +8549,7 @@
The Asia-Pacific market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}%
- The Asia-Pacific market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}%
+ Udział rynku Azji i Pacyfiku w Twojej obecnej inwestycji (${valueRatio}%) jest poniżej ${thresholdMin}%
apps/client/src/app/pages/i18n/i18n-page.html
171
@@ -8517,7 +8557,7 @@
The Asia-Pacific market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%
- The Asia-Pacific market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%
+ Udział rynku Azji i Pacyfiku w Twojej obecnej inwestycji (${valueRatio}%) mieści się w zakresie ${thresholdMin}% i ${thresholdMax}%
apps/client/src/app/pages/i18n/i18n-page.html
175
@@ -8525,7 +8565,7 @@
Emerging Markets
- Emerging Markets
+ Rynki wschodzące
apps/client/src/app/pages/i18n/i18n-page.html
180
@@ -8533,7 +8573,7 @@
The Emerging Markets contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}%
- The Emerging Markets contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}%
+ Udział rynków wschodzących w Twojej obecnej inwestycji (${valueRatio}%) przekracza ${thresholdMax}%
apps/client/src/app/pages/i18n/i18n-page.html
183
@@ -8541,7 +8581,7 @@
The Emerging Markets contribution of your current investment (${valueRatio}%) is below ${thresholdMin}%
- The Emerging Markets contribution of your current investment (${valueRatio}%) is below ${thresholdMin}%
+ Udział rynków wschodzących w Twojej obecnej inwestycji (${valueRatio}%) jest poniżej ${thresholdMin}%
apps/client/src/app/pages/i18n/i18n-page.html
187
@@ -8549,7 +8589,7 @@
The Emerging Markets contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%
- The Emerging Markets contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%
+ Udział rynków wschodzących w Twojej obecnej inwestycji (${valueRatio}%) mieści się w zakresie ${thresholdMin}% i ${thresholdMax}%
apps/client/src/app/pages/i18n/i18n-page.html
191
@@ -8557,7 +8597,7 @@
Europe
- Europe
+ Europa
apps/client/src/app/pages/i18n/i18n-page.html
195
@@ -8565,7 +8605,7 @@
The Europe market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}%
- The Europe market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}%
+ Udział rynku europejskiego w obecnej inwestycji (${valueRatio}%) przekracza ${thresholdMax}%
apps/client/src/app/pages/i18n/i18n-page.html
197
@@ -8573,7 +8613,7 @@
The Europe market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}%
- The Europe market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}%
+ Udział rynku europejskiego w obecnej inwestycji (${valueRatio}%) jest poniżej ${thresholdMin}%
apps/client/src/app/pages/i18n/i18n-page.html
201
@@ -8581,7 +8621,7 @@
The Europe market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%
- The Europe market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%
+ Udział rynku europejskiego w obecnej inwestycji (${valueRatio}%) mieści się w zakresie ${thresholdMin}% i ${thresholdMax}%
apps/client/src/app/pages/i18n/i18n-page.html
205
@@ -8589,7 +8629,7 @@
Japan
- Japan
+ Japonia
apps/client/src/app/pages/i18n/i18n-page.html
209
@@ -8597,7 +8637,7 @@
The Japan market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}%
- The Japan market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}%
+ Udział rynku japońskiego w obecnej inwestycj (${valueRatio}%) przekracza ${thresholdMax}%
apps/client/src/app/pages/i18n/i18n-page.html
211
@@ -8605,7 +8645,7 @@
The Japan market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}%
- The Japan market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}%
+ Udział rynku japońskiego w obecnej inwestycj (${valueRatio}%) jest poniżej ${thresholdMin}%
apps/client/src/app/pages/i18n/i18n-page.html
215
@@ -8613,7 +8653,7 @@
The Japan market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%
- The Japan market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%
+ Udział rynku japońskiego w obecnej inwestycj (${valueRatio}%) mieści się w zakresie ${thresholdMin}% i ${thresholdMax}%
apps/client/src/app/pages/i18n/i18n-page.html
219
@@ -8621,7 +8661,7 @@
North America
- North America
+ Północna Ameryka
apps/client/src/app/pages/i18n/i18n-page.html
223
@@ -8629,7 +8669,7 @@
The North America market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}%
- The North America market contribution of your current investment (${valueRatio}%) exceeds ${thresholdMax}%
+ Udział rynku Ameryki Północnej w obecnej inwestycji (${valueRatio}%) przekracza ${thresholdMax}%
apps/client/src/app/pages/i18n/i18n-page.html
225
@@ -8637,7 +8677,7 @@
The North America market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}%
- The North America market contribution of your current investment (${valueRatio}%) is below ${thresholdMin}%
+ Udział rynku Ameryki Północnej w obecnej inwestycji (${valueRatio}%) jest poniżej ${thresholdMin}%
apps/client/src/app/pages/i18n/i18n-page.html
229
@@ -8645,7 +8685,7 @@
The North America market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%
- The North America market contribution of your current investment (${valueRatio}%) is within the range of ${thresholdMin}% and ${thresholdMax}%
+ Udział rynku Ameryki Północnej w obecnej inwestycji (${valueRatio}%) mieści się w zakresie ${thresholdMin}% i ${thresholdMax}%
apps/client/src/app/pages/i18n/i18n-page.html
233
@@ -8653,7 +8693,7 @@
Find Ghostfolio on GitHub
- Find Ghostfolio on GitHub
+ Znajdź Ghostfolio na GitHub
apps/client/src/app/pages/about/overview/about-overview-page.html
99
@@ -8665,7 +8705,7 @@
Join the Ghostfolio Slack community
- Join the Ghostfolio Slack community
+ Dołącz do społeczności Ghostfolio na Slacku
apps/client/src/app/pages/about/overview/about-overview-page.html
109
@@ -8673,7 +8713,7 @@
Follow Ghostfolio on X (formerly Twitter)
- Follow Ghostfolio on X (formerly Twitter)
+ Śledź Ghostfolio na X (poprzednio Twitter)
apps/client/src/app/pages/about/overview/about-overview-page.html
118
@@ -8681,7 +8721,7 @@
Send an e-mail
- Send an e-mail
+ Wyślij e-mail
apps/client/src/app/pages/about/overview/about-overview-page.html
89
@@ -8693,15 +8733,15 @@
Registration Date
- Registration Date
+ Data rejestracji
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 26
+ 45
Follow Ghostfolio on LinkedIn
- Follow Ghostfolio on LinkedIn
+ Śledź Ghostfolio na LinkedIn
apps/client/src/app/pages/about/overview/about-overview-page.html
147
@@ -8709,7 +8749,7 @@
Ghostfolio is an independent & bootstrapped business
- Ghostfolio is an independent & bootstrapped business
+ Ghostfolio to niezależna & samofinansująca się firma
apps/client/src/app/pages/about/overview/about-overview-page.html
157
@@ -8717,7 +8757,7 @@
Support Ghostfolio
- Support Ghostfolio
+ Wesprzyj Ghostfolio
apps/client/src/app/pages/about/overview/about-overview-page.html
166
diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf
index 2bcd7c401..3531f84d7 100644
--- a/apps/client/src/locales/messages.pt.xlf
+++ b/apps/client/src/locales/messages.pt.xlf
@@ -42,7 +42,7 @@
Tipo
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 48
+ 57
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
@@ -114,7 +114,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 309
+ 310
apps/client/src/app/components/admin-platform/admin-platform.component.html
@@ -126,7 +126,7 @@
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 46
+ 58
apps/client/src/app/components/admin-tag/admin-tag.component.html
@@ -142,7 +142,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 139
+ 135
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -186,7 +186,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 316
+ 317
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -198,7 +198,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 145
+ 141
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -234,15 +234,15 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 205
+ 201
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 208
+ 204
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 211
+ 207
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -290,11 +290,11 @@
apps/client/src/app/components/admin-platform/admin-platform.component.html
- 74
+ 78
apps/client/src/app/components/admin-tag/admin-tag.component.html
- 67
+ 71
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -322,11 +322,15 @@
apps/client/src/app/components/admin-platform/admin-platform.component.html
- 85
+ 89
apps/client/src/app/components/admin-tag/admin-tag.component.html
- 78
+ 82
+
+
+ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
+ 22
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -350,7 +354,7 @@
Pretende realmente eliminar esta conta?
libs/ui/src/lib/accounts-table/accounts-table.component.ts
- 150
+ 148
@@ -358,7 +362,7 @@
Fonte de dados
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 82
+ 91
apps/client/src/app/components/admin-market-data/admin-market-data.html
@@ -370,7 +374,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 155
+ 151
libs/ui/src/lib/i18n.ts
@@ -382,7 +386,7 @@
Tentativas
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 120
+ 129
@@ -390,7 +394,7 @@
Criado
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 134
+ 143
@@ -398,7 +402,7 @@
Terminado
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 143
+ 152
@@ -406,11 +410,11 @@
Estado
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 152
+ 161
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 92
+ 104
@@ -426,7 +430,7 @@
Eliminar Tarefas
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 193
+ 202
@@ -434,7 +438,7 @@
Perfil de Ativos
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 106
+ 123
libs/ui/src/lib/assistant/assistant.html
@@ -446,11 +450,11 @@
Histórico de Dados de Mercado
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 54
+ 63
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 448
+ 451
@@ -458,7 +462,7 @@
Visualizar dados
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 208
+ 217
@@ -466,7 +470,7 @@
Ver Stacktrace
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 216
+ 225
@@ -474,7 +478,7 @@
Apagar Tarefa
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 224
+ 233
@@ -490,7 +494,7 @@
Data
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 161
+ 157
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -526,7 +530,7 @@
Filtrar por...
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 385
+ 383
@@ -566,7 +570,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html
- 44
+ 40
@@ -602,7 +606,7 @@
Deseja realmente eliminar este cupão?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 193
+ 196
@@ -610,7 +614,7 @@
Deseja realmente limpar a cache?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 230
+ 233
@@ -618,7 +622,7 @@
Por favor, defina a sua mensagem do sistema:
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 250
+ 253
@@ -746,7 +750,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 89
+ 108
@@ -762,11 +766,11 @@
Could not validate form
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 554
+ 570
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 557
+ 573
@@ -806,7 +810,7 @@
Referência
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 376
+ 379
apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts
@@ -842,7 +846,7 @@
apps/client/src/app/components/header/header.component.ts
- 297
+ 298
apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html
@@ -862,15 +866,15 @@
Oops! Token de Segurança Incorreto.
apps/client/src/app/components/header/header.component.ts
- 312
+ 313
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 154
+ 152
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 193
+ 191
@@ -878,7 +882,7 @@
Gerir Atividades
apps/client/src/app/components/home-holdings/home-holdings.html
- 67
+ 64
@@ -886,11 +890,11 @@
Medo
apps/client/src/app/components/home-market/home-market.component.ts
- 42
+ 41
apps/client/src/app/components/markets/markets.component.ts
- 47
+ 46
libs/ui/src/lib/i18n.ts
@@ -902,11 +906,11 @@
Ganância
apps/client/src/app/components/home-market/home-market.component.ts
- 43
+ 42
apps/client/src/app/components/markets/markets.component.ts
- 48
+ 47
libs/ui/src/lib/i18n.ts
@@ -938,7 +942,7 @@
Depósito
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 377
+ 404
@@ -946,7 +950,7 @@
Valor Total
apps/client/src/app/components/investment-chart/investment-chart.component.ts
- 143
+ 146
@@ -1058,7 +1062,7 @@
Desempenho Bruto Absoluto
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 73
+ 77
@@ -1066,7 +1070,7 @@
Desempenho Líquido Absoluto
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 107
+ 111
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
@@ -1078,7 +1082,7 @@
Desempenho Líquido
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 123
+ 127
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
@@ -1090,7 +1094,7 @@
Ativos Totais
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 149
+ 153
@@ -1098,7 +1102,7 @@
Poder de Compra
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 241
+ 248
@@ -1106,7 +1110,7 @@
Excluído da Análise
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 267
+ 274
@@ -1114,7 +1118,7 @@
Valor Líquido
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 317
+ 324
@@ -1122,7 +1126,7 @@
Desempenho Anual
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 331
+ 338
@@ -1158,7 +1162,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 189
+ 185
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -1198,7 +1202,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 53
+ 72
@@ -1210,7 +1214,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 396
+ 399
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -1218,7 +1222,7 @@
apps/client/src/app/pages/public/public-page.html
- 114
+ 113
@@ -1230,7 +1234,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 407
+ 410
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -1242,7 +1246,7 @@
Marcadores
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 201
+ 218
libs/ui/src/lib/tags-selector/tags-selector.component.html
@@ -1258,7 +1262,7 @@
Dados do Relatório com Problema
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 451
+ 456
@@ -1286,7 +1290,7 @@
Mostrar tudo
libs/ui/src/lib/holdings-table/holdings-table.component.html
- 216
+ 212
@@ -1298,7 +1302,7 @@
libs/ui/src/lib/assistant/assistant.component.ts
- 363
+ 362
@@ -1306,11 +1310,11 @@
AATD
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 199
+ 205
libs/ui/src/lib/assistant/assistant.component.ts
- 375
+ 374
@@ -1318,11 +1322,11 @@
1A
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 203
+ 209
libs/ui/src/lib/assistant/assistant.component.ts
- 385
+ 384
@@ -1330,11 +1334,11 @@
5A
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 207
+ 213
libs/ui/src/lib/assistant/assistant.component.ts
- 409
+ 408
@@ -1350,11 +1354,11 @@
Máx
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 211
+ 217
libs/ui/src/lib/assistant/assistant.component.ts
- 415
+ 414
@@ -1378,7 +1382,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 195
+ 194
@@ -1390,7 +1394,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 193
+ 192
@@ -1406,7 +1410,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 196
+ 195
@@ -1466,7 +1470,7 @@
Auto
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 70
+ 69
apps/client/src/app/components/user-account-settings/user-account-settings.html
@@ -1510,7 +1514,7 @@
Deseja realmente remover este método de início de sessão?
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 282
+ 279
@@ -1586,7 +1590,7 @@
Localidade
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 509
+ 512
apps/client/src/app/components/user-account-settings/user-account-settings.html
@@ -1666,7 +1670,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 11
+ 30
@@ -1714,11 +1718,11 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 375
+ 381
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 66
+ 85
apps/client/src/app/pages/accounts/accounts-page.html
@@ -1886,7 +1890,7 @@
Como já tem sessão iniciada, não pode aceder à conta de demonstração.
apps/client/src/app/pages/demo/demo-page.component.ts
- 35
+ 32
@@ -1932,6 +1936,10 @@
Overview
Visão geral
+
+ apps/client/src/app/components/admin-jobs/admin-jobs.html
+ 7
+
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
114
@@ -1950,11 +1958,11 @@
apps/client/src/app/pages/admin/admin-page.component.ts
- 48
+ 45
apps/client/src/app/pages/resources/resources-page.component.ts
- 30
+ 29
libs/common/src/lib/routes/routes.ts
@@ -1970,7 +1978,7 @@
Mercados
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 378
+ 381
apps/client/src/app/components/footer/footer.component.html
@@ -1994,7 +2002,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 40
+ 39
libs/common/src/lib/routes/routes.ts
@@ -2022,7 +2030,7 @@
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
- 115
+ 113
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
@@ -2042,11 +2050,11 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 342
+ 348
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 75
+ 94
apps/client/src/app/pages/portfolio/activities/activities-page.html
@@ -2074,7 +2082,7 @@
Current week
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 191
+ 197
@@ -2118,7 +2126,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 124
+ 120
@@ -2126,7 +2134,7 @@
Preço por Unidade
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 214
+ 210
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -2138,7 +2146,7 @@
Nota
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 432
+ 435
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
@@ -2146,7 +2154,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 275
+ 271
@@ -2154,7 +2162,7 @@
A importar dados...
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 175
+ 174
@@ -2162,7 +2170,7 @@
A importação foi concluída
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 185
+ 184
@@ -2282,7 +2290,7 @@
apps/client/src/app/pages/public/public-page.html
- 151
+ 150
@@ -2306,7 +2314,7 @@
apps/client/src/app/pages/public/public-page.html
- 168
+ 167
@@ -2314,7 +2322,7 @@
Latest activities
apps/client/src/app/pages/public/public-page.html
- 211
+ 210
@@ -2326,7 +2334,7 @@
apps/client/src/app/pages/public/public-page.html
- 177
+ 176
@@ -2338,7 +2346,7 @@
apps/client/src/app/pages/public/public-page.html
- 186
+ 185
@@ -2358,7 +2366,7 @@
Mensalmente
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 91
+ 90
@@ -2482,7 +2490,7 @@
Continentes
apps/client/src/app/pages/public/public-page.html
- 132
+ 131
@@ -2498,7 +2506,7 @@
O Ghostfolio permite-lhe estar a par e gerir a sua riqueza.
apps/client/src/app/pages/public/public-page.html
- 238
+ 237
@@ -2526,7 +2534,7 @@
apps/client/src/app/pages/public/public-page.html
- 242
+ 241
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
@@ -2580,6 +2588,10 @@
apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html
88
+
+ libs/ui/src/lib/value/value.component.html
+ 18
+
Resources
@@ -2698,7 +2710,7 @@
Deseja realmente eliminar esta atividade?
libs/ui/src/lib/activities-table/activities-table.component.ts
- 288
+ 292
@@ -2750,11 +2762,11 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 352
+ 359
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 387
+ 414
libs/ui/src/lib/i18n.ts
@@ -2766,7 +2778,7 @@
Poupanças
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 397
+ 424
@@ -2802,7 +2814,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 326
+ 327
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -2810,7 +2822,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 290
+ 286
libs/ui/src/lib/i18n.ts
@@ -2826,7 +2838,7 @@
Fundo de Emergência
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 164
+ 168
apps/client/src/app/pages/features/features-page.html
@@ -2846,7 +2858,7 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 437
+ 451
@@ -2854,7 +2866,7 @@
Símbolo
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 68
+ 77
apps/client/src/app/components/admin-market-data/admin-market-data.html
@@ -2870,7 +2882,7 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 315
+ 318
libs/ui/src/lib/i18n.ts
@@ -2894,7 +2906,7 @@
Dinheiro
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 212
+ 219
libs/ui/src/lib/i18n.ts
@@ -2942,7 +2954,7 @@
Authentication
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 35
+ 54
@@ -3074,7 +3086,7 @@
apps/client/src/app/pages/public/public-page.html
- 196
+ 195
libs/ui/src/lib/benchmark/benchmark.component.html
@@ -3082,11 +3094,11 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 439
+ 453
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 452
+ 467
libs/ui/src/lib/top-holdings/top-holdings.component.html
@@ -3114,7 +3126,7 @@
Mapeamento de Símbolo
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 384
+ 387
@@ -3130,7 +3142,7 @@
Dados de Mercado
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 398
+ 403
libs/common/src/lib/routes/routes.ts
@@ -3154,7 +3166,7 @@
A validar dados...
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 299
+ 293
@@ -3170,7 +3182,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html
- 71
+ 67
@@ -3194,7 +3206,7 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 365
+ 372
apps/client/src/app/pages/features/features-page.html
@@ -3202,11 +3214,11 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 202
+ 198
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 76
+ 75
libs/ui/src/lib/i18n.ts
@@ -3234,7 +3246,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 342
+ 343
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -3242,7 +3254,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 309
+ 305
libs/ui/src/lib/i18n.ts
@@ -3274,7 +3286,7 @@
Anualmente
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 92
+ 91
@@ -3282,7 +3294,7 @@
Importar Dividendos
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 137
+ 136
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -3298,7 +3310,7 @@
Válido até
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 74
+ 86
libs/ui/src/lib/membership-card/membership-card.component.html
@@ -3337,6 +3349,14 @@
22
+
+ No Activities
+ No Activities
+
+ apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
+ 145
+
+
Retirement Provision
Provisão de Reforma
@@ -3610,11 +3630,11 @@
Could not save asset profile
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 588
+ 604
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 591
+ 607
@@ -3634,7 +3654,7 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 88
+ 92
@@ -3798,7 +3818,7 @@
Deseja mesmo eliminar estas atividades?
libs/ui/src/lib/activities-table/activities-table.component.ts
- 278
+ 282
@@ -3809,6 +3829,14 @@
306
+
+ Explore
+ Explore
+
+ apps/client/src/app/pages/resources/overview/resources-overview.component.html
+ 11
+
+
By
By
@@ -3830,7 +3858,7 @@
Current year
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 199
+ 205
@@ -3846,11 +3874,11 @@
Url
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 419
+ 422
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 550
+ 553
apps/client/src/app/components/admin-platform/admin-platform.component.html
@@ -3866,7 +3894,7 @@
Asset profile has been saved
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 578
+ 594
@@ -3874,7 +3902,7 @@
Deseja mesmo eliminar esta plataforma?
apps/client/src/app/components/admin-platform/admin-platform.component.ts
- 106
+ 111
@@ -3882,7 +3910,7 @@
Plataformas
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 195
+ 212
@@ -3890,7 +3918,7 @@
Atualizar saldo em Dinheiro
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 112
+ 108
@@ -4070,7 +4098,7 @@
Responsabilidades
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 295
+ 302
apps/client/src/app/pages/features/features-page.html
@@ -4226,7 +4254,7 @@
Configuração do raspador
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 471
+ 474
@@ -4470,7 +4498,7 @@
ETFs sem países
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 136
+ 135
@@ -4478,7 +4506,7 @@
ETFs sem setores
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 141
+ 140
@@ -4486,7 +4514,7 @@
Ativos
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 226
+ 233
@@ -4658,7 +4686,7 @@
Job ID
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 34
+ 43
@@ -4714,11 +4742,11 @@
Moedas
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 131
+ 130
apps/client/src/app/pages/public/public-page.html
- 96
+ 95
@@ -4766,11 +4794,11 @@
Could not parse scraper configuration
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 509
+ 525
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 512
+ 528
@@ -5432,7 +5460,7 @@
Taxa
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 262
+ 258
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -5464,7 +5492,7 @@
Você realmente deseja excluir esta tag?
apps/client/src/app/components/admin-tag/admin-tag.component.ts
- 103
+ 108
@@ -5532,7 +5560,7 @@
Associação
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 48
+ 67
libs/common/src/lib/routes/routes.ts
@@ -5564,7 +5592,7 @@
Perfil de ativos
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 52
+ 61
@@ -5688,7 +5716,7 @@
Ops! Não foi possível analisar os dados históricos.
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts
- 262
+ 284
@@ -5696,7 +5724,7 @@
Você realmente deseja excluir esta mensagem do sistema?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 206
+ 209
@@ -5720,7 +5748,7 @@
Saldos de caixa
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
- 148
+ 146
@@ -5740,7 +5768,7 @@
Você realmente deseja excluir o saldo desta conta?
libs/ui/src/lib/account-balances/account-balances.component.ts
- 120
+ 113
@@ -5756,7 +5784,7 @@
O preço de mercado atual é
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 706
+ 722
@@ -5764,7 +5792,7 @@
Teste
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 568
+ 571
@@ -5852,11 +5880,11 @@
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 81
+ 80
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 97
+ 96
apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
@@ -5876,7 +5904,7 @@
Close Holding
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 442
+ 447
@@ -5916,7 +5944,7 @@
Semana até agora
libs/ui/src/lib/assistant/assistant.component.ts
- 367
+ 366
@@ -5924,11 +5952,11 @@
WTD
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 191
+ 197
libs/ui/src/lib/assistant/assistant.component.ts
- 367
+ 366
@@ -5936,7 +5964,7 @@
Do mês até a data
libs/ui/src/lib/assistant/assistant.component.ts
- 371
+ 370
@@ -5944,11 +5972,11 @@
MTD
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 195
+ 201
libs/ui/src/lib/assistant/assistant.component.ts
- 371
+ 370
@@ -5956,7 +5984,7 @@
No acumulado do ano
libs/ui/src/lib/assistant/assistant.component.ts
- 375
+ 374
@@ -5992,7 +6020,7 @@
ano
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 203
+ 209
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
@@ -6004,7 +6032,7 @@
libs/ui/src/lib/assistant/assistant.component.ts
- 385
+ 384
@@ -6012,11 +6040,11 @@
anos
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 207
+ 213
libs/ui/src/lib/assistant/assistant.component.ts
- 409
+ 408
@@ -6032,7 +6060,7 @@
Coleta de dados
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 587
+ 594
apps/client/src/app/components/admin-overview/admin-overview.html
@@ -6044,7 +6072,7 @@
geral
apps/client/src/app/pages/faq/faq-page.component.ts
- 49
+ 41
@@ -6052,7 +6080,7 @@
Nuvem
apps/client/src/app/pages/faq/faq-page.component.ts
- 54
+ 46
libs/common/src/lib/routes/routes.ts
@@ -6064,7 +6092,7 @@
Auto-hospedagem
apps/client/src/app/pages/faq/faq-page.component.ts
- 60
+ 52
libs/common/src/lib/routes/routes.ts
@@ -6105,7 +6133,7 @@
Ativo
apps/client/src/app/components/home-holdings/home-holdings.component.ts
- 64
+ 63
@@ -6113,7 +6141,7 @@
Fechado
apps/client/src/app/components/home-holdings/home-holdings.component.ts
- 65
+ 64
@@ -6145,7 +6173,7 @@
Executar trabalho
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 220
+ 229
@@ -6153,7 +6181,7 @@
Prioridade
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 96
+ 105
@@ -6209,7 +6237,7 @@
Você realmente deseja encerrar sua conta Ghostfolio?
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 208
+ 205
@@ -6257,7 +6285,7 @@
Include in
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 374
+ 377
@@ -6265,7 +6293,7 @@
Ops! Ocorreu um erro ao configurar a autenticação biométrica.
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 336
+ 333
@@ -6281,7 +6309,7 @@
Referências
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 126
+ 125
@@ -6329,7 +6357,7 @@
Você gostaria de refinar seu estratégia de investimento pessoal ?
apps/client/src/app/pages/public/public-page.html
- 234
+ 233
@@ -6661,7 +6689,7 @@
Erro
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 697
+ 713
@@ -6713,7 +6741,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 592
+ 599
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -6745,7 +6773,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 345
+ 341
apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html
@@ -6753,7 +6781,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html
- 46
+ 47
libs/ui/src/lib/i18n.ts
@@ -6765,7 +6793,7 @@
Fechar
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 594
+ 601
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -6791,13 +6819,17 @@
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
68
+
+ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
+ 127
+
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
107
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 347
+ 343
libs/ui/src/lib/i18n.ts
@@ -6809,7 +6841,7 @@
Role
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 14
+ 33
@@ -6833,7 +6865,7 @@
Visão geral do portfólio
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 56
+ 65
@@ -6900,6 +6932,14 @@
42
+
+ has been copied to the clipboard
+ has been copied to the clipboard
+
+ libs/ui/src/lib/value/value.component.ts
+ 180
+
+
From the beginning
Desde o início
@@ -7065,7 +7105,7 @@
Definir chave de API
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 171
+ 188
@@ -7101,7 +7141,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 45
+ 44
libs/common/src/lib/routes/routes.ts
@@ -7117,7 +7157,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 34
+ 33
libs/common/src/lib/routes/routes.ts
@@ -7171,7 +7211,7 @@
de
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 135
+ 152
@@ -7179,7 +7219,7 @@
solicitações diárias
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 137
+ 154
@@ -7187,7 +7227,7 @@
Remover chave de API
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 161
+ 178
@@ -7195,7 +7235,7 @@
Você realmente deseja excluir a chave de API?
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 127
+ 133
@@ -7215,7 +7255,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 98
+ 117
@@ -7287,7 +7327,7 @@
Guardar
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 603
+ 610
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -7323,11 +7363,11 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 356
+ 352
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html
- 48
+ 49
@@ -7339,7 +7379,7 @@
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 260
+ 257
@@ -7363,7 +7403,7 @@
Please enter your Ghostfolio API key.
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 146
+ 152
@@ -7379,7 +7419,7 @@
AI prompt has been copied to the clipboard
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 201
+ 199
@@ -7395,7 +7435,7 @@
Lazy
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 225
+ 231
@@ -7403,7 +7443,7 @@
Instant
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 229
+ 235
@@ -7411,7 +7451,7 @@
Preço de mercado padrão
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 481
+ 484
@@ -7419,7 +7459,7 @@
Mode
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 518
+ 521
@@ -7427,7 +7467,7 @@
Selector
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 534
+ 537
@@ -7435,7 +7475,7 @@
HTTP Request Headers
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 494
+ 497
@@ -7443,7 +7483,7 @@
end of day
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 225
+ 231
@@ -7451,7 +7491,7 @@
real-time
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 229
+ 235
@@ -7459,7 +7499,7 @@
Open Duck.ai
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 202
+ 200
@@ -7479,7 +7519,7 @@
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 368
+ 377
@@ -7491,7 +7531,7 @@
apps/client/src/app/components/home-overview/home-overview.component.ts
- 55
+ 54
libs/ui/src/lib/holdings-table/holdings-table.component.html
@@ -7499,11 +7539,11 @@
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 368
+ 377
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 381
+ 390
@@ -7607,11 +7647,11 @@
Security token
apps/client/src/app/components/admin-users/admin-users.component.ts
- 236
+ 235
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 170
+ 167
@@ -7619,7 +7659,7 @@
Do you really want to generate a new security token for this user?
apps/client/src/app/components/admin-users/admin-users.component.ts
- 241
+ 240
@@ -7627,7 +7667,7 @@
Find account, holding or page...
libs/ui/src/lib/assistant/assistant.component.ts
- 151
+ 115
@@ -7692,7 +7732,7 @@
( ) is already in use.
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 633
+ 649
@@ -7700,7 +7740,7 @@
An error occurred while updating to ( ).
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 641
+ 657
@@ -7764,7 +7804,7 @@
someone
apps/client/src/app/pages/public/public-page.component.ts
- 59
+ 61
@@ -7796,7 +7836,7 @@
Do you really want to delete this item?
libs/ui/src/lib/benchmark/benchmark.component.ts
- 144
+ 139
@@ -7837,7 +7877,7 @@
Demo user account has been synced.
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 274
+ 277
@@ -7872,7 +7912,7 @@
150
-
+
Fee Ratio
Fee Ratio
@@ -7880,17 +7920,17 @@
152
-
- The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
- The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
+
+ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
+ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
apps/client/src/app/pages/i18n/i18n-page.html
154
-
- The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
- The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
+
+ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
+ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
apps/client/src/app/pages/i18n/i18n-page.html
158
@@ -8051,7 +8091,7 @@
Current month
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 195
+ 201
@@ -8059,11 +8099,11 @@
new
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 67
+ 79
apps/client/src/app/pages/admin/admin-page.component.ts
- 56
+ 53
@@ -8220,7 +8260,7 @@
Do you really want to generate a new security token?
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 175
+ 172
@@ -8244,7 +8284,7 @@
Stocks
apps/client/src/app/components/markets/markets.component.ts
- 52
+ 51
apps/client/src/app/pages/features/features-page.html
@@ -8256,7 +8296,7 @@
Criptomoedas
apps/client/src/app/components/markets/markets.component.ts
- 53
+ 52
apps/client/src/app/pages/features/features-page.html
@@ -8276,7 +8316,7 @@
Gerenciar perfil de ativos
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 466
+ 471
@@ -8696,7 +8736,7 @@
Registration Date
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 26
+ 45
diff --git a/apps/client/src/locales/messages.tr.xlf b/apps/client/src/locales/messages.tr.xlf
index 421ef3855..e4547a2de 100644
--- a/apps/client/src/locales/messages.tr.xlf
+++ b/apps/client/src/locales/messages.tr.xlf
@@ -223,7 +223,7 @@
Tip
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 48
+ 57
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
@@ -311,7 +311,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 309
+ 310
apps/client/src/app/components/admin-platform/admin-platform.component.html
@@ -323,7 +323,7 @@
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 46
+ 58
apps/client/src/app/components/admin-tag/admin-tag.component.html
@@ -339,7 +339,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 139
+ 135
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -383,7 +383,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 316
+ 317
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -395,7 +395,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 145
+ 141
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -415,15 +415,15 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 205
+ 201
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 208
+ 204
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 211
+ 207
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -471,11 +471,11 @@
apps/client/src/app/components/admin-platform/admin-platform.component.html
- 74
+ 78
apps/client/src/app/components/admin-tag/admin-tag.component.html
- 67
+ 71
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -503,11 +503,15 @@
apps/client/src/app/components/admin-platform/admin-platform.component.html
- 85
+ 89
apps/client/src/app/components/admin-tag/admin-tag.component.html
- 78
+ 82
+
+
+ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
+ 22
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -531,7 +535,7 @@
Bu hesabı silmeyi gerçekten istiyor musunuz?
libs/ui/src/lib/accounts-table/accounts-table.component.ts
- 150
+ 148
@@ -539,7 +543,7 @@
Veri Kaynağı
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 82
+ 91
apps/client/src/app/components/admin-market-data/admin-market-data.html
@@ -551,7 +555,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 155
+ 151
libs/ui/src/lib/i18n.ts
@@ -563,7 +567,7 @@
Deneme
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 120
+ 129
@@ -571,7 +575,7 @@
Oluşturuldu
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 134
+ 143
@@ -579,7 +583,7 @@
Tamamlandı
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 143
+ 152
@@ -587,11 +591,11 @@
Durum
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 152
+ 161
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 92
+ 104
@@ -607,7 +611,7 @@
İşleri Sil
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 193
+ 202
@@ -615,7 +619,7 @@
Varlık Profili
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 106
+ 123
libs/ui/src/lib/assistant/assistant.html
@@ -627,11 +631,11 @@
Tarihsel Piyasa Verisi
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 54
+ 63
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 448
+ 451
@@ -639,7 +643,7 @@
Veri Gör
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 208
+ 217
@@ -647,7 +651,7 @@
Hata İzini Görüntüle
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 216
+ 225
@@ -655,7 +659,7 @@
İşleri Sil
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 224
+ 233
@@ -671,7 +675,7 @@
Tarih
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 161
+ 157
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -707,11 +711,11 @@
Para Birimleri
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 131
+ 130
apps/client/src/app/pages/public/public-page.html
- 96
+ 95
@@ -719,7 +723,7 @@
Ülkesi Olmayan ETF’ler
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 136
+ 135
@@ -727,7 +731,7 @@
Sektörü Olmayan ETF’ler
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 141
+ 140
@@ -735,7 +739,7 @@
Filtrele...
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 385
+ 383
@@ -775,7 +779,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html
- 44
+ 40
@@ -843,7 +847,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 53
+ 72
@@ -855,7 +859,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 396
+ 399
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -863,7 +867,7 @@
apps/client/src/app/pages/public/public-page.html
- 114
+ 113
@@ -875,7 +879,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 407
+ 410
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -887,7 +891,7 @@
Sembol Eşleştirme
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 384
+ 387
@@ -903,7 +907,7 @@
Veri Toplayıcı Yapılandırması
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 471
+ 474
@@ -911,7 +915,7 @@
Not
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 432
+ 435
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
@@ -919,7 +923,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 275
+ 271
@@ -947,7 +951,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 124
+ 120
@@ -955,7 +959,7 @@
Bu kuponu gerçekten silmek istiyor musunuz?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 193
+ 196
@@ -963,7 +967,7 @@
Önbelleği temizlemeyi gerçekten istiyor musunuz?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 230
+ 233
@@ -971,7 +975,7 @@
Lütfen sistem mesajınızı belirleyin:
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 250
+ 253
@@ -1011,7 +1015,7 @@
Etiketler
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 201
+ 218
libs/ui/src/lib/tags-selector/tags-selector.component.html
@@ -1103,11 +1107,11 @@
Url
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 419
+ 422
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 550
+ 553
apps/client/src/app/components/admin-platform/admin-platform.component.html
@@ -1123,7 +1127,7 @@
Asset profile has been saved
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 578
+ 594
@@ -1131,7 +1135,15 @@
Bu platformu silmeyi gerçekten istiyor musunuz?
apps/client/src/app/components/admin-platform/admin-platform.component.ts
- 106
+ 111
+
+
+
+ Explore
+ Explore
+
+ apps/client/src/app/pages/resources/overview/resources-overview.component.html
+ 11
@@ -1155,7 +1167,7 @@
Current year
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 199
+ 205
@@ -1171,7 +1183,7 @@
Platformlar
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 195
+ 212
@@ -1215,7 +1227,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 89
+ 108
@@ -1247,11 +1259,11 @@
Could not validate form
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 554
+ 570
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 557
+ 573
@@ -1299,7 +1311,7 @@
Karşılaştırma Ölçütü
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 376
+ 379
apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts
@@ -1335,7 +1347,7 @@
apps/client/src/app/components/header/header.component.ts
- 297
+ 298
apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html
@@ -1355,15 +1367,15 @@
Hay Allah! Güvenlik anahtarı yanlış.
apps/client/src/app/components/header/header.component.ts
- 312
+ 313
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 154
+ 152
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 193
+ 191
@@ -1371,7 +1383,7 @@
İşlemleri Yönet
apps/client/src/app/components/home-holdings/home-holdings.html
- 67
+ 64
@@ -1379,11 +1391,11 @@
Korku
apps/client/src/app/components/home-market/home-market.component.ts
- 42
+ 41
apps/client/src/app/components/markets/markets.component.ts
- 47
+ 46
libs/ui/src/lib/i18n.ts
@@ -1395,11 +1407,11 @@
Açgözlülük
apps/client/src/app/components/home-market/home-market.component.ts
- 43
+ 42
apps/client/src/app/components/markets/markets.component.ts
- 48
+ 47
libs/ui/src/lib/i18n.ts
@@ -1503,7 +1515,7 @@
Current week
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 191
+ 197
@@ -1523,7 +1535,7 @@
Toplam Tutar
apps/client/src/app/components/investment-chart/investment-chart.component.ts
- 143
+ 146
@@ -1635,7 +1647,7 @@
Toplam Brüt Performans
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 73
+ 77
@@ -1643,7 +1655,7 @@
Toplam Net Performans
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 107
+ 111
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
@@ -1655,7 +1667,7 @@
Net Performans
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 123
+ 127
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
@@ -1667,7 +1679,7 @@
Toplam Varlıklar
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 149
+ 153
@@ -1675,7 +1687,7 @@
Varlıklar
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 226
+ 233
@@ -1683,7 +1695,7 @@
Alım Limiti
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 241
+ 248
@@ -1691,7 +1703,7 @@
Analize Dahil Edilmemiştir.
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 267
+ 274
@@ -1699,7 +1711,7 @@
Yükümlülükler
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 295
+ 302
apps/client/src/app/pages/features/features-page.html
@@ -1711,7 +1723,7 @@
Toplam Varlık
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 317
+ 324
@@ -1719,7 +1731,7 @@
Yıllıklandırılmış Performans
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 331
+ 338
@@ -1755,7 +1767,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 189
+ 185
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -1775,7 +1787,7 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 88
+ 92
@@ -1783,7 +1795,7 @@
Rapor Veri Sorunu
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 451
+ 456
@@ -1963,7 +1975,7 @@
libs/ui/src/lib/assistant/assistant.component.ts
- 363
+ 362
@@ -1971,11 +1983,11 @@
YTD
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 199
+ 205
libs/ui/src/lib/assistant/assistant.component.ts
- 375
+ 374
@@ -1983,11 +1995,11 @@
1Y
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 203
+ 209
libs/ui/src/lib/assistant/assistant.component.ts
- 385
+ 384
@@ -1995,11 +2007,11 @@
5Y
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 207
+ 213
libs/ui/src/lib/assistant/assistant.component.ts
- 409
+ 408
@@ -2015,11 +2027,11 @@
Maks.
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 211
+ 217
libs/ui/src/lib/assistant/assistant.component.ts
- 415
+ 414
@@ -2043,7 +2055,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 195
+ 194
@@ -2055,7 +2067,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 193
+ 192
@@ -2071,7 +2083,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 196
+ 195
@@ -2199,11 +2211,11 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 375
+ 381
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 66
+ 85
apps/client/src/app/pages/accounts/accounts-page.html
@@ -2263,7 +2275,7 @@
Piyasa Verileri
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 398
+ 403
libs/common/src/lib/routes/routes.ts
@@ -2297,6 +2309,10 @@
Overview
Özet
+
+ apps/client/src/app/components/admin-jobs/admin-jobs.html
+ 7
+
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
114
@@ -2315,11 +2331,11 @@
apps/client/src/app/pages/admin/admin-page.component.ts
- 48
+ 45
apps/client/src/app/pages/resources/resources-page.component.ts
- 30
+ 29
libs/common/src/lib/routes/routes.ts
@@ -2443,11 +2459,11 @@
Could not parse scraper configuration
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 509
+ 525
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 512
+ 528
@@ -2463,7 +2479,7 @@
Oturum açmış olduğunuz için demo hesabına erişemezsiniz.
apps/client/src/app/pages/demo/demo-page.component.ts
- 35
+ 32
@@ -2647,7 +2663,7 @@
apps/client/src/app/pages/public/public-page.html
- 242
+ 241
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
@@ -2699,7 +2715,7 @@
Piyasalar
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 378
+ 381
apps/client/src/app/components/footer/footer.component.html
@@ -2723,7 +2739,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 40
+ 39
libs/common/src/lib/routes/routes.ts
@@ -3087,7 +3103,7 @@
Job ID
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 34
+ 43
@@ -3115,7 +3131,7 @@
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
- 115
+ 113
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
@@ -3135,11 +3151,11 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 342
+ 348
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 75
+ 94
apps/client/src/app/pages/portfolio/activities/activities-page.html
@@ -3159,7 +3175,7 @@
Tüm işlemlerinizi silmeyi gerçekten istiyor musunuz?
libs/ui/src/lib/activities-table/activities-table.component.ts
- 278
+ 282
@@ -3203,7 +3219,7 @@
Nakit Bakiyesini Güncelle
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 112
+ 108
@@ -3211,7 +3227,7 @@
Birim Fiyat
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 214
+ 210
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -3239,7 +3255,7 @@
Temettüleri İçe Aktar
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 137
+ 136
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -3255,7 +3271,7 @@
Veri içe aktarılıyor...
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 175
+ 174
@@ -3263,7 +3279,7 @@
İçe aktarma tamamlandı
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 185
+ 184
@@ -3279,7 +3295,7 @@
Veri doğrulanıyor...
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 299
+ 293
@@ -3367,7 +3383,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html
- 71
+ 67
@@ -3459,7 +3475,7 @@
apps/client/src/app/pages/public/public-page.html
- 151
+ 150
@@ -3483,7 +3499,7 @@
apps/client/src/app/pages/public/public-page.html
- 168
+ 167
@@ -3491,7 +3507,7 @@
Latest activities
apps/client/src/app/pages/public/public-page.html
- 211
+ 210
@@ -3503,7 +3519,7 @@
apps/client/src/app/pages/public/public-page.html
- 177
+ 176
@@ -3515,7 +3531,7 @@
apps/client/src/app/pages/public/public-page.html
- 186
+ 185
@@ -3575,7 +3591,7 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 365
+ 372
apps/client/src/app/pages/features/features-page.html
@@ -3583,11 +3599,11 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 202
+ 198
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 76
+ 75
libs/ui/src/lib/i18n.ts
@@ -3607,7 +3623,7 @@
Para Yatırma
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 377
+ 404
@@ -3615,7 +3631,7 @@
Aylık
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 91
+ 90
@@ -3623,7 +3639,7 @@
Yıllık
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 92
+ 91
@@ -3903,11 +3919,11 @@
Could not save asset profile
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 588
+ 604
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 591
+ 607
@@ -3931,7 +3947,7 @@
Kıtalar
apps/client/src/app/pages/public/public-page.html
- 132
+ 131
@@ -3947,7 +3963,7 @@
Ghostfolio, varlıklarınızı takip etmenizi sağlar.
apps/client/src/app/pages/public/public-page.html
- 238
+ 237
@@ -3997,6 +4013,10 @@
apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html
88
+
+ libs/ui/src/lib/value/value.component.html
+ 18
+
Personal Finance Tools
@@ -4336,7 +4356,7 @@
Otomatik
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 70
+ 69
apps/client/src/app/components/user-account-settings/user-account-settings.html
@@ -4380,7 +4400,7 @@
Bu giriş yöntemini kaldırmayı gerçekten istiyor musunuz?
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 282
+ 279
@@ -4388,7 +4408,7 @@
Geçerli tarih
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 74
+ 86
libs/ui/src/lib/membership-card/membership-card.component.html
@@ -4468,7 +4488,7 @@
Yerel Ayarlar
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 509
+ 512
apps/client/src/app/components/user-account-settings/user-account-settings.html
@@ -4568,7 +4588,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 11
+ 30
@@ -4664,7 +4684,7 @@
TBu işlemi silmeyi gerçekten istiyor musunuz?
libs/ui/src/lib/activities-table/activities-table.component.ts
- 288
+ 292
@@ -4740,11 +4760,11 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 352
+ 359
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 387
+ 414
libs/ui/src/lib/i18n.ts
@@ -4756,7 +4776,7 @@
Tasarruflar
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 397
+ 424
@@ -4784,7 +4804,7 @@
Tümünü göster
libs/ui/src/lib/holdings-table/holdings-table.component.html
- 216
+ 212
@@ -4828,7 +4848,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 326
+ 327
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -4836,7 +4856,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 290
+ 286
libs/ui/src/lib/i18n.ts
@@ -4860,7 +4880,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 342
+ 343
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -4868,7 +4888,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 309
+ 305
libs/ui/src/lib/i18n.ts
@@ -4912,7 +4932,7 @@
Acil Durum Fonu
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 164
+ 168
apps/client/src/app/pages/features/features-page.html
@@ -4988,7 +5008,7 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 437
+ 451
@@ -4999,6 +5019,14 @@
27
+
+ No Activities
+ No Activities
+
+ apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
+ 145
+
+
Retirement Provision
Yaşlılık Provizyonu
@@ -5028,7 +5056,7 @@
Sembol
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 68
+ 77
apps/client/src/app/components/admin-market-data/admin-market-data.html
@@ -5044,7 +5072,7 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 315
+ 318
libs/ui/src/lib/i18n.ts
@@ -5144,7 +5172,7 @@
Nakit
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 212
+ 219
libs/ui/src/lib/i18n.ts
@@ -5192,7 +5220,7 @@
Authentication
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 35
+ 54
@@ -5324,7 +5352,7 @@
apps/client/src/app/pages/public/public-page.html
- 196
+ 195
libs/ui/src/lib/benchmark/benchmark.component.html
@@ -5332,11 +5360,11 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 439
+ 453
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 452
+ 467
libs/ui/src/lib/top-holdings/top-holdings.component.html
@@ -5440,7 +5468,7 @@
Ücret
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 262
+ 258
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -5464,7 +5492,7 @@
Bu etiketi silmeyi gerçekten istiyor musunuz?
apps/client/src/app/components/admin-tag/admin-tag.component.ts
- 103
+ 108
@@ -5532,7 +5560,7 @@
Üyelik
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 48
+ 67
libs/common/src/lib/routes/routes.ts
@@ -5564,7 +5592,7 @@
Varlık Profili
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 52
+ 61
@@ -5688,7 +5716,7 @@
Hay Allah! Geçmiş veriler ayrıştırılamadı.
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts
- 262
+ 284
@@ -5696,7 +5724,7 @@
Bu sistem mesajını silmeyi gerçekten istiyor musunuz?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 206
+ 209
@@ -5720,7 +5748,7 @@
Nakit Bakiyeleri
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
- 148
+ 146
@@ -5740,7 +5768,7 @@
Bu nakit bakiyesini silmeyi gerçekten istiyor musunuz?
libs/ui/src/lib/account-balances/account-balances.component.ts
- 120
+ 113
@@ -5756,7 +5784,7 @@
Şu anki piyasa fiyatı
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 706
+ 722
@@ -5764,7 +5792,7 @@
Test
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 568
+ 571
@@ -5852,11 +5880,11 @@
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 81
+ 80
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 97
+ 96
apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
@@ -5876,7 +5904,7 @@
Close Holding
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 442
+ 447
@@ -5916,7 +5944,7 @@
Hafta içi
libs/ui/src/lib/assistant/assistant.component.ts
- 367
+ 366
@@ -5924,11 +5952,11 @@
WTD
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 191
+ 197
libs/ui/src/lib/assistant/assistant.component.ts
- 367
+ 366
@@ -5936,7 +5964,7 @@
Ay içi
libs/ui/src/lib/assistant/assistant.component.ts
- 371
+ 370
@@ -5944,11 +5972,11 @@
MTD
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 195
+ 201
libs/ui/src/lib/assistant/assistant.component.ts
- 371
+ 370
@@ -5956,7 +5984,7 @@
Yıl içi
libs/ui/src/lib/assistant/assistant.component.ts
- 375
+ 374
@@ -5992,7 +6020,7 @@
Yıl
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 203
+ 209
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
@@ -6004,7 +6032,7 @@
libs/ui/src/lib/assistant/assistant.component.ts
- 385
+ 384
@@ -6012,11 +6040,11 @@
Yıllar
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 207
+ 213
libs/ui/src/lib/assistant/assistant.component.ts
- 409
+ 408
@@ -6032,7 +6060,7 @@
Veri Toplama
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 587
+ 594
apps/client/src/app/components/admin-overview/admin-overview.html
@@ -6044,7 +6072,7 @@
Genel
apps/client/src/app/pages/faq/faq-page.component.ts
- 49
+ 41
@@ -6052,7 +6080,7 @@
Bulut
apps/client/src/app/pages/faq/faq-page.component.ts
- 54
+ 46
libs/common/src/lib/routes/routes.ts
@@ -6064,7 +6092,7 @@
Kendini Barındırma
apps/client/src/app/pages/faq/faq-page.component.ts
- 60
+ 52
libs/common/src/lib/routes/routes.ts
@@ -6105,7 +6133,7 @@
Aktif
apps/client/src/app/components/home-holdings/home-holdings.component.ts
- 64
+ 63
@@ -6113,7 +6141,7 @@
Kapalı
apps/client/src/app/components/home-holdings/home-holdings.component.ts
- 65
+ 64
@@ -6145,7 +6173,7 @@
İşlemi Yürüt
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 220
+ 229
@@ -6153,7 +6181,7 @@
Öncelik
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 96
+ 105
@@ -6209,7 +6237,7 @@
Ghostfolio hesabınızı kapatmak istediğinize emin misiniz?
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 208
+ 205
@@ -6257,7 +6285,7 @@
Include in
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 374
+ 377
@@ -6265,7 +6293,7 @@
Oops! Biyometrik kimlik doğrulama ayarlanırken bir hata oluştu.
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 336
+ 333
@@ -6281,7 +6309,7 @@
Kıyaslamalar
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 126
+ 125
@@ -6329,7 +6357,7 @@
Senin özel yatırım stratejinizi iyileştirmek ister misin?
apps/client/src/app/pages/public/public-page.html
- 234
+ 233
@@ -6661,7 +6689,7 @@
Hata
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 697
+ 713
@@ -6713,7 +6741,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 592
+ 599
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -6745,7 +6773,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 345
+ 341
apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html
@@ -6753,7 +6781,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html
- 46
+ 47
libs/ui/src/lib/i18n.ts
@@ -6765,7 +6793,7 @@
Kapat
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 594
+ 601
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -6791,13 +6819,17 @@
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
68
+
+ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
+ 127
+
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
107
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 347
+ 343
libs/ui/src/lib/i18n.ts
@@ -6809,7 +6841,7 @@
Role
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 14
+ 33
@@ -6833,7 +6865,7 @@
Portföy Anlık Görüntüsü
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 56
+ 65
@@ -6900,6 +6932,14 @@
42
+
+ has been copied to the clipboard
+ has been copied to the clipboard
+
+ libs/ui/src/lib/value/value.component.ts
+ 180
+
+
From the beginning
Başlangıçtan beri
@@ -7065,7 +7105,7 @@
API anahtarını ayarla
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 171
+ 188
@@ -7101,7 +7141,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 45
+ 44
libs/common/src/lib/routes/routes.ts
@@ -7117,7 +7157,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 34
+ 33
libs/common/src/lib/routes/routes.ts
@@ -7171,7 +7211,7 @@
ın
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 135
+ 152
@@ -7179,7 +7219,7 @@
günlük istekler
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 137
+ 154
@@ -7187,7 +7227,7 @@
API anahtarını kaldır
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 161
+ 178
@@ -7195,7 +7235,7 @@
API anahtarını silmek istediğinize emin misiniz?
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 127
+ 133
@@ -7215,7 +7255,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 98
+ 117
@@ -7287,7 +7327,7 @@
Kaydet
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 603
+ 610
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -7323,11 +7363,11 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 356
+ 352
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html
- 48
+ 49
@@ -7339,7 +7379,7 @@
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 260
+ 257
@@ -7363,7 +7403,7 @@
Lütfen Ghostfolio API anahtarınızı girin.
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 146
+ 152
@@ -7379,7 +7419,7 @@
Yapay zeka istemi panoya kopyalandı
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 201
+ 199
@@ -7395,7 +7435,7 @@
Tembel
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 225
+ 231
@@ -7403,7 +7443,7 @@
Anında
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 229
+ 235
@@ -7411,7 +7451,7 @@
Varsayılan Piyasa Fiyatı
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 481
+ 484
@@ -7419,7 +7459,7 @@
Mod
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 518
+ 521
@@ -7427,7 +7467,7 @@
Seçici
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 534
+ 537
@@ -7435,7 +7475,7 @@
HTTP İstek Başlıkları
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 494
+ 497
@@ -7443,7 +7483,7 @@
gün sonu
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 225
+ 231
@@ -7451,7 +7491,7 @@
gerçek zamanlı
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 229
+ 235
@@ -7459,7 +7499,7 @@
Duck.ai’yi aç
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 202
+ 200
@@ -7479,7 +7519,7 @@
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 368
+ 377
@@ -7491,7 +7531,7 @@
apps/client/src/app/components/home-overview/home-overview.component.ts
- 55
+ 54
libs/ui/src/lib/holdings-table/holdings-table.component.html
@@ -7499,11 +7539,11 @@
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 368
+ 377
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 381
+ 390
@@ -7607,11 +7647,11 @@
Güvenlik belirteci
apps/client/src/app/components/admin-users/admin-users.component.ts
- 236
+ 235
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 170
+ 167
@@ -7619,7 +7659,7 @@
Bu kullanıcı için yeni bir güvenlik belirteci oluşturmak istediğinize emin misiniz?
apps/client/src/app/components/admin-users/admin-users.component.ts
- 241
+ 240
@@ -7627,7 +7667,7 @@
Find account, holding or page...
libs/ui/src/lib/assistant/assistant.component.ts
- 151
+ 115
@@ -7692,7 +7732,7 @@
( ) is already in use.
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 633
+ 649
@@ -7700,7 +7740,7 @@
Güncelleştirilirken bir hata oluştu ( ).
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 641
+ 657
@@ -7764,7 +7804,7 @@
birisi
apps/client/src/app/pages/public/public-page.component.ts
- 59
+ 61
@@ -7796,7 +7836,7 @@
Bu öğeyi silmek istediğinize emin misiniz?
libs/ui/src/lib/benchmark/benchmark.component.ts
- 144
+ 139
@@ -7837,7 +7877,7 @@
Demo kullanıcı hesabı senkronize edildi.
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 274
+ 277
@@ -7872,25 +7912,25 @@
150
-
+
Fee Ratio
- Ücret Oranı
+ Fee Ratio
apps/client/src/app/pages/i18n/i18n-page.html
152
-
- The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
- Ücretler, ilk yatırımınızın %${thresholdMax} kadarını aşıyor (${feeRatio}%)
+
+ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
+ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
apps/client/src/app/pages/i18n/i18n-page.html
154
-
- The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
- Ücretler, ilk yatırımınızın %${thresholdMax}’ını (${feeRatio}%) aşmaz
+
+ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
+ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
apps/client/src/app/pages/i18n/i18n-page.html
158
@@ -8051,7 +8091,7 @@
Current month
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 195
+ 201
@@ -8059,11 +8099,11 @@
yeni
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 67
+ 79
apps/client/src/app/pages/admin/admin-page.component.ts
- 56
+ 53
@@ -8220,7 +8260,7 @@
Do you really want to generate a new security token?
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 175
+ 172
@@ -8244,7 +8284,7 @@
Stocks
apps/client/src/app/components/markets/markets.component.ts
- 52
+ 51
apps/client/src/app/pages/features/features-page.html
@@ -8256,7 +8296,7 @@
Cryptocurrencies
apps/client/src/app/components/markets/markets.component.ts
- 53
+ 52
apps/client/src/app/pages/features/features-page.html
@@ -8276,7 +8316,7 @@
Manage Asset Profile
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 466
+ 471
@@ -8696,7 +8736,7 @@
Registration Date
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 26
+ 45
diff --git a/apps/client/src/locales/messages.uk.xlf b/apps/client/src/locales/messages.uk.xlf
index 2fc389030..12b5c2bc3 100644
--- a/apps/client/src/locales/messages.uk.xlf
+++ b/apps/client/src/locales/messages.uk.xlf
@@ -38,7 +38,7 @@
apps/client/src/app/components/header/header.component.ts
- 297
+ 298
apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html
@@ -419,7 +419,7 @@
Баланс готівки
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
- 148
+ 146
@@ -443,7 +443,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 309
+ 310
apps/client/src/app/components/admin-platform/admin-platform.component.html
@@ -455,7 +455,7 @@
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 46
+ 58
apps/client/src/app/components/admin-tag/admin-tag.component.html
@@ -471,7 +471,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 139
+ 135
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -515,7 +515,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 316
+ 317
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -527,7 +527,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 145
+ 141
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -547,15 +547,15 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 205
+ 201
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 208
+ 204
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 211
+ 207
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -603,11 +603,11 @@
apps/client/src/app/components/admin-platform/admin-platform.component.html
- 74
+ 78
apps/client/src/app/components/admin-tag/admin-tag.component.html
- 67
+ 71
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -635,11 +635,15 @@
apps/client/src/app/components/admin-platform/admin-platform.component.html
- 85
+ 89
apps/client/src/app/components/admin-tag/admin-tag.component.html
- 78
+ 82
+
+
+ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
+ 22
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -663,7 +667,7 @@
Ви дійсно хочете видалити цей обліковий запис?
libs/ui/src/lib/accounts-table/accounts-table.component.ts
- 150
+ 148
@@ -671,7 +675,7 @@
Тип
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 48
+ 57
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
@@ -691,7 +695,7 @@
Профіль активу
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 52
+ 61
@@ -699,11 +703,11 @@
Історичні ринкові дані
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 54
+ 63
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 448
+ 451
@@ -711,7 +715,7 @@
Знімок портфеля
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 56
+ 65
@@ -719,7 +723,7 @@
Джерело даних
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 82
+ 91
apps/client/src/app/components/admin-market-data/admin-market-data.html
@@ -731,7 +735,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 155
+ 151
libs/ui/src/lib/i18n.ts
@@ -743,7 +747,7 @@
Пріоритет
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 96
+ 105
@@ -751,7 +755,7 @@
Спроби
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 120
+ 129
@@ -759,7 +763,7 @@
Створено
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 134
+ 143
@@ -767,7 +771,7 @@
Завершено
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 143
+ 152
@@ -775,11 +779,11 @@
Статус
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 152
+ 161
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 92
+ 104
@@ -795,7 +799,7 @@
Видалити завдання
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 193
+ 202
@@ -803,7 +807,7 @@
Переглянути дані
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 208
+ 217
@@ -811,7 +815,7 @@
Переглянути трасування
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 216
+ 225
@@ -819,7 +823,7 @@
Виконати завдання
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 220
+ 229
@@ -827,7 +831,7 @@
Видалити завдання
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 224
+ 233
@@ -835,7 +839,7 @@
Порівняльні показники
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 126
+ 125
@@ -843,11 +847,11 @@
Валюти
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 131
+ 130
apps/client/src/app/pages/public/public-page.html
- 96
+ 95
@@ -855,7 +859,7 @@
ETF без країн
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 136
+ 135
@@ -863,7 +867,7 @@
ETF без секторів
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 141
+ 140
@@ -871,7 +875,7 @@
Фільтрувати за...
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 385
+ 383
@@ -927,7 +931,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html
- 44
+ 40
@@ -995,7 +999,7 @@
Помилка
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 697
+ 713
@@ -1003,7 +1007,7 @@
Поточна ринкова ціна
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 706
+ 722
@@ -1043,7 +1047,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 53
+ 72
@@ -1055,7 +1059,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 396
+ 399
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -1063,7 +1067,7 @@
apps/client/src/app/pages/public/public-page.html
- 114
+ 113
@@ -1075,7 +1079,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 407
+ 410
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -1087,7 +1091,7 @@
Зіставлення символів
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 384
+ 387
@@ -1103,7 +1107,7 @@
Конфігурація скребка
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 471
+ 474
@@ -1111,7 +1115,7 @@
Тест
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 568
+ 571
@@ -1119,11 +1123,11 @@
URL
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 419
+ 422
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 550
+ 553
apps/client/src/app/components/admin-platform/admin-platform.component.html
@@ -1139,7 +1143,7 @@
Asset profile has been saved
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 578
+ 594
@@ -1147,7 +1151,7 @@
Примітка
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 432
+ 435
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
@@ -1155,7 +1159,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 275
+ 271
@@ -1207,7 +1211,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 124
+ 120
@@ -1223,7 +1227,7 @@
Ви дійсно хочете видалити цей купон?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 193
+ 196
@@ -1231,7 +1235,7 @@
Ви дійсно хочете видалити це системне повідомлення?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 206
+ 209
@@ -1239,7 +1243,7 @@
Ви дійсно хочете очистити кеш?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 230
+ 233
@@ -1247,7 +1251,7 @@
Будь ласка, встановіть ваше системне повідомлення:
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 250
+ 253
@@ -1303,7 +1307,7 @@
Збір даних
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 587
+ 594
apps/client/src/app/components/admin-overview/admin-overview.html
@@ -1375,7 +1379,15 @@
Ви дійсно хочете видалити цю платформу?
apps/client/src/app/components/admin-platform/admin-platform.component.ts
- 106
+ 111
+
+
+
+ Explore
+ Explore
+
+ apps/client/src/app/pages/resources/overview/resources-overview.component.html
+ 11
@@ -1399,7 +1411,7 @@
Current year
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 199
+ 205
@@ -1423,7 +1435,7 @@
Дійсне до
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 74
+ 86
libs/ui/src/lib/membership-card/membership-card.component.html
@@ -1435,7 +1447,7 @@
з
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 135
+ 152
@@ -1443,7 +1455,7 @@
щоденних запитів
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 137
+ 154
@@ -1451,7 +1463,7 @@
Вилучити ключ API
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 161
+ 178
@@ -1459,7 +1471,7 @@
Встановити ключ API
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 171
+ 188
@@ -1467,7 +1479,7 @@
Платформи
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 195
+ 212
@@ -1475,7 +1487,7 @@
Теги
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 201
+ 218
libs/ui/src/lib/tags-selector/tags-selector.component.html
@@ -1491,7 +1503,7 @@
Ви дійсно хочете видалити ключ API?
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 127
+ 133
@@ -1499,7 +1511,7 @@
Будь ласка, введіть ваш ключ API Ghostfolio.
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 146
+ 152
@@ -1583,7 +1595,7 @@
Ви дійсно хочете видалити цей тег?
apps/client/src/app/components/admin-tag/admin-tag.component.ts
- 103
+ 108
@@ -1619,7 +1631,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 89
+ 108
@@ -1631,7 +1643,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 98
+ 117
@@ -1663,11 +1675,11 @@
Could not validate form
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 554
+ 570
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 557
+ 573
@@ -1715,7 +1727,7 @@
Порівняльний показник
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 376
+ 379
apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts
@@ -1791,15 +1803,15 @@
Упс! Неправильний Секретний Токен.
apps/client/src/app/components/header/header.component.ts
- 312
+ 313
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 154
+ 152
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 193
+ 191
@@ -1851,7 +1863,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 189
+ 185
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -1879,7 +1891,7 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 88
+ 92
@@ -1903,7 +1915,7 @@
Повідомити про збій даних
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 451
+ 456
@@ -1911,7 +1923,7 @@
Активний
apps/client/src/app/components/home-holdings/home-holdings.component.ts
- 64
+ 63
@@ -1919,7 +1931,7 @@
Закритий
apps/client/src/app/components/home-holdings/home-holdings.component.ts
- 65
+ 64
@@ -1943,7 +1955,7 @@
Керування діяльністю
apps/client/src/app/components/home-holdings/home-holdings.html
- 67
+ 64
@@ -1951,11 +1963,11 @@
Страх
apps/client/src/app/components/home-market/home-market.component.ts
- 42
+ 41
apps/client/src/app/components/markets/markets.component.ts
- 47
+ 46
libs/ui/src/lib/i18n.ts
@@ -1967,11 +1979,11 @@
Жадібність
apps/client/src/app/components/home-market/home-market.component.ts
- 43
+ 42
apps/client/src/app/components/markets/markets.component.ts
- 48
+ 47
libs/ui/src/lib/i18n.ts
@@ -2075,7 +2087,7 @@
Current week
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 191
+ 197
@@ -2095,7 +2107,7 @@
Загальна сума
apps/client/src/app/components/investment-chart/investment-chart.component.ts
- 143
+ 146
@@ -2187,7 +2199,7 @@
Абсолютний валовий дохід
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 73
+ 77
@@ -2195,7 +2207,7 @@
Абсолютний чистий прибуток
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 107
+ 111
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
@@ -2207,7 +2219,7 @@
Чистий прибуток
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 123
+ 127
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
@@ -2219,7 +2231,7 @@
Загальні активи
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 149
+ 153
@@ -2227,7 +2239,7 @@
Активи
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 226
+ 233
@@ -2235,7 +2247,7 @@
Купівельна спроможність
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 241
+ 248
@@ -2243,7 +2255,7 @@
Виключено з аналізу
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 267
+ 274
@@ -2251,7 +2263,7 @@
Зобов’язання
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 295
+ 302
apps/client/src/app/pages/features/features-page.html
@@ -2263,7 +2275,7 @@
Чиста вартість
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 317
+ 324
@@ -2271,7 +2283,7 @@
Річна доходність
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 331
+ 338
@@ -2279,7 +2291,7 @@
Зберегти
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 603
+ 610
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -2315,11 +2327,11 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 356
+ 352
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html
- 48
+ 49
@@ -2551,7 +2563,7 @@
libs/ui/src/lib/assistant/assistant.component.ts
- 363
+ 362
@@ -2559,11 +2571,11 @@
З початку року
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 199
+ 205
libs/ui/src/lib/assistant/assistant.component.ts
- 375
+ 374
@@ -2571,11 +2583,11 @@
1 рік
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 203
+ 209
libs/ui/src/lib/assistant/assistant.component.ts
- 385
+ 384
@@ -2583,11 +2595,11 @@
5 років
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 207
+ 213
libs/ui/src/lib/assistant/assistant.component.ts
- 409
+ 408
@@ -2603,11 +2615,11 @@
Максимум
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 211
+ 217
libs/ui/src/lib/assistant/assistant.component.ts
- 415
+ 414
@@ -2663,7 +2675,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 11
+ 30
@@ -2675,7 +2687,7 @@
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 260
+ 257
@@ -2723,7 +2735,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 196
+ 195
@@ -2823,7 +2835,7 @@
Автоматичний
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 70
+ 69
apps/client/src/app/components/user-account-settings/user-account-settings.html
@@ -2835,7 +2847,7 @@
Ви дійсно хочете закрити ваш обліковий запис Ghostfolio?
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 208
+ 205
@@ -2843,7 +2855,7 @@
Ви дійсно хочете вилучити цей спосіб входу?
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 282
+ 279
@@ -2851,7 +2863,7 @@
Include in
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 374
+ 377
@@ -2859,7 +2871,7 @@
Упс! Виникла помилка під час налаштування біометричної автентифікації.
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 336
+ 333
@@ -2907,7 +2919,7 @@
Локалізація
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 509
+ 512
apps/client/src/app/components/user-account-settings/user-account-settings.html
@@ -3051,7 +3063,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 195
+ 194
@@ -3071,7 +3083,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 193
+ 192
@@ -3207,11 +3219,11 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 375
+ 381
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 66
+ 85
apps/client/src/app/pages/accounts/accounts-page.html
@@ -3311,7 +3323,7 @@
Ринкові дані
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 398
+ 403
libs/common/src/lib/routes/routes.ts
@@ -3345,6 +3357,10 @@
Overview
Огляд
+
+ apps/client/src/app/components/admin-jobs/admin-jobs.html
+ 7
+
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
114
@@ -3363,11 +3379,11 @@
apps/client/src/app/pages/admin/admin-page.component.ts
- 48
+ 45
apps/client/src/app/pages/resources/resources-page.component.ts
- 30
+ 29
libs/common/src/lib/routes/routes.ts
@@ -3499,11 +3515,11 @@
Could not parse scraper configuration
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 509
+ 525
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 512
+ 528
@@ -3519,7 +3535,7 @@
Оскільки ви вже ввійшли, ви не можете отримати доступ до демонстраційного обліковий запис.
apps/client/src/app/pages/demo/demo-page.component.ts
- 35
+ 32
@@ -3547,7 +3563,7 @@
Загальні
apps/client/src/app/pages/faq/faq-page.component.ts
- 49
+ 41
@@ -3555,7 +3571,7 @@
Хмара
apps/client/src/app/pages/faq/faq-page.component.ts
- 54
+ 46
libs/common/src/lib/routes/routes.ts
@@ -3567,7 +3583,7 @@
Самохостинг
apps/client/src/app/pages/faq/faq-page.component.ts
- 60
+ 52
libs/common/src/lib/routes/routes.ts
@@ -3716,7 +3732,7 @@
apps/client/src/app/pages/public/public-page.html
- 242
+ 241
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
@@ -3768,7 +3784,7 @@
Ринки
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 378
+ 381
apps/client/src/app/components/footer/footer.component.html
@@ -3792,7 +3808,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 40
+ 39
libs/common/src/lib/routes/routes.ts
@@ -4240,7 +4256,7 @@
Job ID
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 34
+ 43
@@ -4276,7 +4292,7 @@
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
- 115
+ 113
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
@@ -4296,11 +4312,11 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 342
+ 348
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 75
+ 94
apps/client/src/app/pages/portfolio/activities/activities-page.html
@@ -4380,7 +4396,7 @@
Оновити баланс готівки
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 112
+ 108
@@ -4388,7 +4404,7 @@
Дата
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 161
+ 157
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -4408,7 +4424,7 @@
Ціна за одиницю
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 214
+ 210
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -4436,7 +4452,7 @@
Імпорт дивідендів
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 137
+ 136
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -4452,7 +4468,7 @@
Імпортуються дані...
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 175
+ 174
@@ -4460,7 +4476,7 @@
Імпорт завершено
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 185
+ 184
@@ -4476,7 +4492,7 @@
Перевірка даних...
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 299
+ 293
@@ -4572,7 +4588,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html
- 71
+ 67
@@ -4664,7 +4680,7 @@
apps/client/src/app/pages/public/public-page.html
- 151
+ 150
@@ -4688,7 +4704,7 @@
apps/client/src/app/pages/public/public-page.html
- 168
+ 167
@@ -4696,7 +4712,7 @@
Latest activities
apps/client/src/app/pages/public/public-page.html
- 211
+ 210
@@ -4708,7 +4724,7 @@
apps/client/src/app/pages/public/public-page.html
- 177
+ 176
@@ -4720,7 +4736,7 @@
apps/client/src/app/pages/public/public-page.html
- 186
+ 185
@@ -4796,7 +4812,7 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 365
+ 372
apps/client/src/app/pages/features/features-page.html
@@ -4804,11 +4820,11 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 202
+ 198
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 76
+ 75
libs/ui/src/lib/i18n.ts
@@ -4828,11 +4844,11 @@
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 81
+ 80
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 97
+ 96
apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
@@ -4852,7 +4868,7 @@
Щомісячно
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 91
+ 90
@@ -4860,7 +4876,7 @@
Щорічно
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 92
+ 91
@@ -4868,7 +4884,7 @@
Close Holding
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 442
+ 447
@@ -5204,11 +5220,11 @@
Could not save asset profile
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 588
+ 604
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 591
+ 607
@@ -5235,6 +5251,14 @@
42
+
+ has been copied to the clipboard
+ has been copied to the clipboard
+
+ libs/ui/src/lib/value/value.component.ts
+ 180
+
+
From the beginning
З початку
@@ -5248,7 +5272,7 @@
Континенти
apps/client/src/app/pages/public/public-page.html
- 132
+ 131
@@ -5256,7 +5280,7 @@
Чи хотіли б ви удосконалити вашу особисту інвестиційну стратегію ?
apps/client/src/app/pages/public/public-page.html
- 234
+ 233
@@ -5272,7 +5296,7 @@
Ghostfolio надає можливість вам стежити за вашим багатством.
apps/client/src/app/pages/public/public-page.html
- 238
+ 237
@@ -5302,6 +5326,10 @@
apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html
88
+
+ libs/ui/src/lib/value/value.component.html
+ 18
+
Glossary
@@ -5312,7 +5340,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 45
+ 44
libs/common/src/lib/routes/routes.ts
@@ -5328,7 +5356,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 34
+ 33
libs/common/src/lib/routes/routes.ts
@@ -6003,7 +6031,7 @@
Членство
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 48
+ 67
libs/common/src/lib/routes/routes.ts
@@ -6071,7 +6099,7 @@
Ви дійсно хочете видалити цей рахунок?
libs/ui/src/lib/account-balances/account-balances.component.ts
- 120
+ 113
@@ -6135,7 +6163,7 @@
Ви дійсно хочете видалити ці дії?
libs/ui/src/lib/activities-table/activities-table.component.ts
- 278
+ 282
@@ -6143,7 +6171,7 @@
Ви дійсно хочете видалити цю активність?
libs/ui/src/lib/activities-table/activities-table.component.ts
- 288
+ 292
@@ -6151,7 +6179,7 @@
Тиждень до дати
libs/ui/src/lib/assistant/assistant.component.ts
- 367
+ 366
@@ -6159,11 +6187,11 @@
WTD
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 191
+ 197
libs/ui/src/lib/assistant/assistant.component.ts
- 367
+ 366
@@ -6171,7 +6199,7 @@
Місяць до дати
libs/ui/src/lib/assistant/assistant.component.ts
- 371
+ 370
@@ -6179,11 +6207,11 @@
MTD
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 195
+ 201
libs/ui/src/lib/assistant/assistant.component.ts
- 371
+ 370
@@ -6191,7 +6219,7 @@
Рік до дати
libs/ui/src/lib/assistant/assistant.component.ts
- 375
+ 374
@@ -6199,7 +6227,7 @@
рік
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 203
+ 209
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
@@ -6211,7 +6239,7 @@
libs/ui/src/lib/assistant/assistant.component.ts
- 385
+ 384
@@ -6219,11 +6247,11 @@
роки
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 207
+ 213
libs/ui/src/lib/assistant/assistant.component.ts
- 409
+ 408
@@ -6231,7 +6259,7 @@
Профілі активів
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 106
+ 123
libs/ui/src/lib/assistant/assistant.html
@@ -6371,7 +6399,7 @@
Депозит
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 377
+ 404
@@ -6383,11 +6411,11 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 352
+ 359
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 387
+ 414
libs/ui/src/lib/i18n.ts
@@ -6399,7 +6427,7 @@
Заощадження
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 397
+ 424
@@ -6415,7 +6443,7 @@
Упс! Не вдалося отримати історичні дані.
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts
- 262
+ 284
@@ -6443,7 +6471,7 @@
Показати все
libs/ui/src/lib/holdings-table/holdings-table.component.html
- 216
+ 212
@@ -6487,7 +6515,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 326
+ 327
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -6495,7 +6523,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 290
+ 286
libs/ui/src/lib/i18n.ts
@@ -6519,7 +6547,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 342
+ 343
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -6527,7 +6555,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 309
+ 305
libs/ui/src/lib/i18n.ts
@@ -6551,7 +6579,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 592
+ 599
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -6583,7 +6611,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 345
+ 341
apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html
@@ -6591,7 +6619,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html
- 46
+ 47
libs/ui/src/lib/i18n.ts
@@ -6611,7 +6639,7 @@
Закрити
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 594
+ 601
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -6637,13 +6665,17 @@
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
68
+
+ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
+ 127
+
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
107
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 347
+ 343
libs/ui/src/lib/i18n.ts
@@ -6679,7 +6711,7 @@
Резервний фонд
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 164
+ 168
apps/client/src/app/pages/features/features-page.html
@@ -6747,7 +6779,7 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 437
+ 451
@@ -6766,6 +6798,14 @@
27
+
+ No Activities
+ No Activities
+
+ apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
+ 145
+
+
Retirement Provision
Пенсійне накопичення
@@ -6795,7 +6835,7 @@
Символ
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 68
+ 77
apps/client/src/app/components/admin-market-data/admin-market-data.html
@@ -6811,7 +6851,7 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 315
+ 318
libs/ui/src/lib/i18n.ts
@@ -6863,7 +6903,7 @@
Role
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 14
+ 33
@@ -6899,7 +6939,7 @@
Комісія
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 262
+ 258
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -6943,7 +6983,7 @@
Готівка
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 212
+ 219
libs/ui/src/lib/i18n.ts
@@ -6999,7 +7039,7 @@
Authentication
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 35
+ 54
@@ -7339,7 +7379,7 @@
apps/client/src/app/pages/public/public-page.html
- 196
+ 195
libs/ui/src/lib/benchmark/benchmark.component.html
@@ -7347,11 +7387,11 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 439
+ 453
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 452
+ 467
libs/ui/src/lib/top-holdings/top-holdings.component.html
@@ -7387,7 +7427,7 @@
Запит AI скопійовано в буфер обміну
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 201
+ 199
@@ -7395,7 +7435,7 @@
Lazy
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 225
+ 231
@@ -7403,7 +7443,7 @@
Instant
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 229
+ 235
@@ -7411,7 +7451,7 @@
Default Market Price
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 481
+ 484
@@ -7419,7 +7459,7 @@
Mode
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 518
+ 521
@@ -7427,7 +7467,7 @@
Selector
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 534
+ 537
@@ -7435,7 +7475,7 @@
HTTP Request Headers
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 494
+ 497
@@ -7443,7 +7483,7 @@
end of day
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 225
+ 231
@@ -7451,7 +7491,7 @@
real-time
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 229
+ 235
@@ -7459,7 +7499,7 @@
Open Duck.ai
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 202
+ 200
@@ -7479,7 +7519,7 @@
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 368
+ 377
@@ -7491,7 +7531,7 @@
apps/client/src/app/components/home-overview/home-overview.component.ts
- 55
+ 54
libs/ui/src/lib/holdings-table/holdings-table.component.html
@@ -7499,11 +7539,11 @@
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 368
+ 377
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 381
+ 390
@@ -7607,11 +7647,11 @@
Security token
apps/client/src/app/components/admin-users/admin-users.component.ts
- 236
+ 235
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 170
+ 167
@@ -7619,7 +7659,7 @@
Do you really want to generate a new security token for this user?
apps/client/src/app/components/admin-users/admin-users.component.ts
- 241
+ 240
@@ -7627,7 +7667,7 @@
Find account, holding or page...
libs/ui/src/lib/assistant/assistant.component.ts
- 151
+ 115
@@ -7692,7 +7732,7 @@
( ) is already in use.
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 633
+ 649
@@ -7700,7 +7740,7 @@
An error occurred while updating to ( ).
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 641
+ 657
@@ -7764,7 +7804,7 @@
someone
apps/client/src/app/pages/public/public-page.component.ts
- 59
+ 61
@@ -7796,7 +7836,7 @@
Do you really want to delete this item?
libs/ui/src/lib/benchmark/benchmark.component.ts
- 144
+ 139
@@ -7837,7 +7877,7 @@
Demo user account has been synced.
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 274
+ 277
@@ -7872,7 +7912,7 @@
150
-
+
Fee Ratio
Fee Ratio
@@ -7880,17 +7920,17 @@
152
-
- The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
- The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
+
+ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
+ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
apps/client/src/app/pages/i18n/i18n-page.html
154
-
- The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
- The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
+
+ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
+ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
apps/client/src/app/pages/i18n/i18n-page.html
158
@@ -8051,7 +8091,7 @@
Current month
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 195
+ 201
@@ -8059,11 +8099,11 @@
new
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 67
+ 79
apps/client/src/app/pages/admin/admin-page.component.ts
- 56
+ 53
@@ -8220,7 +8260,7 @@
Do you really want to generate a new security token?
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 175
+ 172
@@ -8244,7 +8284,7 @@
Stocks
apps/client/src/app/components/markets/markets.component.ts
- 52
+ 51
apps/client/src/app/pages/features/features-page.html
@@ -8256,7 +8296,7 @@
Cryptocurrencies
apps/client/src/app/components/markets/markets.component.ts
- 53
+ 52
apps/client/src/app/pages/features/features-page.html
@@ -8276,7 +8316,7 @@
Manage Asset Profile
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 466
+ 471
@@ -8696,7 +8736,7 @@
Registration Date
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 26
+ 45
diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf
index a6907698d..fa9e6b874 100644
--- a/apps/client/src/locales/messages.xlf
+++ b/apps/client/src/locales/messages.xlf
@@ -235,7 +235,7 @@
Type
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 48
+ 57
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
@@ -312,7 +312,7 @@
Cash Balances
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
- 148
+ 146
@@ -334,7 +334,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 309
+ 310
apps/client/src/app/components/admin-platform/admin-platform.component.html
@@ -346,7 +346,7 @@
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 46
+ 58
apps/client/src/app/components/admin-tag/admin-tag.component.html
@@ -362,7 +362,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 139
+ 135
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -404,7 +404,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 316
+ 317
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -416,7 +416,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 145
+ 141
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -435,15 +435,15 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 205
+ 201
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 208
+ 204
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 211
+ 207
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -490,11 +490,11 @@
apps/client/src/app/components/admin-platform/admin-platform.component.html
- 74
+ 78
apps/client/src/app/components/admin-tag/admin-tag.component.html
- 67
+ 71
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -521,11 +521,15 @@
apps/client/src/app/components/admin-platform/admin-platform.component.html
- 85
+ 89
apps/client/src/app/components/admin-tag/admin-tag.component.html
- 78
+ 82
+
+
+ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
+ 22
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -548,32 +552,32 @@
Do you really want to delete this account?
libs/ui/src/lib/accounts-table/accounts-table.component.ts
- 150
+ 148
Asset Profile
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 52
+ 61
Historical Market Data
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 54
+ 63
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 448
+ 451
Data Source
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 82
+ 91
apps/client/src/app/components/admin-market-data/admin-market-data.html
@@ -585,7 +589,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 155
+ 151
libs/ui/src/lib/i18n.ts
@@ -596,32 +600,32 @@
Attempts
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 120
+ 129
Created
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 134
+ 143
Finished
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 143
+ 152
Status
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 152
+ 161
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 92
+ 104
@@ -635,28 +639,28 @@
Delete Jobs
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 193
+ 202
View Data
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 208
+ 217
View Stacktrace
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 216
+ 225
Delete Job
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 224
+ 233
@@ -670,7 +674,7 @@
Date
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 161
+ 157
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -704,25 +708,25 @@
Currencies
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 131
+ 130
apps/client/src/app/pages/public/public-page.html
- 96
+ 95
ETFs without Countries
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 136
+ 135
ETFs without Sectors
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 141
+ 140
@@ -736,7 +740,7 @@
Filter by...
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 385
+ 383
@@ -773,7 +777,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html
- 44
+ 40
@@ -819,7 +823,7 @@
Oops! Could not parse historical data.
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts
- 262
+ 284
@@ -848,7 +852,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html
- 71
+ 67
@@ -878,7 +882,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 53
+ 72
@@ -889,7 +893,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 396
+ 399
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -897,7 +901,7 @@
apps/client/src/app/pages/public/public-page.html
- 114
+ 113
@@ -908,7 +912,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 407
+ 410
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -919,7 +923,7 @@
Symbol Mapping
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 384
+ 387
@@ -933,14 +937,14 @@
Scraper Configuration
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 471
+ 474
Note
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 432
+ 435
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
@@ -948,7 +952,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 275
+ 271
@@ -988,35 +992,35 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 124
+ 120
Do you really want to delete this coupon?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 193
+ 196
Do you really want to delete this system message?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 206
+ 209
Do you really want to flush the cache?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 230
+ 233
Please set your system message:
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 250
+ 253
@@ -1125,11 +1129,11 @@
Url
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 419
+ 422
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 550
+ 553
apps/client/src/app/components/admin-platform/admin-platform.component.html
@@ -1144,14 +1148,21 @@
Asset profile has been saved
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 578
+ 594
Do you really want to delete this platform?
apps/client/src/app/components/admin-platform/admin-platform.component.ts
- 106
+ 111
+
+
+
+ Explore
+
+ apps/client/src/app/pages/resources/overview/resources-overview.component.html
+ 11
@@ -1172,7 +1183,7 @@
Current year
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 199
+ 205
@@ -1186,14 +1197,14 @@
Platforms
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 195
+ 212
Tags
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 201
+ 218
libs/ui/src/lib/tags-selector/tags-selector.component.html
@@ -1215,7 +1226,7 @@
Do you really want to delete this tag?
apps/client/src/app/components/admin-tag/admin-tag.component.ts
- 103
+ 108
@@ -1269,7 +1280,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 89
+ 108
@@ -1297,11 +1308,11 @@
Could not validate form
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 554
+ 570
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 557
+ 573
@@ -1345,7 +1356,7 @@
Benchmark
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 376
+ 379
apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts
@@ -1378,7 +1389,7 @@
apps/client/src/app/components/header/header.component.ts
- 297
+ 298
apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html
@@ -1397,33 +1408,33 @@
Oops! Incorrect Security Token.
apps/client/src/app/components/header/header.component.ts
- 312
+ 313
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 154
+ 152
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 193
+ 191
Manage Activities
apps/client/src/app/components/home-holdings/home-holdings.html
- 67
+ 64
Fear
apps/client/src/app/components/home-market/home-market.component.ts
- 42
+ 41
apps/client/src/app/components/markets/markets.component.ts
- 47
+ 46
libs/ui/src/lib/i18n.ts
@@ -1434,11 +1445,11 @@
Greed
apps/client/src/app/components/home-market/home-market.component.ts
- 43
+ 42
apps/client/src/app/components/markets/markets.component.ts
- 48
+ 47
libs/ui/src/lib/i18n.ts
@@ -1530,7 +1541,7 @@
Current week
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 191
+ 197
@@ -1548,7 +1559,7 @@
Total Amount
apps/client/src/app/components/investment-chart/investment-chart.component.ts
- 143
+ 146
@@ -1653,7 +1664,7 @@
Absolute Gross Performance
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 73
+ 77
@@ -1664,14 +1675,14 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 88
+ 92
Absolute Net Performance
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 107
+ 111
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
@@ -1682,7 +1693,7 @@
Net Performance
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 123
+ 127
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
@@ -1693,35 +1704,35 @@
Total Assets
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 149
+ 153
Assets
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 226
+ 233
Buying Power
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 241
+ 248
Excluded from Analysis
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 267
+ 274
Liabilities
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 295
+ 302
apps/client/src/app/pages/features/features-page.html
@@ -1732,14 +1743,14 @@
Net Worth
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 317
+ 324
Annualized Performance
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 331
+ 338
@@ -1771,7 +1782,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 189
+ 185
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -1786,7 +1797,7 @@
Report Data Glitch
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 451
+ 456
@@ -1954,40 +1965,40 @@
libs/ui/src/lib/assistant/assistant.component.ts
- 363
+ 362
YTD
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 199
+ 205
libs/ui/src/lib/assistant/assistant.component.ts
- 375
+ 374
1Y
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 203
+ 209
libs/ui/src/lib/assistant/assistant.component.ts
- 385
+ 384
5Y
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 207
+ 213
libs/ui/src/lib/assistant/assistant.component.ts
- 409
+ 408
@@ -2001,11 +2012,11 @@
Max
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 211
+ 217
libs/ui/src/lib/assistant/assistant.component.ts
- 415
+ 414
@@ -2094,7 +2105,7 @@
Auto
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 70
+ 69
apps/client/src/app/components/user-account-settings/user-account-settings.html
@@ -2105,7 +2116,7 @@
Do you really want to remove this sign in method?
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 282
+ 279
@@ -2140,7 +2151,7 @@
Locale
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 509
+ 512
apps/client/src/app/components/user-account-settings/user-account-settings.html
@@ -2240,7 +2251,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 11
+ 30
@@ -2269,7 +2280,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 195
+ 194
@@ -2280,7 +2291,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 193
+ 192
@@ -2295,7 +2306,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 196
+ 195
@@ -2414,11 +2425,11 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 375
+ 381
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 66
+ 85
apps/client/src/app/pages/accounts/accounts-page.html
@@ -2501,7 +2512,7 @@
Market Data
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 398
+ 403
libs/common/src/lib/routes/routes.ts
@@ -2532,6 +2543,10 @@
Overview
+
+ apps/client/src/app/components/admin-jobs/admin-jobs.html
+ 7
+
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
114
@@ -2550,11 +2565,11 @@
apps/client/src/app/pages/admin/admin-page.component.ts
- 48
+ 45
apps/client/src/app/pages/resources/resources-page.component.ts
- 30
+ 29
libs/common/src/lib/routes/routes.ts
@@ -2676,11 +2691,11 @@
Could not parse scraper configuration
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 509
+ 525
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 512
+ 528
@@ -2694,7 +2709,7 @@
As you are already logged in, you cannot access the demo account.
apps/client/src/app/pages/demo/demo-page.component.ts
- 35
+ 32
@@ -2850,7 +2865,7 @@
apps/client/src/app/pages/public/public-page.html
- 242
+ 241
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
@@ -2899,7 +2914,7 @@
Markets
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 378
+ 381
apps/client/src/app/components/footer/footer.component.html
@@ -2923,7 +2938,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 40
+ 39
libs/common/src/lib/routes/routes.ts
@@ -3312,7 +3327,7 @@
Job ID
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 34
+ 43
@@ -3344,7 +3359,7 @@
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
- 115
+ 113
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
@@ -3364,11 +3379,11 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 342
+ 348
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 75
+ 94
apps/client/src/app/pages/portfolio/activities/activities-page.html
@@ -3387,7 +3402,7 @@
Do you really want to delete these activities?
libs/ui/src/lib/activities-table/activities-table.component.ts
- 278
+ 282
@@ -3447,14 +3462,14 @@
Update Cash Balance
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 112
+ 108
Unit Price
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 214
+ 210
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -3480,7 +3495,7 @@
Import Dividends
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 137
+ 136
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -3495,14 +3510,14 @@
Importing data...
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 175
+ 174
Import has been completed
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 185
+ 184
@@ -3516,7 +3531,7 @@
Validating data...
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 299
+ 293
@@ -3669,7 +3684,7 @@
apps/client/src/app/pages/public/public-page.html
- 151
+ 150
@@ -3691,14 +3706,14 @@
apps/client/src/app/pages/public/public-page.html
- 168
+ 167
Latest activities
apps/client/src/app/pages/public/public-page.html
- 211
+ 210
@@ -3709,7 +3724,7 @@
apps/client/src/app/pages/public/public-page.html
- 177
+ 176
@@ -3720,7 +3735,7 @@
apps/client/src/app/pages/public/public-page.html
- 186
+ 185
@@ -3774,7 +3789,7 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 365
+ 372
apps/client/src/app/pages/features/features-page.html
@@ -3782,11 +3797,11 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 202
+ 198
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 76
+ 75
libs/ui/src/lib/i18n.ts
@@ -3804,21 +3819,21 @@
Deposit
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 377
+ 404
Monthly
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 91
+ 90
Yearly
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 92
+ 91
@@ -4070,11 +4085,11 @@
Could not save asset profile
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 588
+ 604
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 591
+ 607
@@ -4095,7 +4110,7 @@
Continents
apps/client/src/app/pages/public/public-page.html
- 132
+ 131
@@ -4109,7 +4124,7 @@
Ghostfolio empowers you to keep track of your wealth.
apps/client/src/app/pages/public/public-page.html
- 238
+ 237
@@ -4136,6 +4151,10 @@
apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html
88
+
+ libs/ui/src/lib/value/value.component.html
+ 18
+
Personal Finance Tools
@@ -4448,7 +4467,7 @@
Membership
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 48
+ 67
libs/common/src/lib/routes/routes.ts
@@ -4509,7 +4528,7 @@
Do you really want to delete this account balance?
libs/ui/src/lib/account-balances/account-balances.component.ts
- 120
+ 113
@@ -4559,14 +4578,14 @@
Do you really want to delete this activity?
libs/ui/src/lib/activities-table/activities-table.component.ts
- 288
+ 292
Asset Profiles
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 106
+ 123
libs/ui/src/lib/assistant/assistant.html
@@ -4665,11 +4684,11 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 352
+ 359
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 387
+ 414
libs/ui/src/lib/i18n.ts
@@ -4680,7 +4699,7 @@
Savings
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 397
+ 424
@@ -4706,7 +4725,7 @@
Show all
libs/ui/src/lib/holdings-table/holdings-table.component.html
- 216
+ 212
@@ -4747,7 +4766,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 326
+ 327
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -4755,7 +4774,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 290
+ 286
libs/ui/src/lib/i18n.ts
@@ -4778,7 +4797,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 342
+ 343
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -4786,7 +4805,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 309
+ 305
libs/ui/src/lib/i18n.ts
@@ -4825,7 +4844,7 @@
Emergency Fund
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 164
+ 168
apps/client/src/app/pages/features/features-page.html
@@ -4893,7 +4912,7 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 437
+ 451
@@ -4903,6 +4922,13 @@
27
+
+ No Activities
+
+ apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
+ 145
+
+
Retirement Provision
@@ -4921,7 +4947,7 @@
Symbol
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 68
+ 77
apps/client/src/app/components/admin-market-data/admin-market-data.html
@@ -4937,7 +4963,7 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 315
+ 318
libs/ui/src/lib/i18n.ts
@@ -5002,7 +5028,7 @@
Fee
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 262
+ 258
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -5042,7 +5068,7 @@
Cash
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 212
+ 219
libs/ui/src/lib/i18n.ts
@@ -5085,7 +5111,7 @@
Authentication
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 35
+ 54
@@ -5211,7 +5237,7 @@
Valid until
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 74
+ 86
libs/ui/src/lib/membership-card/membership-card.component.html
@@ -5233,7 +5259,7 @@
apps/client/src/app/pages/public/public-page.html
- 196
+ 195
libs/ui/src/lib/benchmark/benchmark.component.html
@@ -5241,11 +5267,11 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 439
+ 453
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 452
+ 467
libs/ui/src/lib/top-holdings/top-holdings.component.html
@@ -5270,14 +5296,14 @@
The current market price is
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 706
+ 722
Test
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 568
+ 571
@@ -5348,7 +5374,7 @@
Close Holding
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 442
+ 447
@@ -5370,11 +5396,11 @@
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 81
+ 80
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 97
+ 96
apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
@@ -5406,43 +5432,43 @@
Year to date
libs/ui/src/lib/assistant/assistant.component.ts
- 375
+ 374
Week to date
libs/ui/src/lib/assistant/assistant.component.ts
- 367
+ 366
Month to date
libs/ui/src/lib/assistant/assistant.component.ts
- 371
+ 370
MTD
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 195
+ 201
libs/ui/src/lib/assistant/assistant.component.ts
- 371
+ 370
WTD
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 191
+ 197
libs/ui/src/lib/assistant/assistant.component.ts
- 367
+ 366
@@ -5474,7 +5500,7 @@
year
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 203
+ 209
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
@@ -5486,18 +5512,18 @@
libs/ui/src/lib/assistant/assistant.component.ts
- 385
+ 384
years
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 207
+ 213
libs/ui/src/lib/assistant/assistant.component.ts
- 409
+ 408
@@ -5523,7 +5549,7 @@
Self-Hosting
apps/client/src/app/pages/faq/faq-page.component.ts
- 60
+ 52
libs/common/src/lib/routes/routes.ts
@@ -5534,7 +5560,7 @@
Data Gathering
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 587
+ 594
apps/client/src/app/components/admin-overview/admin-overview.html
@@ -5545,14 +5571,14 @@
General
apps/client/src/app/pages/faq/faq-page.component.ts
- 49
+ 41
Cloud
apps/client/src/app/pages/faq/faq-page.component.ts
- 54
+ 46
libs/common/src/lib/routes/routes.ts
@@ -5577,14 +5603,14 @@
Closed
apps/client/src/app/components/home-holdings/home-holdings.component.ts
- 65
+ 64
Active
apps/client/src/app/components/home-holdings/home-holdings.component.ts
- 64
+ 63
@@ -5612,7 +5638,7 @@
Execute Job
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 220
+ 229
@@ -5626,7 +5652,7 @@
Priority
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 96
+ 105
@@ -5675,7 +5701,7 @@
Do you really want to close your Ghostfolio account?
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 208
+ 205
@@ -5710,14 +5736,14 @@
Include in
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 374
+ 377
Oops! There was an error setting up biometric authentication.
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 336
+ 333
@@ -5752,7 +5778,7 @@
Benchmarks
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 126
+ 125
@@ -5773,7 +5799,7 @@
Would you like to refine your personal investment strategy ?
apps/client/src/app/pages/public/public-page.html
- 234
+ 233
@@ -6071,7 +6097,7 @@
Error
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 697
+ 713
@@ -6082,7 +6108,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 592
+ 599
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -6114,7 +6140,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 345
+ 341
apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html
@@ -6122,7 +6148,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html
- 46
+ 47
libs/ui/src/lib/i18n.ts
@@ -6133,7 +6159,7 @@
Role
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 14
+ 33
@@ -6161,7 +6187,7 @@
Close
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 594
+ 601
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -6187,13 +6213,17 @@
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
68
+
+ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
+ 127
+
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
107
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 347
+ 343
libs/ui/src/lib/i18n.ts
@@ -6246,7 +6276,7 @@
Portfolio Snapshot
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 56
+ 65
@@ -6298,6 +6328,13 @@
42
+
+ has been copied to the clipboard
+
+ libs/ui/src/lib/value/value.component.ts
+ 180
+
+
offers a free plan
@@ -6439,7 +6476,7 @@
Set API key
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 171
+ 188
@@ -6471,7 +6508,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 45
+ 44
libs/common/src/lib/routes/routes.ts
@@ -6498,7 +6535,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 34
+ 33
libs/common/src/lib/routes/routes.ts
@@ -6542,28 +6579,28 @@
of
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 135
+ 152
Do you really want to delete the API key?
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 127
+ 133
Remove API key
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 161
+ 178
daily requests
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 137
+ 154
@@ -6588,7 +6625,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 98
+ 117
@@ -6637,7 +6674,7 @@
Save
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 603
+ 610
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -6673,11 +6710,11 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 356
+ 352
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html
- 48
+ 49
@@ -6702,14 +6739,14 @@
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 260
+ 257
Please enter your Ghostfolio API key.
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 146
+ 152
@@ -6723,7 +6760,7 @@
AI prompt has been copied to the clipboard
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 201
+ 199
@@ -6737,63 +6774,63 @@
Mode
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 518
+ 521
Default Market Price
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 481
+ 484
Selector
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 534
+ 537
Instant
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 229
+ 235
Lazy
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 225
+ 231
HTTP Request Headers
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 494
+ 497
real-time
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 229
+ 235
end of day
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 225
+ 231
Open Duck.ai
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 202
+ 200
@@ -6811,7 +6848,7 @@
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 368
+ 377
@@ -6822,7 +6859,7 @@
apps/client/src/app/components/home-overview/home-overview.component.ts
- 55
+ 54
libs/ui/src/lib/holdings-table/holdings-table.component.html
@@ -6830,11 +6867,11 @@
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 368
+ 377
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 381
+ 390
@@ -6925,25 +6962,25 @@
Do you really want to generate a new security token for this user?
apps/client/src/app/components/admin-users/admin-users.component.ts
- 241
+ 240
Find account, holding or page...
libs/ui/src/lib/assistant/assistant.component.ts
- 151
+ 115
Security token
apps/client/src/app/components/admin-users/admin-users.component.ts
- 236
+ 235
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 170
+ 167
@@ -7001,14 +7038,14 @@
( ) is already in use.
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 633
+ 649
An error occurred while updating to ( ).
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 641
+ 657
@@ -7043,7 +7080,7 @@
someone
apps/client/src/app/pages/public/public-page.component.ts
- 59
+ 61
@@ -7072,7 +7109,7 @@
Do you really want to delete this item?
libs/ui/src/lib/benchmark/benchmark.component.ts
- 144
+ 139
@@ -7116,7 +7153,7 @@
Demo user account has been synced.
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 274
+ 277
@@ -7140,22 +7177,22 @@
150
-
+
Fee Ratio
apps/client/src/app/pages/i18n/i18n-page.html
152
-
- The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
+
+ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
apps/client/src/app/pages/i18n/i18n-page.html
154
-
- The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
+
+ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
apps/client/src/app/pages/i18n/i18n-page.html
158
@@ -7300,18 +7337,18 @@
Current month
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 195
+ 201
new
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 67
+ 79
apps/client/src/app/pages/admin/admin-page.component.ts
- 56
+ 53
@@ -7463,14 +7500,14 @@
Do you really want to generate a new security token?
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 175
+ 172
Cryptocurrencies
apps/client/src/app/components/markets/markets.component.ts
- 53
+ 52
apps/client/src/app/pages/features/features-page.html
@@ -7481,7 +7518,7 @@
Stocks
apps/client/src/app/components/markets/markets.component.ts
- 52
+ 51
apps/client/src/app/pages/features/features-page.html
@@ -7499,7 +7536,7 @@
Manage Asset Profile
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 466
+ 471
@@ -7868,7 +7905,7 @@
Registration Date
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 26
+ 45
diff --git a/apps/client/src/locales/messages.zh.xlf b/apps/client/src/locales/messages.zh.xlf
index 7ec9d85a0..78c9b717d 100644
--- a/apps/client/src/locales/messages.zh.xlf
+++ b/apps/client/src/locales/messages.zh.xlf
@@ -252,7 +252,7 @@
类型
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 48
+ 57
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
@@ -336,7 +336,7 @@
现金余额
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
- 148
+ 146
@@ -360,7 +360,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 309
+ 310
apps/client/src/app/components/admin-platform/admin-platform.component.html
@@ -372,7 +372,7 @@
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 46
+ 58
apps/client/src/app/components/admin-tag/admin-tag.component.html
@@ -388,7 +388,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 139
+ 135
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -432,7 +432,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 316
+ 317
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -444,7 +444,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 145
+ 141
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -464,15 +464,15 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 205
+ 201
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 208
+ 204
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 211
+ 207
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -520,11 +520,11 @@
apps/client/src/app/components/admin-platform/admin-platform.component.html
- 74
+ 78
apps/client/src/app/components/admin-tag/admin-tag.component.html
- 67
+ 71
libs/ui/src/lib/accounts-table/accounts-table.component.html
@@ -552,11 +552,15 @@
apps/client/src/app/components/admin-platform/admin-platform.component.html
- 85
+ 89
apps/client/src/app/components/admin-tag/admin-tag.component.html
- 78
+ 82
+
+
+ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
+ 22
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -580,7 +584,7 @@
您确定要删除此账户吗?
libs/ui/src/lib/accounts-table/accounts-table.component.ts
- 150
+ 148
@@ -588,7 +592,7 @@
资产概况
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 52
+ 61
@@ -596,11 +600,11 @@
历史市场数据
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 54
+ 63
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 448
+ 451
@@ -608,7 +612,7 @@
数据源
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 82
+ 91
apps/client/src/app/components/admin-market-data/admin-market-data.html
@@ -620,7 +624,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 155
+ 151
libs/ui/src/lib/i18n.ts
@@ -632,7 +636,7 @@
尝试次数
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 120
+ 129
@@ -640,7 +644,7 @@
创建
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 134
+ 143
@@ -648,7 +652,7 @@
完成
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 143
+ 152
@@ -656,11 +660,11 @@
状态
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 152
+ 161
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 92
+ 104
@@ -676,7 +680,7 @@
删除任务
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 193
+ 202
@@ -684,7 +688,7 @@
查看数据
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 208
+ 217
@@ -692,7 +696,7 @@
查看堆栈跟踪
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 216
+ 225
@@ -700,7 +704,7 @@
删除任务
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 224
+ 233
@@ -716,7 +720,7 @@
日期
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 161
+ 157
libs/ui/src/lib/account-balances/account-balances.component.html
@@ -752,11 +756,11 @@
货币
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 131
+ 130
apps/client/src/app/pages/public/public-page.html
- 96
+ 95
@@ -764,7 +768,7 @@
没有国家的 ETF
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 136
+ 135
@@ -772,7 +776,7 @@
无行业类别的 ETF
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 141
+ 140
@@ -788,7 +792,7 @@
过滤...
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 385
+ 383
@@ -828,7 +832,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html
- 44
+ 40
@@ -864,7 +868,7 @@
哎呀!无法解析历史数据。
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.ts
- 262
+ 284
@@ -888,7 +892,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.html
- 71
+ 67
@@ -920,7 +924,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 53
+ 72
@@ -932,7 +936,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 396
+ 399
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -940,7 +944,7 @@
apps/client/src/app/pages/public/public-page.html
- 114
+ 113
@@ -952,7 +956,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 407
+ 410
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -964,7 +968,7 @@
代码映射
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 384
+ 387
@@ -980,7 +984,7 @@
刮削配置
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 471
+ 474
@@ -988,7 +992,7 @@
笔记
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 432
+ 435
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
@@ -996,7 +1000,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 275
+ 271
@@ -1040,7 +1044,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 124
+ 120
@@ -1048,7 +1052,7 @@
您确实要删除此优惠券吗?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 193
+ 196
@@ -1056,7 +1060,7 @@
您真的要删除这条系统消息吗?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 206
+ 209
@@ -1064,7 +1068,7 @@
您真的要刷新缓存吗?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 230
+ 233
@@ -1072,7 +1076,7 @@
请设置您的系统消息:
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 250
+ 253
@@ -1196,11 +1200,11 @@
网址
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 419
+ 422
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 550
+ 553
apps/client/src/app/components/admin-platform/admin-platform.component.html
@@ -1216,7 +1220,7 @@
资产概况已保存
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 578
+ 594
@@ -1224,7 +1228,15 @@
您真的要删除这个平台吗?
apps/client/src/app/components/admin-platform/admin-platform.component.ts
- 106
+ 111
+
+
+
+ Explore
+ Explore
+
+ apps/client/src/app/pages/resources/overview/resources-overview.component.html
+ 11
@@ -1248,7 +1260,7 @@
当前年份
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 199
+ 205
@@ -1264,7 +1276,7 @@
平台
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 195
+ 212
@@ -1272,7 +1284,7 @@
标签
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 201
+ 218
libs/ui/src/lib/tags-selector/tags-selector.component.html
@@ -1296,7 +1308,7 @@
您真的要删除此标签吗?
apps/client/src/app/components/admin-tag/admin-tag.component.ts
- 103
+ 108
@@ -1356,7 +1368,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 89
+ 108
@@ -1388,11 +1400,11 @@
无法验证表单
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 554
+ 570
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 557
+ 573
@@ -1440,7 +1452,7 @@
基准
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 376
+ 379
apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.ts
@@ -1476,7 +1488,7 @@
apps/client/src/app/components/header/header.component.ts
- 297
+ 298
apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html
@@ -1496,15 +1508,15 @@
哎呀!安全令牌不正确。
apps/client/src/app/components/header/header.component.ts
- 312
+ 313
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 154
+ 152
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 193
+ 191
@@ -1512,7 +1524,7 @@
管理活动
apps/client/src/app/components/home-holdings/home-holdings.html
- 67
+ 64
@@ -1520,11 +1532,11 @@
恐惧
apps/client/src/app/components/home-market/home-market.component.ts
- 42
+ 41
apps/client/src/app/components/markets/markets.component.ts
- 47
+ 46
libs/ui/src/lib/i18n.ts
@@ -1536,11 +1548,11 @@
贪婪
apps/client/src/app/components/home-market/home-market.component.ts
- 43
+ 42
apps/client/src/app/components/markets/markets.component.ts
- 48
+ 47
libs/ui/src/lib/i18n.ts
@@ -1644,7 +1656,7 @@
当前周
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 191
+ 197
@@ -1664,7 +1676,7 @@
总金额
apps/client/src/app/components/investment-chart/investment-chart.component.ts
- 143
+ 146
@@ -1776,7 +1788,7 @@
绝对总业绩
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 73
+ 77
@@ -1788,7 +1800,7 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 88
+ 92
@@ -1796,7 +1808,7 @@
绝对净绩效
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 107
+ 111
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
@@ -1808,7 +1820,7 @@
净绩效
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 123
+ 127
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
@@ -1820,7 +1832,7 @@
总资产
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 149
+ 153
@@ -1828,7 +1840,7 @@
资产
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 226
+ 233
@@ -1836,7 +1848,7 @@
购买力
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 241
+ 248
@@ -1844,7 +1856,7 @@
从分析中排除
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 267
+ 274
@@ -1852,7 +1864,7 @@
负债
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 295
+ 302
apps/client/src/app/pages/features/features-page.html
@@ -1864,7 +1876,7 @@
净值
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 317
+ 324
@@ -1872,7 +1884,7 @@
年化业绩
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 331
+ 338
@@ -1908,7 +1920,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 189
+ 185
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -1924,7 +1936,7 @@
报告数据故障
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 451
+ 456
@@ -2104,7 +2116,7 @@
libs/ui/src/lib/assistant/assistant.component.ts
- 363
+ 362
@@ -2112,11 +2124,11 @@
年初至今
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 199
+ 205
libs/ui/src/lib/assistant/assistant.component.ts
- 375
+ 374
@@ -2124,11 +2136,11 @@
1年
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 203
+ 209
libs/ui/src/lib/assistant/assistant.component.ts
- 385
+ 384
@@ -2136,11 +2148,11 @@
5年
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 207
+ 213
libs/ui/src/lib/assistant/assistant.component.ts
- 409
+ 408
@@ -2156,11 +2168,11 @@
最大限度
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 211
+ 217
libs/ui/src/lib/assistant/assistant.component.ts
- 415
+ 414
@@ -2260,7 +2272,7 @@
自动
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 70
+ 69
apps/client/src/app/components/user-account-settings/user-account-settings.html
@@ -2272,7 +2284,7 @@
您确实要删除此登录方法吗?
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 282
+ 279
@@ -2312,7 +2324,7 @@
语言环境
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 509
+ 512
apps/client/src/app/components/user-account-settings/user-account-settings.html
@@ -2424,7 +2436,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 11
+ 30
@@ -2456,7 +2468,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 195
+ 194
@@ -2468,7 +2480,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 193
+ 192
@@ -2484,7 +2496,7 @@
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 196
+ 195
@@ -2612,11 +2624,11 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 375
+ 381
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 66
+ 85
apps/client/src/app/pages/accounts/accounts-page.html
@@ -2708,7 +2720,7 @@
市场数据
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 398
+ 403
libs/common/src/lib/routes/routes.ts
@@ -2742,6 +2754,10 @@
Overview
概述
+
+ apps/client/src/app/components/admin-jobs/admin-jobs.html
+ 7
+
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
114
@@ -2760,11 +2776,11 @@
apps/client/src/app/pages/admin/admin-page.component.ts
- 48
+ 45
apps/client/src/app/pages/resources/resources-page.component.ts
- 30
+ 29
libs/common/src/lib/routes/routes.ts
@@ -2888,11 +2904,11 @@
无法解析抓取器配置
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 509
+ 525
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 512
+ 528
@@ -2908,7 +2924,7 @@
由于您已经登录,因此无法访问模拟帐户。
apps/client/src/app/pages/demo/demo-page.component.ts
- 35
+ 32
@@ -3080,7 +3096,7 @@
apps/client/src/app/pages/public/public-page.html
- 242
+ 241
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
@@ -3132,7 +3148,7 @@
市场
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 378
+ 381
apps/client/src/app/components/footer/footer.component.html
@@ -3156,7 +3172,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 40
+ 39
libs/common/src/lib/routes/routes.ts
@@ -3596,7 +3612,7 @@
作业 ID
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 34
+ 43
@@ -3632,7 +3648,7 @@
apps/client/src/app/components/account-detail-dialog/account-detail-dialog.html
- 115
+ 113
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
@@ -3652,11 +3668,11 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 342
+ 348
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 75
+ 94
apps/client/src/app/pages/portfolio/activities/activities-page.html
@@ -3676,7 +3692,7 @@
您确定要删除这些活动吗?
libs/ui/src/lib/activities-table/activities-table.component.ts
- 278
+ 282
@@ -3744,7 +3760,7 @@
更新现金余额
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 112
+ 108
@@ -3752,7 +3768,7 @@
单价
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 214
+ 210
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -3780,7 +3796,7 @@
导入股息
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 137
+ 136
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -3796,7 +3812,7 @@
正在导入数据...
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 175
+ 174
@@ -3804,7 +3820,7 @@
导入已完成
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 185
+ 184
@@ -3820,7 +3836,7 @@
验证数据...
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.component.ts
- 299
+ 293
@@ -3992,7 +4008,7 @@
apps/client/src/app/pages/public/public-page.html
- 151
+ 150
@@ -4016,7 +4032,7 @@
apps/client/src/app/pages/public/public-page.html
- 168
+ 167
@@ -4024,7 +4040,7 @@
最新活动
apps/client/src/app/pages/public/public-page.html
- 211
+ 210
@@ -4036,7 +4052,7 @@
apps/client/src/app/pages/public/public-page.html
- 177
+ 176
@@ -4048,7 +4064,7 @@
apps/client/src/app/pages/public/public-page.html
- 186
+ 185
@@ -4108,7 +4124,7 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 365
+ 372
apps/client/src/app/pages/features/features-page.html
@@ -4116,11 +4132,11 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 202
+ 198
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 76
+ 75
libs/ui/src/lib/i18n.ts
@@ -4140,7 +4156,7 @@
存款
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 377
+ 404
@@ -4148,7 +4164,7 @@
每月
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 91
+ 90
@@ -4156,7 +4172,7 @@
每年
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 92
+ 91
@@ -4436,11 +4452,11 @@
无法保存资产概况
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 588
+ 604
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 591
+ 607
@@ -4464,7 +4480,7 @@
大陆
apps/client/src/app/pages/public/public-page.html
- 132
+ 131
@@ -4480,7 +4496,7 @@
Ghostfolio 使您能够跟踪您的财富。
apps/client/src/app/pages/public/public-page.html
- 238
+ 237
@@ -4510,6 +4526,10 @@
apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html
88
+
+ libs/ui/src/lib/value/value.component.html
+ 18
+
Personal Finance Tools
@@ -4853,7 +4873,7 @@
会员资格
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 48
+ 67
libs/common/src/lib/routes/routes.ts
@@ -4921,7 +4941,7 @@
您确实要删除该帐户余额吗?
libs/ui/src/lib/account-balances/account-balances.component.ts
- 120
+ 113
@@ -4977,7 +4997,7 @@
您确实要删除此活动吗?
libs/ui/src/lib/activities-table/activities-table.component.ts
- 288
+ 292
@@ -4985,7 +5005,7 @@
资产概况
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 106
+ 123
libs/ui/src/lib/assistant/assistant.html
@@ -5097,11 +5117,11 @@
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 352
+ 359
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 387
+ 414
libs/ui/src/lib/i18n.ts
@@ -5113,7 +5133,7 @@
储蓄
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
- 397
+ 424
@@ -5141,7 +5161,7 @@
显示所有
libs/ui/src/lib/holdings-table/holdings-table.component.html
- 216
+ 212
@@ -5185,7 +5205,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 326
+ 327
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -5193,7 +5213,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 290
+ 286
libs/ui/src/lib/i18n.ts
@@ -5217,7 +5237,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 342
+ 343
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
@@ -5225,7 +5245,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 309
+ 305
libs/ui/src/lib/i18n.ts
@@ -5269,7 +5289,7 @@
应急基金
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 164
+ 168
apps/client/src/app/pages/features/features-page.html
@@ -5345,7 +5365,7 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 437
+ 451
@@ -5356,6 +5376,14 @@
27
+
+ No Activities
+ No Activities
+
+ apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
+ 145
+
+
Retirement Provision
退休金
@@ -5377,7 +5405,7 @@
代码
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 68
+ 77
apps/client/src/app/components/admin-market-data/admin-market-data.html
@@ -5393,7 +5421,7 @@
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 315
+ 318
libs/ui/src/lib/i18n.ts
@@ -5465,7 +5493,7 @@
费用
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 262
+ 258
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -5509,7 +5537,7 @@
现金
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
- 212
+ 219
libs/ui/src/lib/i18n.ts
@@ -5557,7 +5585,7 @@
认证
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 35
+ 54
@@ -5701,7 +5729,7 @@
有效期至
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 74
+ 86
libs/ui/src/lib/membership-card/membership-card.component.html
@@ -5725,7 +5753,7 @@
apps/client/src/app/pages/public/public-page.html
- 196
+ 195
libs/ui/src/lib/benchmark/benchmark.component.html
@@ -5733,11 +5761,11 @@
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 439
+ 453
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
- 452
+ 467
libs/ui/src/lib/top-holdings/top-holdings.component.html
@@ -5765,7 +5793,7 @@
当前市场价格为
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 706
+ 722
@@ -5773,7 +5801,7 @@
测试
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 568
+ 571
@@ -5853,7 +5881,7 @@
关闭持仓
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 442
+ 447
@@ -5877,11 +5905,11 @@
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 81
+ 80
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 97
+ 96
apps/client/src/app/pages/resources/personal-finance-tools/product-page.component.ts
@@ -5917,7 +5945,7 @@
今年迄今为止
libs/ui/src/lib/assistant/assistant.component.ts
- 375
+ 374
@@ -5925,7 +5953,7 @@
本周至今
libs/ui/src/lib/assistant/assistant.component.ts
- 367
+ 366
@@ -5933,7 +5961,7 @@
本月至今
libs/ui/src/lib/assistant/assistant.component.ts
- 371
+ 370
@@ -5941,11 +5969,11 @@
本月至今
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 195
+ 201
libs/ui/src/lib/assistant/assistant.component.ts
- 371
+ 370
@@ -5953,11 +5981,11 @@
本周至今
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 191
+ 197
libs/ui/src/lib/assistant/assistant.component.ts
- 367
+ 366
@@ -5993,7 +6021,7 @@
年
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 203
+ 209
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
@@ -6005,7 +6033,7 @@
libs/ui/src/lib/assistant/assistant.component.ts
- 385
+ 384
@@ -6013,11 +6041,11 @@
年
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 207
+ 213
libs/ui/src/lib/assistant/assistant.component.ts
- 409
+ 408
@@ -6046,7 +6074,7 @@
自托管
apps/client/src/app/pages/faq/faq-page.component.ts
- 60
+ 52
libs/common/src/lib/routes/routes.ts
@@ -6058,7 +6086,7 @@
数据收集
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 587
+ 594
apps/client/src/app/components/admin-overview/admin-overview.html
@@ -6070,7 +6098,7 @@
一般的
apps/client/src/app/pages/faq/faq-page.component.ts
- 49
+ 41
@@ -6078,7 +6106,7 @@
云
apps/client/src/app/pages/faq/faq-page.component.ts
- 54
+ 46
libs/common/src/lib/routes/routes.ts
@@ -6106,7 +6134,7 @@
已关闭
apps/client/src/app/components/home-holdings/home-holdings.component.ts
- 65
+ 64
@@ -6114,7 +6142,7 @@
活跃
apps/client/src/app/components/home-holdings/home-holdings.component.ts
- 64
+ 63
@@ -6146,7 +6174,7 @@
执行作业
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 220
+ 229
@@ -6154,7 +6182,7 @@
优先级
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 96
+ 105
@@ -6210,7 +6238,7 @@
您确定要关闭您的 Ghostfolio 账户吗?
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 208
+ 205
@@ -6258,7 +6286,7 @@
包含在
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 374
+ 377
@@ -6266,7 +6294,7 @@
哎呀!设置生物识别认证时发生错误。
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
- 336
+ 333
@@ -6282,7 +6310,7 @@
基准
apps/client/src/app/components/admin-market-data/admin-market-data.component.ts
- 126
+ 125
@@ -6330,7 +6358,7 @@
您想 优化 您的 个人投资策略 吗?
apps/client/src/app/pages/public/public-page.html
- 234
+ 233
@@ -6662,7 +6690,7 @@
错误
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 697
+ 713
@@ -6714,7 +6742,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 592
+ 599
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -6746,7 +6774,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 345
+ 341
apps/client/src/app/pages/register/user-account-registration-dialog/user-account-registration-dialog.html
@@ -6754,7 +6782,7 @@
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html
- 46
+ 47
libs/ui/src/lib/i18n.ts
@@ -6766,7 +6794,7 @@
关闭
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 594
+ 601
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -6792,13 +6820,17 @@
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
68
+
+ apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
+ 127
+
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
107
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 347
+ 343
libs/ui/src/lib/i18n.ts
@@ -6810,7 +6842,7 @@
角色
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 14
+ 33
@@ -6834,7 +6866,7 @@
投资组合快照
apps/client/src/app/components/admin-jobs/admin-jobs.html
- 56
+ 65
@@ -6901,6 +6933,14 @@
42
+
+ has been copied to the clipboard
+ has been copied to the clipboard
+
+ libs/ui/src/lib/value/value.component.ts
+ 180
+
+
From the beginning
从头开始
@@ -7066,7 +7106,7 @@
设置 API 密钥
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 171
+ 188
@@ -7102,7 +7142,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 45
+ 44
libs/common/src/lib/routes/routes.ts
@@ -7118,7 +7158,7 @@
apps/client/src/app/pages/resources/resources-page.component.ts
- 34
+ 33
libs/common/src/lib/routes/routes.ts
@@ -7172,7 +7212,7 @@
的
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 135
+ 152
@@ -7180,7 +7220,7 @@
每日请求
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 137
+ 154
@@ -7188,7 +7228,7 @@
移除 API 密钥
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 161
+ 178
@@ -7196,7 +7236,7 @@
您确定要删除此 API 密钥吗?
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 127
+ 133
@@ -7216,7 +7256,7 @@
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 98
+ 117
@@ -7288,7 +7328,7 @@
保存
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 603
+ 610
apps/client/src/app/components/admin-market-data/create-asset-profile-dialog/create-asset-profile-dialog.html
@@ -7324,11 +7364,11 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 356
+ 352
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html
- 48
+ 49
@@ -7340,7 +7380,7 @@
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 260
+ 257
@@ -7364,7 +7404,7 @@
请输入您的 Ghostfolio API 密钥。
apps/client/src/app/components/admin-settings/admin-settings.component.ts
- 146
+ 152
@@ -7380,7 +7420,7 @@
AI 提示已复制到剪贴板
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 201
+ 199
@@ -7396,7 +7436,7 @@
延迟
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 225
+ 231
@@ -7404,7 +7444,7 @@
即时
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 229
+ 235
@@ -7412,7 +7452,7 @@
默认市场价格
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 481
+ 484
@@ -7420,7 +7460,7 @@
模式
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 518
+ 521
@@ -7428,7 +7468,7 @@
选择器
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 534
+ 537
@@ -7436,7 +7476,7 @@
HTTP 请求标头
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 494
+ 497
@@ -7444,7 +7484,7 @@
收盘
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 225
+ 231
@@ -7452,7 +7492,7 @@
实时
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 229
+ 235
@@ -7460,7 +7500,7 @@
打开 Duck.ai
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 202
+ 200
@@ -7480,7 +7520,7 @@
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 368
+ 377
@@ -7492,7 +7532,7 @@
apps/client/src/app/components/home-overview/home-overview.component.ts
- 55
+ 54
libs/ui/src/lib/holdings-table/holdings-table.component.html
@@ -7500,11 +7540,11 @@
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 368
+ 377
libs/ui/src/lib/treemap-chart/treemap-chart.component.ts
- 381
+ 390
@@ -7608,11 +7648,11 @@
安全令牌
apps/client/src/app/components/admin-users/admin-users.component.ts
- 236
+ 235
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 170
+ 167
@@ -7620,7 +7660,7 @@
您确定要为此用户生成新的安全令牌吗?
apps/client/src/app/components/admin-users/admin-users.component.ts
- 241
+ 240
@@ -7628,7 +7668,7 @@
查找账户、持仓或页面...
libs/ui/src/lib/assistant/assistant.component.ts
- 151
+ 115
@@ -7693,7 +7733,7 @@
( ) 已在使用中。
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 633
+ 649
@@ -7701,7 +7741,7 @@
在更新到 ( ) 时发生错误。
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 641
+ 657
@@ -7765,7 +7805,7 @@
某人
apps/client/src/app/pages/public/public-page.component.ts
- 59
+ 61
@@ -7797,7 +7837,7 @@
您确定要删除此项目吗?
libs/ui/src/lib/benchmark/benchmark.component.ts
- 144
+ 139
@@ -7838,7 +7878,7 @@
演示用户账户已同步。
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 274
+ 277
@@ -7873,7 +7913,7 @@
150
-
+
Fee Ratio
费率
@@ -7881,17 +7921,17 @@
152
-
- The fees do exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
- 费用超过了您初始投资的 ${thresholdMax}% (${feeRatio}%)
+
+ The fees do exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
+ 费用已超过您总投资金额的 ${thresholdMax}%(${feeRatio}%)
apps/client/src/app/pages/i18n/i18n-page.html
154
-
- The fees do not exceed ${thresholdMax}% of your initial investment (${feeRatio}%)
- 费用未超过您初始投资的 ${thresholdMax}% (${feeRatio}%)
+
+ The fees do not exceed ${thresholdMax}% of your total investment volume (${feeRatio}%)
+ 费用未超过您总投资金额的 ${thresholdMax}%(${feeRatio}%)
apps/client/src/app/pages/i18n/i18n-page.html
158
@@ -8052,7 +8092,7 @@
当前月份
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.component.ts
- 195
+ 201
@@ -8060,11 +8100,11 @@
新增
apps/client/src/app/components/admin-settings/admin-settings.component.html
- 67
+ 79
apps/client/src/app/pages/admin/admin-page.component.ts
- 56
+ 53
@@ -8221,7 +8261,7 @@
您真的想要生成一个新的安全令牌吗?
apps/client/src/app/components/user-account-access/user-account-access.component.ts
- 175
+ 172
@@ -8245,7 +8285,7 @@
股票
apps/client/src/app/components/markets/markets.component.ts
- 52
+ 51
apps/client/src/app/pages/features/features-page.html
@@ -8257,7 +8297,7 @@
加密货币
apps/client/src/app/components/markets/markets.component.ts
- 53
+ 52
apps/client/src/app/pages/features/features-page.html
@@ -8277,7 +8317,7 @@
管理资产概况
apps/client/src/app/components/holding-detail-dialog/holding-detail-dialog.html
- 466
+ 471
@@ -8697,7 +8737,7 @@
注册日期
apps/client/src/app/components/user-detail-dialog/user-detail-dialog.html
- 26
+ 45
diff --git a/apps/client/src/styles.scss b/apps/client/src/styles.scss
index b7a031bfa..f5a4e9c80 100644
--- a/apps/client/src/styles.scss
+++ b/apps/client/src/styles.scss
@@ -2,7 +2,7 @@
@import './styles/table';
@import './styles/variables';
-@import 'svgmap/dist/svgMap';
+@import 'svgmap/style.min';
:root {
--dark-background: rgb(25, 25, 25);
@@ -546,6 +546,10 @@ ngx-skeleton-loader {
padding: 9px 24px !important;
}
+.no-height {
+ height: unset !important;
+}
+
.no-min-width {
min-width: unset !important;
}
diff --git a/libs/common/src/lib/calculation-helper.ts b/libs/common/src/lib/calculation-helper.ts
index d67384a30..2097fa52a 100644
--- a/libs/common/src/lib/calculation-helper.ts
+++ b/libs/common/src/lib/calculation-helper.ts
@@ -9,7 +9,7 @@ import {
subDays,
subYears
} from 'date-fns';
-import { isNumber } from 'lodash';
+import { isFinite, isNumber } from 'lodash';
import { resetHours } from './helper';
import { DateRange } from './types';
@@ -28,7 +28,7 @@ export function getAnnualizedPerformancePercent({
exponent
);
- if (!isNaN(growthFactor)) {
+ if (isFinite(growthFactor)) {
return new Big(growthFactor).minus(1);
}
}
@@ -36,14 +36,16 @@ export function getAnnualizedPerformancePercent({
return new Big(0);
}
-export function getIntervalFromDateRange(
- aDateRange: DateRange,
- portfolioStart = new Date(0)
-) {
- let endDate = endOfDay(new Date());
- let startDate = portfolioStart;
+export function getIntervalFromDateRange(params: {
+ dateRange: DateRange;
+ endDate?: Date;
+ startDate?: Date;
+}) {
+ const { dateRange } = params;
+ let endDate = params.endDate ?? endOfDay(new Date());
+ let startDate = params.startDate ?? new Date(0);
- switch (aDateRange) {
+ switch (dateRange) {
case '1d':
startDate = max([startDate, subDays(resetHours(new Date()), 1)]);
break;
@@ -75,8 +77,8 @@ export function getIntervalFromDateRange(
break;
default:
// '2024', '2023', '2022', etc.
- endDate = endOfYear(new Date(aDateRange));
- startDate = max([startDate, new Date(aDateRange)]);
+ endDate = endOfYear(new Date(dateRange));
+ startDate = max([startDate, new Date(dateRange)]);
}
return { endDate, startDate };
diff --git a/libs/common/src/lib/config.ts b/libs/common/src/lib/config.ts
index b558ccc42..08fa2f030 100644
--- a/libs/common/src/lib/config.ts
+++ b/libs/common/src/lib/config.ts
@@ -51,6 +51,14 @@ export const ASSET_CLASS_MAPPING = new Map([
[AssetClass.REAL_ESTATE, []]
]);
+export const BULL_BOARD_COOKIE_NAME = 'bull_board_token';
+
+/**
+ * WARNING: This route is mirrored in `apps/client/proxy.conf.json`.
+ * If you update this value, you must also update the proxy configuration.
+ */
+export const BULL_BOARD_ROUTE = '/admin/queues';
+
export const CACHE_TTL_NO_CACHE = 1;
export const CACHE_TTL_INFINITE = 0;
@@ -80,6 +88,11 @@ export const DEFAULT_PROCESSOR_PORTFOLIO_SNAPSHOT_COMPUTATION_TIMEOUT = 30000;
export const DEFAULT_REDACTED_PATHS = [
'accounts[*].balance',
+ 'accounts[*].balanceInBaseCurrency',
+ 'accounts[*].comment',
+ 'accounts[*].dividendInBaseCurrency',
+ 'accounts[*].interestInBaseCurrency',
+ 'accounts[*].value',
'accounts[*].valueInBaseCurrency',
'activities[*].account.balance',
'activities[*].account.comment',
@@ -199,6 +212,7 @@ export const PROPERTY_BETTER_UPTIME_MONITOR_ID = 'BETTER_UPTIME_MONITOR_ID';
export const PROPERTY_COUNTRIES_OF_SUBSCRIBERS = 'COUNTRIES_OF_SUBSCRIBERS';
export const PROPERTY_COUPONS = 'COUPONS';
export const PROPERTY_CURRENCIES = 'CURRENCIES';
+export const PROPERTY_CUSTOM_CRYPTOCURRENCIES = 'CUSTOM_CRYPTOCURRENCIES';
export const PROPERTY_DATA_SOURCE_MAPPING = 'DATA_SOURCE_MAPPING';
export const PROPERTY_DATA_SOURCES_GHOSTFOLIO_DATA_PROVIDER_MAX_REQUESTS =
'DATA_SOURCES_GHOSTFOLIO_DATA_PROVIDER_MAX_REQUESTS';
diff --git a/libs/common/src/lib/dtos/create-asset-profile.dto.ts b/libs/common/src/lib/dtos/create-asset-profile.dto.ts
index 80d45ba42..85ad73cc0 100644
--- a/libs/common/src/lib/dtos/create-asset-profile.dto.ts
+++ b/libs/common/src/lib/dtos/create-asset-profile.dto.ts
@@ -5,7 +5,6 @@ import {
IsArray,
IsBoolean,
IsEnum,
- IsObject,
IsOptional,
IsString,
IsUrl
@@ -66,10 +65,6 @@ export class CreateAssetProfileDto {
@IsString()
name?: string;
- @IsObject()
- @IsOptional()
- scraperConfiguration?: Prisma.InputJsonObject;
-
@IsArray()
@IsOptional()
sectors?: Prisma.InputJsonArray;
@@ -77,12 +72,6 @@ export class CreateAssetProfileDto {
@IsString()
symbol: string;
- @IsObject()
- @IsOptional()
- symbolMapping?: {
- [dataProvider: string]: string;
- };
-
@IsOptional()
@IsUrl({
protocols: ['https'],
diff --git a/libs/common/src/lib/helper.spec.ts b/libs/common/src/lib/helper.spec.ts
index 25779cf39..a339c6dab 100644
--- a/libs/common/src/lib/helper.spec.ts
+++ b/libs/common/src/lib/helper.spec.ts
@@ -25,7 +25,7 @@ describe('Helper', () => {
it('Get decimal number with group (dot notation)', () => {
expect(
- extractNumberFromString({ locale: 'de-CH', value: '99’999.99' })
+ extractNumberFromString({ locale: 'de-CH', value: `99'999.99` })
).toEqual(99999.99);
});
@@ -54,12 +54,12 @@ describe('Helper', () => {
});
it('Get de-CH number format group', () => {
- expect(getNumberFormatGroup('de-CH')).toEqual('’');
+ expect(getNumberFormatGroup('de-CH')).toEqual(`'`);
});
it('Get de-CH number format group when it is default', () => {
languageGetter.mockReturnValue('de-CH');
- expect(getNumberFormatGroup()).toEqual('’');
+ expect(getNumberFormatGroup()).toEqual(`'`);
});
it('Get de-DE number format group', () => {
diff --git a/libs/common/src/lib/interfaces/lookup-item.interface.ts b/libs/common/src/lib/interfaces/lookup-item.interface.ts
index fa91ed690..6cedeca09 100644
--- a/libs/common/src/lib/interfaces/lookup-item.interface.ts
+++ b/libs/common/src/lib/interfaces/lookup-item.interface.ts
@@ -7,7 +7,7 @@ export interface LookupItem {
assetSubClass: AssetSubClass;
currency: string;
dataProviderInfo: DataProviderInfo;
- dataSource: DataSource;
+ dataSource: DataSource | null;
name: string;
symbol: string;
}
diff --git a/libs/common/src/lib/interfaces/portfolio-performance.interface.ts b/libs/common/src/lib/interfaces/portfolio-performance.interface.ts
index c0c3802d8..0698004d5 100644
--- a/libs/common/src/lib/interfaces/portfolio-performance.interface.ts
+++ b/libs/common/src/lib/interfaces/portfolio-performance.interface.ts
@@ -7,4 +7,5 @@ export interface PortfolioPerformance {
netPerformancePercentageWithCurrencyEffect: number;
netPerformanceWithCurrencyEffect: number;
totalInvestment: number;
+ totalInvestmentValueWithCurrencyEffect: number;
}
diff --git a/libs/common/src/lib/interfaces/portfolio-position.interface.ts b/libs/common/src/lib/interfaces/portfolio-position.interface.ts
index 620cc00e9..c4ef2e3dc 100644
--- a/libs/common/src/lib/interfaces/portfolio-position.interface.ts
+++ b/libs/common/src/lib/interfaces/portfolio-position.interface.ts
@@ -3,19 +3,52 @@ import { Market, MarketAdvanced } from '@ghostfolio/common/types';
import { AssetClass, AssetSubClass, DataSource, Tag } from '@prisma/client';
import { Country } from './country.interface';
+import { EnhancedSymbolProfile } from './enhanced-symbol-profile.interface';
import { Holding } from './holding.interface';
import { Sector } from './sector.interface';
export interface PortfolioPosition {
activitiesCount: number;
allocationInPercentage: number;
+
+ /** @deprecated */
assetClass?: AssetClass;
+
+ /** @deprecated */
assetClassLabel?: string;
+
+ assetProfile: Pick<
+ EnhancedSymbolProfile,
+ | 'assetClass'
+ | 'assetSubClass'
+ | 'countries'
+ | 'currency'
+ | 'dataSource'
+ | 'holdings'
+ | 'name'
+ | 'sectors'
+ | 'symbol'
+ | 'url'
+ > & {
+ assetClassLabel?: string;
+ assetSubClassLabel?: string;
+ };
+
+ /** @deprecated */
assetSubClass?: AssetSubClass;
+
+ /** @deprecated */
assetSubClassLabel?: string;
+
+ /** @deprecated */
countries: Country[];
+
+ /** @deprecated */
currency: string;
+
+ /** @deprecated */
dataSource: DataSource;
+
dateOfFirstActivity: Date;
dividend: number;
exchange?: string;
@@ -23,24 +56,38 @@ export interface PortfolioPosition {
grossPerformancePercent: number;
grossPerformancePercentWithCurrencyEffect: number;
grossPerformanceWithCurrencyEffect: number;
+
+ /** @deprecated */
holdings: Holding[];
+
investment: number;
marketChange?: number;
marketChangePercent?: number;
marketPrice: number;
markets?: { [key in Market]: number };
marketsAdvanced?: { [key in MarketAdvanced]: number };
+
+ /** @deprecated */
name: string;
+
netPerformance: number;
netPerformancePercent: number;
netPerformancePercentWithCurrencyEffect: number;
netPerformanceWithCurrencyEffect: number;
quantity: number;
+
+ /** @deprecated */
sectors: Sector[];
+
+ /** @deprecated */
symbol: string;
+
tags?: Tag[];
type?: string;
+
+ /** @deprecated */
url?: string;
+
valueInBaseCurrency?: number;
valueInPercentage?: number;
}
diff --git a/libs/common/src/lib/interfaces/portfolio-summary.interface.ts b/libs/common/src/lib/interfaces/portfolio-summary.interface.ts
index ccf94dcf7..8db6b39bb 100644
--- a/libs/common/src/lib/interfaces/portfolio-summary.interface.ts
+++ b/libs/common/src/lib/interfaces/portfolio-summary.interface.ts
@@ -6,7 +6,6 @@ export interface PortfolioSummary extends PortfolioPerformance {
annualizedPerformancePercent: number;
annualizedPerformancePercentWithCurrencyEffect: number;
cash: number;
- committedFunds: number;
dateOfFirstActivity: Date;
dividendInBaseCurrency: number;
emergencyFund: {
diff --git a/libs/common/src/lib/interfaces/responses/export-response.interface.ts b/libs/common/src/lib/interfaces/responses/export-response.interface.ts
index 8b1697ca4..fa592faf2 100644
--- a/libs/common/src/lib/interfaces/responses/export-response.interface.ts
+++ b/libs/common/src/lib/interfaces/responses/export-response.interface.ts
@@ -27,7 +27,12 @@ export interface ExportResponse {
> & { dataSource: DataSource; date: string; symbol: string })[];
assetProfiles: (Omit<
SymbolProfile,
- 'createdAt' | 'id' | 'updatedAt' | 'userId'
+ | 'createdAt'
+ | 'id'
+ | 'scraperConfiguration'
+ | 'symbolMapping'
+ | 'updatedAt'
+ | 'userId'
> & {
marketData: MarketData[];
})[];
diff --git a/libs/common/src/lib/interfaces/responses/public-portfolio-response.interface.ts b/libs/common/src/lib/interfaces/responses/public-portfolio-response.interface.ts
index 4a087ad16..eae14cec6 100644
--- a/libs/common/src/lib/interfaces/responses/public-portfolio-response.interface.ts
+++ b/libs/common/src/lib/interfaces/responses/public-portfolio-response.interface.ts
@@ -14,16 +14,31 @@ export interface PublicPortfolioResponse extends PublicPortfolioResponseV1 {
[symbol: string]: Pick<
PortfolioPosition,
| 'allocationInPercentage'
+
+ /** @deprecated */
| 'assetClass'
+ | 'assetProfile'
+
+ /** @deprecated */
| 'countries'
| 'currency'
+
+ /** @deprecated */
| 'dataSource'
| 'dateOfFirstActivity'
| 'markets'
+
+ /** @deprecated */
| 'name'
| 'netPerformancePercentWithCurrencyEffect'
+
+ /** @deprecated */
| 'sectors'
+
+ /** @deprecated */
| 'symbol'
+
+ /** @deprecated */
| 'url'
| 'valueInBaseCurrency'
| 'valueInPercentage'
diff --git a/libs/common/src/lib/interfaces/x-ray-rules-settings.interface.ts b/libs/common/src/lib/interfaces/x-ray-rules-settings.interface.ts
index bdef3e169..60a76d468 100644
--- a/libs/common/src/lib/interfaces/x-ray-rules-settings.interface.ts
+++ b/libs/common/src/lib/interfaces/x-ray-rules-settings.interface.ts
@@ -9,7 +9,7 @@ export interface XRayRulesSettings {
EconomicMarketClusterRiskDevelopedMarkets?: RuleSettings;
EconomicMarketClusterRiskEmergingMarkets?: RuleSettings;
EmergencyFundSetup?: RuleSettings;
- FeeRatioInitialInvestment?: RuleSettings;
+ FeeRatioTotalInvestmentVolume?: RuleSettings;
RegionalMarketClusterRiskAsiaPacific?: RuleSettings;
RegionalMarketClusterRiskEmergingMarkets?: RuleSettings;
RegionalMarketClusterRiskEurope?: RuleSettings;
diff --git a/libs/common/src/lib/permissions.ts b/libs/common/src/lib/permissions.ts
index cb4eb175b..f9cb19562 100644
--- a/libs/common/src/lib/permissions.ts
+++ b/libs/common/src/lib/permissions.ts
@@ -4,15 +4,16 @@ import { Role } from '@prisma/client';
export const permissions = {
accessAdminControl: 'accessAdminControl',
+ accessAdminControlBullBoard: 'accessAdminControlBullBoard',
accessAssistant: 'accessAssistant',
accessHoldingsChart: 'accessHoldingsChart',
createAccess: 'createAccess',
createAccount: 'createAccount',
createAccountBalance: 'createAccountBalance',
+ createActivity: 'createActivity',
createApiKey: 'createApiKey',
createMarketData: 'createMarketData',
createMarketDataOfOwnAssetProfile: 'createMarketDataOfOwnAssetProfile',
- createOrder: 'createOrder',
createOwnTag: 'createOwnTag',
createPlatform: 'createPlatform',
createTag: 'createTag',
@@ -21,8 +22,8 @@ export const permissions = {
deleteAccess: 'deleteAccess',
deleteAccount: 'deleteAccount',
deleteAccountBalance: 'deleteAccountBalance',
+ deleteActivity: 'deleteActivity',
deleteAuthDevice: 'deleteAuthDevice',
- deleteOrder: 'deleteOrder',
deleteOwnUser: 'deleteOwnUser',
deletePlatform: 'deletePlatform',
deleteTag: 'deleteTag',
@@ -53,10 +54,10 @@ export const permissions = {
toggleReadOnlyMode: 'toggleReadOnlyMode',
updateAccount: 'updateAccount',
updateAccess: 'updateAccess',
+ updateActivity: 'updateActivity',
updateAuthDevice: 'updateAuthDevice',
updateMarketData: 'updateMarketData',
updateMarketDataOfOwnAssetProfile: 'updateMarketDataOfOwnAssetProfile',
- updateOrder: 'updateOrder',
updateOwnAccessToken: 'updateOwnAccessToken',
updatePlatform: 'updatePlatform',
updateTag: 'updateTag',
@@ -74,19 +75,19 @@ export function getPermissions(aRole: Role): string[] {
permissions.createAccess,
permissions.createAccount,
permissions.createAccountBalance,
+ permissions.createActivity,
permissions.createWatchlistItem,
permissions.deleteAccountBalance,
permissions.deleteWatchlistItem,
permissions.createMarketData,
permissions.createMarketDataOfOwnAssetProfile,
- permissions.createOrder,
permissions.createOwnTag,
permissions.createPlatform,
permissions.createTag,
permissions.deleteAccess,
permissions.deleteAccount,
+ permissions.deleteActivity,
permissions.deleteAuthDevice,
- permissions.deleteOrder,
permissions.deletePlatform,
permissions.deleteTag,
permissions.deleteUser,
@@ -99,10 +100,10 @@ export function getPermissions(aRole: Role): string[] {
permissions.readWatchlist,
permissions.updateAccount,
permissions.updateAccess,
+ permissions.updateActivity,
permissions.updateAuthDevice,
permissions.updateMarketData,
permissions.updateMarketDataOfOwnAssetProfile,
- permissions.updateOrder,
permissions.updatePlatform,
permissions.updateTag,
permissions.updateUserSettings,
@@ -125,15 +126,15 @@ export function getPermissions(aRole: Role): string[] {
permissions.createAccess,
permissions.createAccount,
permissions.createAccountBalance,
+ permissions.createActivity,
permissions.createMarketDataOfOwnAssetProfile,
- permissions.createOrder,
permissions.createOwnTag,
permissions.createWatchlistItem,
permissions.deleteAccess,
permissions.deleteAccount,
permissions.deleteAccountBalance,
+ permissions.deleteActivity,
permissions.deleteAuthDevice,
- permissions.deleteOrder,
permissions.deleteWatchlistItem,
permissions.readAiPrompt,
permissions.readMarketDataOfOwnAssetProfile,
@@ -141,9 +142,9 @@ export function getPermissions(aRole: Role): string[] {
permissions.readWatchlist,
permissions.updateAccount,
permissions.updateAccess,
+ permissions.updateActivity,
permissions.updateAuthDevice,
permissions.updateMarketDataOfOwnAssetProfile,
- permissions.updateOrder,
permissions.updateUserSettings,
permissions.updateViewMode
];
@@ -194,7 +195,7 @@ export function hasReadRestrictedAccessPermission({
return false;
}
- const access = user.accessesGet?.find(({ id }) => {
+ const access = user?.accessesGet?.find(({ id }) => {
return id === impersonationId;
});
diff --git a/libs/common/src/lib/personal-finance-tools.ts b/libs/common/src/lib/personal-finance-tools.ts
index 6d0a85fb2..063b4254c 100644
--- a/libs/common/src/lib/personal-finance-tools.ts
+++ b/libs/common/src/lib/personal-finance-tools.ts
@@ -33,6 +33,15 @@ export const personalFinanceTools: Product[] = [
origin: 'Switzerland',
slogan: 'Simplicity for Complex Wealth'
},
+ {
+ founded: 2018,
+ hasFreePlan: false,
+ hasSelfHostingAbility: false,
+ key: 'altruist',
+ name: 'Altruist',
+ origin: 'United States',
+ slogan: 'The wealth platform built for independent advisors'
+ },
{
founded: 2023,
hasFreePlan: false,
@@ -116,6 +125,17 @@ export const personalFinanceTools: Product[] = [
origin: 'Switzerland',
slogan: 'Schweizer Budget App für einfache & smarte Budgetplanung'
},
+ {
+ founded: 2015,
+ hasFreePlan: true,
+ hasSelfHostingAbility: false,
+ key: 'boldin',
+ name: 'Boldin',
+ note: 'Originally named as NewRetirement',
+ origin: 'United States',
+ pricingPerYear: '$144',
+ slogan: 'Take control with retirement planning tools that begin with you'
+ },
{
key: 'budgetpulse',
name: 'BudgetPulse',
@@ -841,6 +861,16 @@ export const personalFinanceTools: Product[] = [
pricingPerYear: '$108',
slogan: 'Build Financial Plans You Love.'
},
+ {
+ founded: 2022,
+ hasFreePlan: false,
+ hasSelfHostingAbility: false,
+ key: 'prostocktracker',
+ name: 'Pro Stock Tracker',
+ origin: 'United Kingdom',
+ pricingPerYear: '$60',
+ slogan: 'The stock portfolio tracker built for long-term investors'
+ },
{
founded: 2015,
hasSelfHostingAbility: false,
@@ -1014,6 +1044,16 @@ export const personalFinanceTools: Product[] = [
regions: ['Austria', 'Germany', 'Switzerland'],
slogan: 'Dein Vermögen immer im Blick'
},
+ {
+ founded: 2025,
+ hasFreePlan: false,
+ hasSelfHostingAbility: false,
+ key: 'turbobulls',
+ name: 'Turbobulls',
+ origin: 'Romania',
+ pricingPerYear: '€39.99',
+ slogan: 'Your complete financial dashboard. Actually private.'
+ },
{
hasFreePlan: true,
hasSelfHostingAbility: false,
diff --git a/libs/common/src/lib/routes/routes.ts b/libs/common/src/lib/routes/routes.ts
index 53ecd104e..2785efdde 100644
--- a/libs/common/src/lib/routes/routes.ts
+++ b/libs/common/src/lib/routes/routes.ts
@@ -15,7 +15,7 @@ if (typeof window !== 'undefined') {
};
}
-export const internalRoutes: Record = {
+export const internalRoutes = {
account: {
path: 'account',
routerLink: ['/account'],
@@ -169,9 +169,9 @@ export const internalRoutes: Record = {
},
title: $localize`Overview`
}
-};
+} satisfies Record;
-export const publicRoutes: Record = {
+export const publicRoutes = {
about: {
path: $localize`:kebab-case@@routes.about:about`,
routerLink: ['/' + $localize`:kebab-case@@routes.about:about`],
@@ -336,4 +336,4 @@ export const publicRoutes: Record = {
path: $localize`:kebab-case@@routes.start:start`,
routerLink: ['/' + $localize`:kebab-case@@routes.start:start`]
}
-};
+} satisfies Record;
diff --git a/libs/common/src/lib/types/market-data-preset.type.ts b/libs/common/src/lib/types/market-data-preset.type.ts
index 0dbf914fa..2622feac3 100644
--- a/libs/common/src/lib/types/market-data-preset.type.ts
+++ b/libs/common/src/lib/types/market-data-preset.type.ts
@@ -2,4 +2,5 @@ export type MarketDataPreset =
| 'BENCHMARKS'
| 'CURRENCIES'
| 'ETF_WITHOUT_COUNTRIES'
- | 'ETF_WITHOUT_SECTORS';
+ | 'ETF_WITHOUT_SECTORS'
+ | 'NO_ACTIVITIES';
diff --git a/libs/ui/src/lib/account-balances/account-balances.component.html b/libs/ui/src/lib/account-balances/account-balances.component.html
index caef922ed..29037a985 100644
--- a/libs/ui/src/lib/account-balances/account-balances.component.html
+++ b/libs/ui/src/lib/account-balances/account-balances.component.html
@@ -12,7 +12,7 @@
Date
-
+
@@ -37,7 +37,7 @@
@@ -58,7 +58,7 @@
- @if (showActions) {
+ @if (showActions()) {