Are you ready?
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 640ba2869..ea0f65ac0 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,7 @@ import { Market, ToggleOption } from '@ghostfolio/common/types';
import { translate } from '@ghostfolio/ui/i18n';
import { Account, AssetClass, DataSource } from '@prisma/client';
import { DeviceDetectorService } from 'ngx-device-detector';
-import { Subject, Subscription } from 'rxjs';
+import { Subject } from 'rxjs';
import { distinctUntilChanged, switchMap, takeUntil } from 'rxjs/operators';
@Component({
@@ -71,7 +71,6 @@ export class AllocationsPageComponent implements OnDestroy, OnInit {
| 'value'
>;
};
- public routeQueryParams: Subscription;
public sectors: {
[name: string]: { name: string; value: number };
};
@@ -98,7 +97,7 @@ export class AllocationsPageComponent implements OnDestroy, OnInit {
private router: Router,
private userService: UserService
) {
- this.routeQueryParams = route.queryParams
+ route.queryParams
.pipe(takeUntil(this.unsubscribeSubject))
.subscribe((params) => {
if (params['accountId'] && params['accountDetailDialog']) {
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 c7442e1f3..2f7e3ff58 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
@@ -1,4 +1,8 @@
import { ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';
+import { MatDialog } from '@angular/material/dialog';
+import { ActivatedRoute, Router } from '@angular/router';
+import { PositionDetailDialogParams } from '@ghostfolio/client/components/position/position-detail-dialog/interfaces/interfaces';
+import { PositionDetailDialog } from '@ghostfolio/client/components/position/position-detail-dialog/position-detail-dialog.component';
import { ToggleComponent } from '@ghostfolio/client/components/toggle/toggle.component';
import { DataService } from '@ghostfolio/client/services/data.service';
import { ImpersonationStorageService } from '@ghostfolio/client/services/impersonation-storage.service';
@@ -9,8 +13,9 @@ import {
User
} from '@ghostfolio/common/interfaces';
import { InvestmentItem } from '@ghostfolio/common/interfaces/investment-item.interface';
+import { hasPermission, permissions } from '@ghostfolio/common/permissions';
import { DateRange, GroupBy, ToggleOption } from '@ghostfolio/common/types';
-import { SymbolProfile } from '@prisma/client';
+import { DataSource, SymbolProfile } from '@prisma/client';
import { differenceInDays } from 'date-fns';
import { sortBy } from 'lodash';
import { DeviceDetectorService } from 'ngx-device-detector';
@@ -30,9 +35,12 @@ export class AnalysisPageComponent implements OnDestroy, OnInit {
public dateRangeOptions = ToggleComponent.DEFAULT_DATE_RANGE_OPTIONS;
public daysInMarket: number;
public deviceType: string;
+ public dividendsByMonth: InvestmentItem[];
+ public dividendTimelineDataLabel = $localize`Dividend`;
public firstOrderDate: Date;
public hasImpersonationId: boolean;
public investments: InvestmentItem[];
+ public investmentTimelineDataLabel = $localize`Deposit`;
public investmentsByMonth: InvestmentItem[];
public isLoadingBenchmarkComparator: boolean;
public isLoadingInvestmentChart: boolean;
@@ -42,6 +50,7 @@ export class AnalysisPageComponent implements OnDestroy, OnInit {
];
public performanceDataItems: HistoricalDataItem[];
public performanceDataItemsInPercentage: HistoricalDataItem[];
+ public portfolioEvolutionDataLabel = $localize`Deposit`;
public top3: Position[];
public user: User;
@@ -50,12 +59,30 @@ export class AnalysisPageComponent implements OnDestroy, OnInit {
public constructor(
private changeDetectorRef: ChangeDetectorRef,
private dataService: DataService,
+ private dialog: MatDialog,
private deviceService: DeviceDetectorService,
private impersonationStorageService: ImpersonationStorageService,
+ private route: ActivatedRoute,
+ private router: Router,
private userService: UserService
) {
const { benchmarks } = this.dataService.fetchInfo();
this.benchmarks = benchmarks;
+
+ route.queryParams
+ .pipe(takeUntil(this.unsubscribeSubject))
+ .subscribe((params) => {
+ if (
+ params['dataSource'] &&
+ params['positionDetailDialog'] &&
+ params['symbol']
+ ) {
+ this.openPositionDialog({
+ dataSource: params['dataSource'],
+ symbol: params['symbol']
+ });
+ }
+ });
}
public ngOnInit() {
@@ -124,6 +151,47 @@ export class AnalysisPageComponent implements OnDestroy, OnInit {
this.unsubscribeSubject.complete();
}
+ private openPositionDialog({
+ dataSource,
+ symbol
+ }: {
+ dataSource: DataSource;
+ symbol: string;
+ }) {
+ this.userService
+ .get()
+ .pipe(takeUntil(this.unsubscribeSubject))
+ .subscribe((user) => {
+ this.user = user;
+
+ const dialogRef = this.dialog.open(PositionDetailDialog, {
+ autoFocus: false,
+ data: {
+ dataSource,
+ symbol,
+ baseCurrency: this.user?.settings?.baseCurrency,
+ colorScheme: this.user?.settings?.colorScheme,
+ deviceType: this.deviceType,
+ hasImpersonationId: this.hasImpersonationId,
+ hasPermissionToReportDataGlitch: hasPermission(
+ this.user?.permissions,
+ permissions.reportDataGlitch
+ ),
+ locale: this.user?.settings?.locale
+ },
+ height: this.deviceType === 'mobile' ? '97.5vh' : '80vh',
+ width: this.deviceType === 'mobile' ? '100vw' : '50rem'
+ });
+
+ dialogRef
+ .afterClosed()
+ .pipe(takeUntil(this.unsubscribeSubject))
+ .subscribe(() => {
+ this.router.navigate(['.'], { relativeTo: this.route });
+ });
+ });
+ }
+
private update() {
this.isLoadingBenchmarkComparator = true;
this.isLoadingInvestmentChart = true;
@@ -165,6 +233,18 @@ export class AnalysisPageComponent implements OnDestroy, OnInit {
this.changeDetectorRef.markForCheck();
});
+ this.dataService
+ .fetchDividends({
+ groupBy: 'month',
+ range: this.user?.settings?.dateRange
+ })
+ .pipe(takeUntil(this.unsubscribeSubject))
+ .subscribe(({ dividends }) => {
+ this.dividendsByMonth = dividends;
+
+ this.changeDetectorRef.markForCheck();
+ });
+
this.dataService
.fetchInvestments({
groupBy: 'month',
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 6fff81da3..2f54f96d3 100644
--- a/apps/client/src/app/pages/portfolio/analysis/analysis-page.html
+++ b/apps/client/src/app/pages/portfolio/analysis/analysis-page.html
@@ -35,20 +35,30 @@
>
-
-
- {{ i + 1 }}. {{ position.name }}
-
-
-
-
+
-
-
- {{ i + 1 }}. {{ position.name }}
-
-
-
-
+
-
+
+
+
+
+
+
+ Dividend Timeline
+
+
+
+
+
+
+
+
+
diff --git a/apps/client/src/app/pages/portfolio/holdings/holdings-page.component.ts b/apps/client/src/app/pages/portfolio/holdings/holdings-page.component.ts
index 414e68678..16f96a700 100644
--- a/apps/client/src/app/pages/portfolio/holdings/holdings-page.component.ts
+++ b/apps/client/src/app/pages/portfolio/holdings/holdings-page.component.ts
@@ -16,7 +16,7 @@ import { hasPermission, permissions } from '@ghostfolio/common/permissions';
import { translate } from '@ghostfolio/ui/i18n';
import { AssetClass, DataSource } from '@prisma/client';
import { DeviceDetectorService } from 'ngx-device-detector';
-import { Subject, Subscription } from 'rxjs';
+import { Subject } from 'rxjs';
import { distinctUntilChanged, switchMap, takeUntil } from 'rxjs/operators';
@Component({
@@ -36,7 +36,6 @@ export class HoldingsPageComponent implements OnDestroy, OnInit {
public placeholder = '';
public portfolioDetails: PortfolioDetails;
public positionsArray: PortfolioPosition[];
- public routeQueryParams: Subscription;
public user: User;
private unsubscribeSubject = new Subject
();
@@ -51,7 +50,7 @@ export class HoldingsPageComponent implements OnDestroy, OnInit {
private router: Router,
private userService: UserService
) {
- this.routeQueryParams = route.queryParams
+ route.queryParams
.pipe(takeUntil(this.unsubscribeSubject))
.subscribe((params) => {
if (
diff --git a/apps/client/src/app/pages/portfolio/holdings/holdings-page.html b/apps/client/src/app/pages/portfolio/holdings/holdings-page.html
index 632569e6c..4c8e5b9e5 100644
--- a/apps/client/src/app/pages/portfolio/holdings/holdings-page.html
+++ b/apps/client/src/app/pages/portfolio/holdings/holdings-page.html
@@ -12,13 +12,13 @@
-
+ >
0"
class="text-center"
diff --git a/apps/client/src/app/pages/portfolio/holdings/holdings-page.module.ts b/apps/client/src/app/pages/portfolio/holdings/holdings-page.module.ts
index 88a6ded0f..d65671624 100644
--- a/apps/client/src/app/pages/portfolio/holdings/holdings-page.module.ts
+++ b/apps/client/src/app/pages/portfolio/holdings/holdings-page.module.ts
@@ -1,7 +1,7 @@
import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { MatButtonModule } from '@angular/material/button';
-import { GfPositionsTableModule } from '@ghostfolio/client/components/positions-table/positions-table.module';
+import { GfHoldingsTableModule } from '@ghostfolio/ui/holdings-table/holdings-table.module';
import { GfActivitiesFilterModule } from '@ghostfolio/ui/activities-filter/activities-filter.module';
import { HoldingsPageRoutingModule } from './holdings-page-routing.module';
@@ -12,7 +12,7 @@ import { HoldingsPageComponent } from './holdings-page.component';
imports: [
CommonModule,
GfActivitiesFilterModule,
- GfPositionsTableModule,
+ GfHoldingsTableModule,
HoldingsPageRoutingModule,
MatButtonModule
],
diff --git a/apps/client/src/app/pages/public/public-page.html b/apps/client/src/app/pages/public/public-page.html
index 04c1cc6b2..300b5e39e 100644
--- a/apps/client/src/app/pages/public/public-page.html
+++ b/apps/client/src/app/pages/public/public-page.html
@@ -115,12 +115,12 @@
diff --git a/apps/client/src/app/pages/public/public-page.module.ts b/apps/client/src/app/pages/public/public-page.module.ts
index 352bb6180..cf43b1bc0 100644
--- a/apps/client/src/app/pages/public/public-page.module.ts
+++ b/apps/client/src/app/pages/public/public-page.module.ts
@@ -2,7 +2,7 @@ import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { MatButtonModule } from '@angular/material/button';
import { MatCardModule } from '@angular/material/card';
-import { GfPositionsTableModule } from '@ghostfolio/client/components/positions-table/positions-table.module';
+import { GfHoldingsTableModule } from '@ghostfolio/ui/holdings-table/holdings-table.module';
import { GfWorldMapChartModule } from '@ghostfolio/client/components/world-map-chart/world-map-chart.module';
import { GfPortfolioProportionChartModule } from '@ghostfolio/ui/portfolio-proportion-chart/portfolio-proportion-chart.module';
import { GfValueModule } from '@ghostfolio/ui/value';
@@ -14,8 +14,8 @@ import { PublicPageComponent } from './public-page.component';
declarations: [PublicPageComponent],
imports: [
CommonModule,
+ GfHoldingsTableModule,
GfPortfolioProportionChartModule,
- GfPositionsTableModule,
GfValueModule,
GfWorldMapChartModule,
MatButtonModule,
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 ee18a024c..29a428fe1 100644
--- a/apps/client/src/app/pages/register/register-page.component.ts
+++ b/apps/client/src/app/pages/register/register-page.component.ts
@@ -25,6 +25,7 @@ export class RegisterPageComponent implements OnDestroy, OnInit {
public demoAuthToken: string;
public deviceType: string;
public hasPermissionForSocialLogin: boolean;
+ public hasPermissionToCreateUser: boolean;
public historicalDataItems: LineChartItem[];
public info: InfoItem;
@@ -52,6 +53,10 @@ export class RegisterPageComponent implements OnDestroy, OnInit {
globalPermissions,
permissions.enableSocialLogin
);
+ this.hasPermissionToCreateUser = hasPermission(
+ globalPermissions,
+ permissions.createUserAccount
+ );
}
public async createAccount() {
diff --git a/apps/client/src/app/pages/register/register-page.html b/apps/client/src/app/pages/register/register-page.html
index 0542af79c..130346ef5 100644
--- a/apps/client/src/app/pages/register/register-page.html
+++ b/apps/client/src/app/pages/register/register-page.html
@@ -14,14 +14,14 @@
-
-
diff --git a/apps/client/src/app/services/data.service.ts b/apps/client/src/app/services/data.service.ts
index fc98da0fa..12c54e181 100644
--- a/apps/client/src/app/services/data.service.ts
+++ b/apps/client/src/app/services/data.service.ts
@@ -27,6 +27,7 @@ import {
InfoItem,
OAuthResponse,
PortfolioDetails,
+ PortfolioDividends,
PortfolioInvestments,
PortfolioPerformanceResponse,
PortfolioPublicDetails,
@@ -35,7 +36,7 @@ import {
User
} from '@ghostfolio/common/interfaces';
import { filterGlobalPermissions } from '@ghostfolio/common/permissions';
-import { AccountWithValue, DateRange } from '@ghostfolio/common/types';
+import { AccountWithValue, DateRange, GroupBy } from '@ghostfolio/common/types';
import { translate } from '@ghostfolio/ui/i18n';
import { DataSource, Order as OrderModel } from '@prisma/client';
import { format, parseISO } from 'date-fns';
@@ -100,6 +101,18 @@ export class DataService {
});
}
+ public fetchDividends({
+ groupBy = 'month',
+ range
+ }: {
+ groupBy?: GroupBy;
+ range: DateRange;
+ }) {
+ return this.http.get
('/api/v1/portfolio/dividends', {
+ params: { groupBy, range }
+ });
+ }
+
public fetchExchangeRateForDate({
date,
symbol
@@ -178,10 +191,10 @@ export class DataService {
}
public fetchInvestments({
- groupBy,
+ groupBy = 'month',
range
}: {
- groupBy?: 'month';
+ groupBy?: GroupBy;
range: DateRange;
}) {
return this.http.get(
@@ -256,6 +269,12 @@ export class DataService {
response.holdings[symbol].assetSubClass = translate(
response.holdings[symbol].assetSubClass
);
+
+ response.holdings[symbol].dateOfFirstActivity = response.holdings[
+ symbol
+ ].dateOfFirstActivity
+ ? parseISO(response.holdings[symbol].dateOfFirstActivity)
+ : undefined;
}
}
diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf
index b2c014534..6cce7bbe8 100644
--- a/apps/client/src/locales/messages.de.xlf
+++ b/apps/client/src/locales/messages.de.xlf
@@ -90,7 +90,11 @@
apps/client/src/app/components/accounts-table/accounts-table.component.html
- 81
+ 93
+
+
+ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
+ 70
apps/client/src/app/components/admin-users/admin-users.html
@@ -110,11 +114,7 @@
Name
apps/client/src/app/components/accounts-table/accounts-table.component.html
- 21
-
-
- apps/client/src/app/components/positions-table/positions-table.component.html
- 36
+ 22
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
@@ -124,13 +124,21 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
70,72
+
+ libs/ui/src/lib/activities-table/activities-table.component.html
+ 93
+
+
+ libs/ui/src/lib/holdings-table/holdings-table.component.html
+ 28
+
Total
Gesamt
apps/client/src/app/components/accounts-table/accounts-table.component.html
- 36
+ 38
libs/ui/src/lib/activities-table/activities-table.component.html
@@ -142,23 +150,23 @@
Wert
apps/client/src/app/components/accounts-table/accounts-table.component.html
- 135
+ 147
apps/client/src/app/components/accounts-table/accounts-table.component.html
- 170
+ 182
- apps/client/src/app/components/positions-table/positions-table.component.html
- 52
+ libs/ui/src/lib/activities-table/activities-table.component.html
+ 235
libs/ui/src/lib/activities-table/activities-table.component.html
- 225
+ 270
- libs/ui/src/lib/activities-table/activities-table.component.html
- 260
+ libs/ui/src/lib/holdings-table/holdings-table.component.html
+ 71
@@ -166,11 +174,11 @@
Bearbeiten
apps/client/src/app/components/accounts-table/accounts-table.component.html
- 212
+ 224
libs/ui/src/lib/activities-table/activities-table.component.html
- 369
+ 404
@@ -178,19 +186,19 @@
Löschen
apps/client/src/app/components/accounts-table/accounts-table.component.html
- 220
+ 232
apps/client/src/app/components/admin-market-data/admin-market-data.html
- 152
+ 168
apps/client/src/app/components/admin-users/admin-users.html
- 87
+ 88
libs/ui/src/lib/activities-table/activities-table.component.html
- 385
+ 420
@@ -198,7 +206,7 @@
Möchtest du dieses Konto wirklich löschen?
apps/client/src/app/components/accounts-table/accounts-table.component.ts
- 79
+ 81
@@ -220,14 +228,6 @@
apps/client/src/app/components/admin-market-data/admin-market-data.html
24
-
- apps/client/src/app/components/positions-table/positions-table.component.html
- 22
-
-
- libs/ui/src/lib/activities-table/activities-table.component.html
- 88
-
Data Source
@@ -362,7 +362,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 154
+ 166
apps/client/src/app/pages/account/create-or-update-access-dialog/create-or-update-access-dialog.html
@@ -374,7 +374,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 201,205
+ 218,222
apps/client/src/app/pages/register/show-access-token-dialog/show-access-token-dialog.html
@@ -390,7 +390,7 @@
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 161
+ 173
apps/client/src/app/pages/account/create-or-update-access-dialog/create-or-update-access-dialog.html
@@ -402,7 +402,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 208,213
+ 225,230
@@ -412,6 +412,14 @@
apps/client/src/app/components/admin-market-data/admin-market-data.html
60
+
+ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
+ 61
+
+
+ libs/ui/src/lib/holdings-table/holdings-table.component.html
+ 47
+
Activity Count
@@ -434,7 +442,7 @@
Daten einholen
apps/client/src/app/components/admin-market-data/admin-market-data.html
- 139
+ 155
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
@@ -446,7 +454,7 @@
Bitte Währung hinzufügen:
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 104
+ 106
@@ -454,7 +462,7 @@
Möchtest du diesen Gutscheincode wirklich löschen?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 118
+ 120
@@ -462,7 +470,7 @@
Möchtest du diese Währung wirklich löschen?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 131
+ 133
@@ -470,7 +478,7 @@
Möchtest du den Cache wirklich leeren?
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 148
+ 150
@@ -478,7 +486,7 @@
Bitte gebe deine Systemmeldung ein:
apps/client/src/app/components/admin-overview/admin-overview.component.ts
- 171
+ 180
@@ -502,7 +510,7 @@
Letzte Daten einholen
apps/client/src/app/components/admin-market-data/admin-market-data.html
- 115
+ 131
@@ -510,7 +518,7 @@
Alle Daten einholen
apps/client/src/app/components/admin-market-data/admin-market-data.html
- 118
+ 134
@@ -518,11 +526,11 @@
Profildaten einholen
apps/client/src/app/components/admin-market-data/admin-market-data.html
- 121
+ 137
apps/client/src/app/components/admin-market-data/admin-market-data.html
- 145
+ 161
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
@@ -550,7 +558,7 @@
Systemmeldung
apps/client/src/app/components/admin-overview/admin-overview.html
- 86
+ 106
@@ -558,7 +566,7 @@
Systemmeldung setzen
apps/client/src/app/components/admin-overview/admin-overview.html
- 108
+ 128
@@ -566,7 +574,7 @@
Lese-Modus
apps/client/src/app/components/admin-overview/admin-overview.html
- 113
+ 96
@@ -574,7 +582,7 @@
Gutscheincodes
apps/client/src/app/components/admin-overview/admin-overview.html
- 126
+ 136
@@ -582,7 +590,7 @@
Hinzufügen
apps/client/src/app/components/admin-overview/admin-overview.html
- 161
+ 171
@@ -590,7 +598,7 @@
Verwaltung
apps/client/src/app/components/admin-overview/admin-overview.html
- 168
+ 178
@@ -598,7 +606,7 @@
Cache leeren
apps/client/src/app/components/admin-overview/admin-overview.html
- 172
+ 182
@@ -810,7 +818,7 @@
Einloggen
apps/client/src/app/components/header/header.component.ts
- 112
+ 118
apps/client/src/app/pages/webauthn/webauthn-page-routing.module.ts
@@ -822,7 +830,7 @@
Ups! Falsches Sicherheits-Token.
apps/client/src/app/components/header/header.component.ts
- 126
+ 132
@@ -1106,7 +1114,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 184,186
+ 201,203
@@ -1121,8 +1129,8 @@
Allocation
Allokation
- apps/client/src/app/components/positions-table/positions-table.component.html
- 72
+ libs/ui/src/lib/holdings-table/holdings-table.component.html
+ 95
@@ -1137,16 +1145,16 @@
57
- apps/client/src/app/components/positions-table/positions-table.component.html
- 91
+ libs/ui/src/lib/holdings-table/holdings-table.component.html
+ 115
Show all
Alle anzeigen
- apps/client/src/app/components/positions-table/positions-table.component.html
- 137
+ libs/ui/src/lib/holdings-table/holdings-table.component.html
+ 171
@@ -1338,7 +1346,7 @@
libs/ui/src/lib/activities-table/activities-table.component.html
- 286
+ 301
@@ -1514,7 +1522,7 @@
Währung
apps/client/src/app/components/accounts-table/accounts-table.component.html
- 46
+ 48
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
@@ -1526,7 +1534,7 @@
libs/ui/src/lib/activities-table/activities-table.component.html
- 113
+ 123
@@ -1534,7 +1542,7 @@
Cash-Bestand
apps/client/src/app/components/accounts-table/accounts-table.component.html
- 100
+ 112
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
@@ -1550,7 +1558,7 @@
apps/client/src/app/components/accounts-table/accounts-table.component.html
- 58
+ 65
apps/client/src/app/pages/accounts/create-or-update-account-dialog/create-or-update-account-dialog.html
@@ -1659,7 +1667,7 @@
By Asset Class
- Nach Asset Class
+ Nach Anlageklasse
apps/client/src/app/pages/portfolio/allocations/allocations-page.html
96
@@ -1730,7 +1738,7 @@
Zeitstrahl der Investitionen
apps/client/src/app/pages/portfolio/analysis/analysis-page.html
- 142
+ 143
@@ -1870,7 +1878,7 @@
libs/ui/src/lib/activities-table/activities-table.component.html
- 134
+ 144
@@ -1882,7 +1890,7 @@
libs/ui/src/lib/activities-table/activities-table.component.html
- 163
+ 173
@@ -1892,17 +1900,25 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
131,132
+
+ apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
+ 148,149
+
libs/ui/src/lib/activities-table/activities-table.component.html
- 192
+ 202
Note
Kommentar
+
+ apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
+ 153
+
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 140,143
+ 157,160
@@ -1922,7 +1938,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 154,156
+ 171,173
@@ -2082,7 +2098,7 @@
Geplant
libs/ui/src/lib/activities-table/activities-table.component.html
- 99
+ 103
@@ -2090,7 +2106,7 @@
Aktivitäten importieren
libs/ui/src/lib/activities-table/activities-table.component.html
- 323
+ 367
@@ -2098,7 +2114,7 @@
Aktivitäten exportieren
libs/ui/src/lib/activities-table/activities-table.component.html
- 333
+ 377
@@ -2106,7 +2122,7 @@
Geplante Aktivitäten als ICS exportieren
libs/ui/src/lib/activities-table/activities-table.component.html
- 343
+ 387
@@ -2114,7 +2130,7 @@
Kopieren
libs/ui/src/lib/activities-table/activities-table.component.html
- 373
+ 408
@@ -2122,7 +2138,7 @@
Geplante Aktivität als ICS exportieren
libs/ui/src/lib/activities-table/activities-table.component.html
- 381
+ 416
@@ -2130,7 +2146,7 @@
Möchtest du diese Aktivität wirklich löschen?
libs/ui/src/lib/activities-table/activities-table.component.ts
- 147
+ 149
@@ -2284,10 +2300,6 @@
First Buy Date
Datum des Erstkaufs
-
- apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 61
-
apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html
129
@@ -2310,7 +2322,7 @@
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
- 169,171
+ 186,188
@@ -2376,10 +2388,6 @@
Transactions
Transaktionen
-
- apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
- 70
-
apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.html
138
@@ -2414,15 +2422,19 @@
Monatlich
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
- 41
+ 44
Deposit
Einlage
- apps/client/src/app/components/investment-chart/investment-chart.component.ts
- 156
+ apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
+ 38
+
+
+ apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
+ 48
libs/ui/src/lib/fire-calculator/fire-calculator.component.ts
@@ -2502,7 +2514,7 @@
Filtern nach Konto, Währung, Symbol oder Typ...
libs/ui/src/lib/activities-table/activities-table.component.ts
- 319
+ 321
@@ -2634,7 +2646,7 @@
Gesamtbetrag
apps/client/src/app/components/investment-chart/investment-chart.component.ts
- 177
+ 178
@@ -2650,7 +2662,7 @@
Sparrate
apps/client/src/app/components/investment-chart/investment-chart.component.ts
- 226
+ 230
@@ -2674,7 +2686,7 @@
Symbol
libs/ui/src/lib/i18n.ts
- 8
+ 9
@@ -2682,7 +2694,7 @@
Tag
libs/ui/src/lib/i18n.ts
- 9
+ 10
@@ -2690,7 +2702,7 @@
Bargeld
libs/ui/src/lib/i18n.ts
- 12
+ 13
@@ -2698,7 +2710,7 @@
Rohstoff
libs/ui/src/lib/i18n.ts
- 13
+ 14
@@ -2706,7 +2718,7 @@
Anteilskapital
libs/ui/src/lib/i18n.ts
- 14
+ 15
@@ -2714,7 +2726,7 @@
Feste Einkünfte
libs/ui/src/lib/i18n.ts
- 15
+ 16
@@ -2722,7 +2734,7 @@
Immobilien
libs/ui/src/lib/i18n.ts
- 16
+ 17
@@ -2730,7 +2742,7 @@
Anleihe
libs/ui/src/lib/i18n.ts
- 19
+ 20
@@ -2738,7 +2750,7 @@
Kryptowährung
libs/ui/src/lib/i18n.ts
- 20
+ 21
@@ -2746,7 +2758,7 @@
ETF
libs/ui/src/lib/i18n.ts
- 21
+ 22
@@ -2754,7 +2766,7 @@
Investmentfonds
libs/ui/src/lib/i18n.ts
- 22
+ 23
@@ -2762,7 +2774,7 @@
Edelmetall
libs/ui/src/lib/i18n.ts
- 23
+ 24
@@ -2770,7 +2782,7 @@
Privates Beteiligungskapital
libs/ui/src/lib/i18n.ts
- 24
+ 25
@@ -2778,7 +2790,7 @@
Aktie
libs/ui/src/lib/i18n.ts
- 25
+ 26
@@ -2786,7 +2798,7 @@
Notfallfonds
libs/ui/src/lib/i18n.ts
- 6
+ 7
@@ -2794,7 +2806,7 @@
Andere
libs/ui/src/lib/i18n.ts
- 7
+ 8
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
@@ -2818,7 +2830,7 @@
Nordamerika
libs/ui/src/lib/i18n.ts
- 31
+ 32
@@ -2826,7 +2838,7 @@
Afrika
libs/ui/src/lib/i18n.ts
- 28
+ 29
@@ -2834,15 +2846,15 @@
Asien
libs/ui/src/lib/i18n.ts
- 29
+ 30
Europe
- Europa
+ Europa
libs/ui/src/lib/i18n.ts
- 30
+ 31
@@ -2850,7 +2862,7 @@
Ozeanien
libs/ui/src/lib/i18n.ts
- 32
+ 33
@@ -2858,7 +2870,7 @@
Südamerika
libs/ui/src/lib/i18n.ts
- 33
+ 34
@@ -2925,6 +2937,38 @@
142
+
+ Dividend Timeline
+ Zeitstrahl der Dividenden
+
+ apps/client/src/app/pages/portfolio/analysis/analysis-page.html
+ 180
+
+
+
+ Dividend
+ Dividenden
+
+ apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
+ 34
+
+
+
+ Asset Sub Class
+ Anlageunterklasse
+
+ libs/ui/src/lib/i18n.ts
+ 6
+
+
+
+ User Signup
+ Benutzer Registrierung
+
+ apps/client/src/app/components/admin-overview/admin-overview.html
+ 86
+
+