From e88dbb018189c9bc01836162ea3e339fdfd3776f Mon Sep 17 00:00:00 2001
From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
Date: Thu, 12 Jan 2023 20:14:00 +0100
Subject: [PATCH 01/26] Fix wording (#1593)
---
apps/client/src/app/pages/features/features-page.html | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/apps/client/src/app/pages/features/features-page.html b/apps/client/src/app/pages/features/features-page.html
index 05cdd8454..aaac67a0c 100644
--- a/apps/client/src/app/pages/features/features-page.html
+++ b/apps/client/src/app/pages/features/features-page.html
@@ -197,7 +197,7 @@
Multi-Language
- Use Ghostfolio in multiple languages: English, Dutch, Français,
+ Use Ghostfolio in multiple languages: English, Dutch, French,
German, Italian, Portuguese
From 7ad58b1a62d5142ad368c0a7eb7096321d1a76ba Mon Sep 17 00:00:00 2001
From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
Date: Fri, 13 Jan 2023 08:58:13 +0100
Subject: [PATCH 02/26] Add i18n (#1594)
---
apps/client/src/app/pages/account/account-page.html | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/apps/client/src/app/pages/account/account-page.html b/apps/client/src/app/pages/account/account-page.html
index c9ed454e4..a3f69f2c5 100644
--- a/apps/client/src/app/pages/account/account-page.html
+++ b/apps/client/src/app/pages/account/account-page.html
@@ -24,8 +24,8 @@
>
- Valid until {{ user?.subscription?.expiresAt | date:
- defaultDateFormat }}
+ Valid until {{
+ user?.subscription?.expiresAt | date: defaultDateFormat }}
From 104cca069f57a7f551fd073630c11eb1e3ce5e2c Mon Sep 17 00:00:00 2001
From: Martin Vandenbussche
Date: Fri, 13 Jan 2023 16:19:48 +0100
Subject: [PATCH 03/26] New Translations (#1597)
---
apps/client/src/locales/messages.fr.xlf | 8 ++++----
apps/client/src/locales/messages.nl.xlf | 4 ++--
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf
index dd0a3556a..31e3a7ef4 100644
--- a/apps/client/src/locales/messages.fr.xlf
+++ b/apps/client/src/locales/messages.fr.xlf
@@ -3058,7 +3058,7 @@
Holding
- Holding
+ Position
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html
13,15
@@ -3066,7 +3066,7 @@
Load Dividends
- Load Dividends
+ Charger Dividendes
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html
29,33
@@ -3074,7 +3074,7 @@
Yearly
- Yearly
+ Annuel
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
55
@@ -3082,7 +3082,7 @@
Import Dividends
- Import Dividends
+ Importer Dividendes
libs/ui/src/lib/activities-table/activities-table.component.html
397
diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf
index 7e31054bf..2a6be39df 100644
--- a/apps/client/src/locales/messages.nl.xlf
+++ b/apps/client/src/locales/messages.nl.xlf
@@ -3059,7 +3059,7 @@
Holding
- Holding
+ Participatie
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html
13,15
@@ -3075,7 +3075,7 @@
Yearly
- Yearly
+ Jaarlijks
apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts
55
From 69a9e7782021ddb99fffbb9e9718eae176dfcd36 Mon Sep 17 00:00:00 2001
From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
Date: Sat, 14 Jan 2023 12:22:52 +0100
Subject: [PATCH 04/26] Feature/improve logo alignment (#1599)
* Improve logo alignment
* Update changelog
---
CHANGELOG.md | 6 ++++++
libs/ui/src/lib/logo/logo.component.scss | 1 +
2 files changed, 7 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2810057f0..950048731 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## Unreleased
+
+### Changed
+
+- Improved the logo alignment
+
## 1.226.0 - 2023-01-11
### Added
diff --git a/libs/ui/src/lib/logo/logo.component.scss b/libs/ui/src/lib/logo/logo.component.scss
index 176f46126..27fb1b311 100644
--- a/libs/ui/src/lib/logo/logo.component.scss
+++ b/libs/ui/src/lib/logo/logo.component.scss
@@ -5,6 +5,7 @@
.logo {
background-color: rgba(var(--dark-primary-text));
+ margin-top: -2px;
mask: url('/assets/ghost.svg') no-repeat center;
}
}
From 0878941c4fdd59eae059e1de58e38bcc421e0e8d Mon Sep 17 00:00:00 2001
From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
Date: Sat, 14 Jan 2023 12:36:30 +0100
Subject: [PATCH 05/26] Feature/support translated tags (#1600)
* Support translated tags
* Update changelog
---
CHANGELOG.md | 4 ++++
.../position-detail-dialog.component.ts | 7 ++++++-
...create-or-update-activity-dialog.component.ts | 16 ++++++++++++++--
.../allocations/allocations-page.component.ts | 2 +-
.../analysis/analysis-page.component.ts | 2 +-
.../holdings/holdings-page.component.ts | 2 +-
libs/ui/src/lib/i18n.ts | 6 ++++++
7 files changed, 33 insertions(+), 6 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 950048731..0ba82f65b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## Unreleased
+### Added
+
+- Added support for translated tags
+
### Changed
- Improved the logo alignment
diff --git a/apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.component.ts b/apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.component.ts
index 8d19b846e..870971cbc 100644
--- a/apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.component.ts
+++ b/apps/client/src/app/components/position/position-detail-dialog/position-detail-dialog.component.ts
@@ -125,7 +125,12 @@ export class PositionDetailDialog implements OnDestroy, OnInit {
this.quantity = quantity;
this.sectors = {};
this.SymbolProfile = SymbolProfile;
- this.tags = tags;
+ this.tags = tags.map(({ id, name }) => {
+ return {
+ id,
+ name: translate(name)
+ };
+ });
this.transactionCount = transactionCount;
this.value = value;
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 d4a876bc7..f9f5a595f 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
@@ -83,7 +83,12 @@ export class CreateOrUpdateActivityDialog implements OnDestroy {
this.currencies = currencies;
this.platforms = platforms;
- this.tags = tags;
+ this.tags = tags.map(({ id, name }) => {
+ return {
+ id,
+ name: translate(name)
+ };
+ });
this.activityForm = this.formBuilder.group({
accountId: [this.data.activity?.accountId, Validators.required],
@@ -114,7 +119,14 @@ export class CreateOrUpdateActivityDialog implements OnDestroy {
},
Validators.required
],
- tags: [this.data.activity?.tags],
+ tags: [
+ this.data.activity?.tags.map(({ id, name }) => {
+ return {
+ id,
+ name: translate(name)
+ };
+ })
+ ],
type: [undefined, Validators.required], // Set after value changes subscription
unitPrice: [this.data.activity?.unitPrice, Validators.required]
});
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 16cad4a90..6a5a57c82 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
@@ -183,7 +183,7 @@ export class AllocationsPageComponent implements OnDestroy, OnInit {
const tagFilters: Filter[] = this.user.tags.map(({ id, name }) => {
return {
id,
- label: name,
+ label: translate(name),
type: 'TAG'
};
});
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 84a0be896..e91c13a11 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
@@ -159,7 +159,7 @@ export class AnalysisPageComponent implements OnDestroy, OnInit {
const tagFilters: Filter[] = this.user.tags.map(({ id, name }) => {
return {
id,
- label: name,
+ label: translate(name),
type: 'TAG'
};
});
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 16f96a700..64fe3d7c5 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
@@ -138,7 +138,7 @@ export class HoldingsPageComponent implements OnDestroy, OnInit {
const tagFilters: Filter[] = this.user.tags.map(({ id, name }) => {
return {
id,
- label: name,
+ label: translate(name),
type: 'TAG'
};
});
diff --git a/libs/ui/src/lib/i18n.ts b/libs/ui/src/lib/i18n.ts
index 58021d194..d0f913abc 100644
--- a/libs/ui/src/lib/i18n.ts
+++ b/libs/ui/src/lib/i18n.ts
@@ -4,8 +4,14 @@ const locales = {
ACCOUNT: $localize`Account`,
ASSET_CLASS: $localize`Asset Class`,
ASSET_SUB_CLASS: $localize`Asset Sub Class`,
+ CORE: $localize`Core`,
EMERGENCY_FUND: $localize`Emergency Fund`,
+ GRANT: $localize`Grant`,
+ HIGHER_RISK: $localize`Higher Risk`,
+ LOWER_RISK: $localize`Lower Risk`,
OTHER: $localize`Other`,
+ RETIREMENT_PROVISION: $localize`Retirement Provision`,
+ SATELLITE: $localize`Satellite`,
SECURITIES: $localize`Securities`,
SYMBOL: $localize`Symbol`,
TAG: $localize`Tag`,
From d147c2313f4af7c4a431c86d51aa79863d719c1d Mon Sep 17 00:00:00 2001
From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
Date: Sat, 14 Jan 2023 13:13:26 +0100
Subject: [PATCH 06/26] Feature/support assets in emergency fund (#1601)
* Support assets in emergency fund
* Update changelog
---
CHANGELOG.md | 1 +
.../src/app/portfolio/portfolio.service.ts | 117 ++++++++++++------
prisma/seed.js | 10 ++
3 files changed, 92 insertions(+), 36 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0ba82f65b..870ffd245 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
+- Added support for assets other than cash in emergency fund (affecting buying power)
- Added support for translated tags
### Changed
diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts
index f752010b3..a50ffbad3 100644
--- a/apps/api/src/app/portfolio/portfolio.service.ts
+++ b/apps/api/src/app/portfolio/portfolio.service.ts
@@ -1,5 +1,6 @@
import { AccountService } from '@ghostfolio/api/app/account/account.service';
import { CashDetails } from '@ghostfolio/api/app/account/interfaces/cash-details.interface';
+import { Activity } from '@ghostfolio/api/app/order/interfaces/activities.interface';
import { OrderService } from '@ghostfolio/api/app/order/order.service';
import { CurrentRateService } from '@ghostfolio/api/app/portfolio/current-rate.service';
import { PortfolioOrder } from '@ghostfolio/api/app/portfolio/interfaces/portfolio-order.interface';
@@ -597,7 +598,12 @@ export class PortfolioService {
const summary = await this.getSummary({
impersonationId,
userCurrency,
- userId
+ userId,
+ balanceInBaseCurrency: cashDetails.balanceInBaseCurrency,
+ emergencyFundPositionsValueInBaseCurrency:
+ this.getEmergencyFundPositionsValueInBaseCurrency({
+ activities: orders
+ })
});
return {
@@ -1167,7 +1173,7 @@ export class PortfolioService {
new FeeRatioInitialInvestment(
this.exchangeRateDataService,
currentPositions.totalInvestment.toNumber(),
- this.getFees({ orders, userCurrency }).toNumber()
+ this.getFees({ userCurrency, activities: orders }).toNumber()
)
],
this.request.user.Settings.settings
@@ -1254,26 +1260,27 @@ export class PortfolioService {
}
private getDividend({
+ activities,
date = new Date(0),
- orders,
userCurrency
}: {
+ activities: OrderWithAccount[];
date?: Date;
- orders: OrderWithAccount[];
+
userCurrency: string;
}) {
- return orders
- .filter((order) => {
- // Filter out all orders before given date and type dividend
+ return activities
+ .filter((activity) => {
+ // Filter out all activities before given date and type dividend
return (
- isBefore(date, new Date(order.date)) &&
- order.type === TypeOfOrder.DIVIDEND
+ isBefore(date, new Date(activity.date)) &&
+ activity.type === TypeOfOrder.DIVIDEND
);
})
- .map((order) => {
+ .map(({ quantity, SymbolProfile, unitPrice }) => {
return this.exchangeRateDataService.toCurrency(
- new Big(order.quantity).mul(order.unitPrice).toNumber(),
- order.SymbolProfile.currency,
+ new Big(quantity).mul(unitPrice).toNumber(),
+ SymbolProfile.currency,
userCurrency
);
})
@@ -1345,24 +1352,56 @@ export class PortfolioService {
return dividendsByGroup;
}
+ private getEmergencyFundPositionsValueInBaseCurrency({
+ activities
+ }: {
+ activities: Activity[];
+ }) {
+ const emergencyFundOrders = activities.filter((activity) => {
+ return (
+ activity.tags?.some(({ name }) => {
+ return name === 'EMERGENCY_FUND';
+ }) ?? false
+ );
+ });
+
+ let valueInBaseCurrencyOfEmergencyFundPositions = new Big(0);
+
+ for (const order of emergencyFundOrders) {
+ if (order.type === 'BUY') {
+ valueInBaseCurrencyOfEmergencyFundPositions =
+ valueInBaseCurrencyOfEmergencyFundPositions.plus(
+ order.valueInBaseCurrency
+ );
+ } else if (order.type === 'SELL') {
+ valueInBaseCurrencyOfEmergencyFundPositions =
+ valueInBaseCurrencyOfEmergencyFundPositions.minus(
+ order.valueInBaseCurrency
+ );
+ }
+ }
+
+ return valueInBaseCurrencyOfEmergencyFundPositions.toNumber();
+ }
+
private getFees({
+ activities,
date = new Date(0),
- orders,
userCurrency
}: {
+ activities: OrderWithAccount[];
date?: Date;
- orders: OrderWithAccount[];
userCurrency: string;
}) {
- return orders
- .filter((order) => {
- // Filter out all orders before given date
- return isBefore(date, new Date(order.date));
+ return activities
+ .filter((activity) => {
+ // Filter out all activities before given date
+ return isBefore(date, new Date(activity.date));
})
- .map((order) => {
+ .map(({ fee, SymbolProfile }) => {
return this.exchangeRateDataService.toCurrency(
- order.fee,
- order.SymbolProfile.currency,
+ fee,
+ SymbolProfile.currency,
userCurrency
);
})
@@ -1445,10 +1484,14 @@ export class PortfolioService {
}
private async getSummary({
+ balanceInBaseCurrency,
+ emergencyFundPositionsValueInBaseCurrency,
impersonationId,
userCurrency,
userId
}: {
+ balanceInBaseCurrency: number;
+ emergencyFundPositionsValueInBaseCurrency: number;
impersonationId: string;
userCurrency: string;
userId: string;
@@ -1461,11 +1504,7 @@ export class PortfolioService {
userId
});
- const { balanceInBaseCurrency } = await this.accountService.getCashDetails({
- userId,
- currency: userCurrency
- });
- const orders = await this.orderService.getOrders({
+ const activities = await this.orderService.getOrders({
userCurrency,
userId
});
@@ -1480,18 +1519,24 @@ export class PortfolioService {
return account?.isExcluded ?? false;
});
- const dividend = this.getDividend({ orders, userCurrency }).toNumber();
+ const dividend = this.getDividend({
+ activities,
+ userCurrency
+ }).toNumber();
const emergencyFund = new Big(
(user.Settings?.settings as UserSettings)?.emergencyFund ?? 0
);
- const fees = this.getFees({ orders, userCurrency }).toNumber();
- const firstOrderDate = orders[0]?.date;
- const items = this.getItems(orders).toNumber();
+ const fees = this.getFees({ activities, userCurrency }).toNumber();
+ const firstOrderDate = activities[0]?.date;
+ const items = this.getItems(activities).toNumber();
- const totalBuy = this.getTotalByType(orders, userCurrency, 'BUY');
- const totalSell = this.getTotalByType(orders, userCurrency, 'SELL');
+ const totalBuy = this.getTotalByType(activities, userCurrency, 'BUY');
+ const totalSell = this.getTotalByType(activities, userCurrency, 'SELL');
- const cash = new Big(balanceInBaseCurrency).minus(emergencyFund).toNumber();
+ const cash = new Big(balanceInBaseCurrency)
+ .minus(emergencyFund)
+ .plus(emergencyFundPositionsValueInBaseCurrency)
+ .toNumber();
const committedFunds = new Big(totalBuy).minus(totalSell);
const totalOfExcludedActivities = new Big(
this.getTotalByType(excludedActivities, userCurrency, 'BUY')
@@ -1547,8 +1592,8 @@ export class PortfolioService {
totalSell,
committedFunds: committedFunds.toNumber(),
emergencyFund: emergencyFund.toNumber(),
- ordersCount: orders.filter((order) => {
- return order.type === 'BUY' || order.type === 'SELL';
+ ordersCount: activities.filter(({ type }) => {
+ return type === 'BUY' || type === 'SELL';
}).length
};
}
@@ -1565,7 +1610,7 @@ export class PortfolioService {
withExcludedAccounts?: boolean;
}): Promise<{
transactionPoints: TransactionPoint[];
- orders: OrderWithAccount[];
+ orders: Activity[];
portfolioOrders: PortfolioOrder[];
}> {
const userCurrency =
diff --git a/prisma/seed.js b/prisma/seed.js
index 72a87259f..b94c11316 100644
--- a/prisma/seed.js
+++ b/prisma/seed.js
@@ -288,6 +288,16 @@ async function main() {
skipDuplicates: true
});
+ await prisma.tag.createMany({
+ data: [
+ {
+ id: '4452656d-9fa4-4bd0-ba38-70492e31d180',
+ name: 'EMERGENCY_FUND'
+ }
+ ],
+ skipDuplicates: true
+ });
+
console.log({
platformBitcoinSuisse,
platformBitpanda,
From bb99141e9c57e8dade618d8a7b693286bd33e89c Mon Sep 17 00:00:00 2001
From: Yash Solanki
Date: Sat, 14 Jan 2023 18:00:51 +0530
Subject: [PATCH 07/26] Fix group by month/year not working for YTD (#1598)
* Set time to 00:00:00 when getting current timestamp
* Update changelog
---
CHANGELOG.md | 4 ++++
.../src/app/portfolio/portfolio.service.ts | 20 +++++++++++++++----
.../investment-chart.component.ts | 5 ++++-
3 files changed, 24 insertions(+), 5 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 870ffd245..29bd4c1d3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -16,6 +16,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Improved the logo alignment
+### Fixed
+
+- Fixed the grouping by month / year of the dividend and investment timeline
+
## 1.226.0 - 2023-01-11
### Added
diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts
index a50ffbad3..67941f12b 100644
--- a/apps/api/src/app/portfolio/portfolio.service.ts
+++ b/apps/api/src/app/portfolio/portfolio.service.ts
@@ -1468,16 +1468,28 @@ export class PortfolioService {
private getStartDate(aDateRange: DateRange, portfolioStart: Date) {
switch (aDateRange) {
case '1d':
- portfolioStart = max([portfolioStart, subDays(new Date(), 1)]);
+ portfolioStart = max([
+ portfolioStart,
+ subDays(new Date().setHours(0, 0, 0, 0), 1)
+ ]);
break;
case 'ytd':
- portfolioStart = max([portfolioStart, setDayOfYear(new Date(), 1)]);
+ portfolioStart = max([
+ portfolioStart,
+ setDayOfYear(new Date().setHours(0, 0, 0, 0), 1)
+ ]);
break;
case '1y':
- portfolioStart = max([portfolioStart, subYears(new Date(), 1)]);
+ portfolioStart = max([
+ portfolioStart,
+ subYears(new Date().setHours(0, 0, 0, 0), 1)
+ ]);
break;
case '5y':
- portfolioStart = max([portfolioStart, subYears(new Date(), 5)]);
+ portfolioStart = max([
+ portfolioStart,
+ subYears(new Date().setHours(0, 0, 0, 0), 5)
+ ]);
break;
}
return portfolioStart;
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 bfce434e8..734fe704f 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
@@ -196,7 +196,10 @@ export class InvestmentChartComponent implements OnChanges, OnDestroy {
this.getTooltipPluginConfiguration()
);
this.chart.options.scales.x.min = this.daysInMarket
- ? subDays(new Date(), this.daysInMarket).toISOString()
+ ? subDays(
+ new Date().setHours(0, 0, 0, 0),
+ this.daysInMarket
+ ).toISOString()
: undefined;
if (
From 9e8a9e4670779e29cddcea1d42afa2fd547cb6b2 Mon Sep 17 00:00:00 2001
From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
Date: Sat, 14 Jan 2023 13:37:06 +0100
Subject: [PATCH 08/26] Release 1.227.0 (#1603)
---
CHANGELOG.md | 2 +-
package.json | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 29bd4c1d3..923a69319 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,7 +5,7 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-## Unreleased
+## 1.227.0 - 2023-01-14
### Added
diff --git a/package.json b/package.json
index a41b54f92..1364f7f66 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "ghostfolio",
- "version": "1.226.0",
+ "version": "1.227.0",
"homepage": "https://ghostfol.io",
"license": "AGPL-3.0",
"scripts": {
From 4da8a547ca36040191bb4774096b6873a76ecfec Mon Sep 17 00:00:00 2001
From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
Date: Sat, 14 Jan 2023 19:10:28 +0100
Subject: [PATCH 09/26] Bugfix/fix create activity dialog caused by missing
tags (#1606)
* Add guard
* Update changelog
---
CHANGELOG.md | 6 ++++++
.../create-or-update-activity-dialog.component.ts | 2 +-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 923a69319..38e9cc1bd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## Unreleased
+
+### Fixed
+
+- Fixed the create or edit activity dialog
+
## 1.227.0 - 2023-01-14
### Added
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 f9f5a595f..8b967ab0e 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
@@ -120,7 +120,7 @@ export class CreateOrUpdateActivityDialog implements OnDestroy {
Validators.required
],
tags: [
- this.data.activity?.tags.map(({ id, name }) => {
+ this.data.activity?.tags?.map(({ id, name }) => {
return {
id,
name: translate(name)
From efac39eb51508261b1a03266157deb6585dd8a8e Mon Sep 17 00:00:00 2001
From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
Date: Sat, 14 Jan 2023 19:11:14 +0100
Subject: [PATCH 10/26] Feature/extract locales 20230114 (#1607)
* Extract locales
* Update changelog
---
CHANGELOG.md | 4 +
apps/client/src/locales/messages.de.xlf | 104 ++++++++++++++++++------
apps/client/src/locales/messages.es.xlf | 104 ++++++++++++++++++------
apps/client/src/locales/messages.fr.xlf | 104 ++++++++++++++++++------
apps/client/src/locales/messages.it.xlf | 104 ++++++++++++++++++------
apps/client/src/locales/messages.nl.xlf | 104 ++++++++++++++++++------
apps/client/src/locales/messages.pt.xlf | 104 ++++++++++++++++++------
apps/client/src/locales/messages.xlf | 97 ++++++++++++++++------
8 files changed, 557 insertions(+), 168 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 38e9cc1bd..1badd9dab 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## Unreleased
+### Changed
+
+- Improved the language localization for German (`de`)
+
### Fixed
- Fixed the create or edit activity dialog
diff --git a/apps/client/src/locales/messages.de.xlf b/apps/client/src/locales/messages.de.xlf
index 558f53694..2d4a87fb7 100644
--- a/apps/client/src/locales/messages.de.xlf
+++ b/apps/client/src/locales/messages.de.xlf
@@ -2690,7 +2690,7 @@
Sparrate
apps/client/src/app/components/investment-chart/investment-chart.component.ts
- 239
+ 242
@@ -2714,7 +2714,7 @@
Symbol
libs/ui/src/lib/i18n.ts
- 10
+ 16
@@ -2722,7 +2722,7 @@
Tag
libs/ui/src/lib/i18n.ts
- 11
+ 17
@@ -2730,7 +2730,7 @@
Bargeld
libs/ui/src/lib/i18n.ts
- 14
+ 20
@@ -2738,7 +2738,7 @@
Rohstoff
libs/ui/src/lib/i18n.ts
- 15
+ 21
@@ -2746,7 +2746,7 @@
Anteilskapital
libs/ui/src/lib/i18n.ts
- 16
+ 22
@@ -2754,7 +2754,7 @@
Feste Einkünfte
libs/ui/src/lib/i18n.ts
- 17
+ 23
@@ -2762,7 +2762,7 @@
Immobilien
libs/ui/src/lib/i18n.ts
- 18
+ 24
@@ -2770,7 +2770,7 @@
Anleihe
libs/ui/src/lib/i18n.ts
- 21
+ 27
@@ -2778,7 +2778,7 @@
Kryptowährung
libs/ui/src/lib/i18n.ts
- 22
+ 28
@@ -2786,7 +2786,7 @@
ETF
libs/ui/src/lib/i18n.ts
- 23
+ 29
@@ -2794,7 +2794,7 @@
Investmentfonds
libs/ui/src/lib/i18n.ts
- 24
+ 30
@@ -2802,7 +2802,7 @@
Edelmetall
libs/ui/src/lib/i18n.ts
- 25
+ 31
@@ -2810,7 +2810,7 @@
Privates Beteiligungskapital
libs/ui/src/lib/i18n.ts
- 26
+ 32
@@ -2818,7 +2818,7 @@
Aktie
libs/ui/src/lib/i18n.ts
- 27
+ 33
@@ -2826,7 +2826,7 @@
Notfallfonds
libs/ui/src/lib/i18n.ts
- 7
+ 8
@@ -2834,7 +2834,7 @@
Andere
libs/ui/src/lib/i18n.ts
- 8
+ 12
libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts
@@ -2858,7 +2858,7 @@
Nordamerika
libs/ui/src/lib/i18n.ts
- 33
+ 39
@@ -2866,7 +2866,7 @@
Afrika
libs/ui/src/lib/i18n.ts
- 30
+ 36
@@ -2874,7 +2874,7 @@
Asien
libs/ui/src/lib/i18n.ts
- 31
+ 37
@@ -2882,7 +2882,7 @@
Europa
libs/ui/src/lib/i18n.ts
- 32
+ 38
@@ -2890,7 +2890,7 @@
Ozeanien
libs/ui/src/lib/i18n.ts
- 34
+ 40
@@ -2898,7 +2898,7 @@
Südamerika
libs/ui/src/lib/i18n.ts
- 35
+ 41
@@ -3022,7 +3022,7 @@
Wertschriften
libs/ui/src/lib/i18n.ts
- 9
+ 15
@@ -3089,6 +3089,62 @@
397
+
+ Valid until
+ Gültig bis
+
+ apps/client/src/app/pages/account/account-page.html
+ 27
+
+
+
+ Core
+ Kern
+
+ libs/ui/src/lib/i18n.ts
+ 7
+
+
+
+ Grant
+ Zuwendung
+
+ libs/ui/src/lib/i18n.ts
+ 9
+
+
+
+ Higher Risk
+ Höheres Risiko
+
+ libs/ui/src/lib/i18n.ts
+ 10
+
+
+
+ Lower Risk
+ Geringeres Risiko
+
+ libs/ui/src/lib/i18n.ts
+ 11
+
+
+
+ Retirement Provision
+ Altersvorsorge
+
+ libs/ui/src/lib/i18n.ts
+ 13
+
+
+
+ Satellite
+ Satellit
+
+ libs/ui/src/lib/i18n.ts
+ 14
+
+