From d630fb900d649757db444ff40968f65e31f2c5e7 Mon Sep 17 00:00:00 2001 From: Thomas Kaul <4159106+dtslvr@users.noreply.github.com> Date: Sun, 4 Jun 2023 09:35:58 +0200 Subject: [PATCH] Feature/add investment streaks (#2042) * Add investment streaks * Current streak * Longest streak * Add unit to value component * Update changelog --- CHANGELOG.md | 2 + ...ator-btcusd-buy-and-sell-partially.spec.ts | 34 ++++ .../src/app/portfolio/portfolio-calculator.ts | 38 +++- .../src/app/portfolio/portfolio.controller.ts | 17 +- .../src/app/portfolio/portfolio.service.ts | 64 +++++-- .../analysis/analysis-page.component.ts | 23 ++- .../portfolio/analysis/analysis-page.html | 20 ++ apps/client/src/locales/messages.de.xlf | 174 +++++++++++------- apps/client/src/locales/messages.es.xlf | 174 +++++++++++------- apps/client/src/locales/messages.fr.xlf | 174 +++++++++++------- apps/client/src/locales/messages.it.xlf | 174 +++++++++++------- apps/client/src/locales/messages.nl.xlf | 174 +++++++++++------- apps/client/src/locales/messages.pt.xlf | 174 +++++++++++------- apps/client/src/locales/messages.xlf | 168 ++++++++++------- .../portfolio-investments.interface.ts | 1 + libs/ui/src/lib/i18n.ts | 4 + libs/ui/src/lib/value/value.component.html | 6 + libs/ui/src/lib/value/value.component.ts | 1 + 18 files changed, 962 insertions(+), 460 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 651b19b2a..639baf32b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added +- Added the investment streaks to the analysis page +- Added support for a unit in the value component - Added a default value for the `includeHistoricalData` attribute in the symbol data endpoint ## 1.276.0 - 2023-06-03 diff --git a/apps/api/src/app/portfolio/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts b/apps/api/src/app/portfolio/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts index 666ce2167..e0761ebe5 100644 --- a/apps/api/src/app/portfolio/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts +++ b/apps/api/src/app/portfolio/portfolio-calculator-btcusd-buy-and-sell-partially.spec.ts @@ -105,6 +105,40 @@ describe('PortfolioCalculator', () => { expect(investmentsByMonth).toEqual([ { date: '2015-01-01', investment: new Big('640.86') }, + { date: '2015-02-01', investment: new Big('0') }, + { date: '2015-03-01', investment: new Big('0') }, + { date: '2015-04-01', investment: new Big('0') }, + { date: '2015-05-01', investment: new Big('0') }, + { date: '2015-06-01', investment: new Big('0') }, + { date: '2015-07-01', investment: new Big('0') }, + { date: '2015-08-01', investment: new Big('0') }, + { date: '2015-09-01', investment: new Big('0') }, + { date: '2015-10-01', investment: new Big('0') }, + { date: '2015-11-01', investment: new Big('0') }, + { date: '2015-12-01', investment: new Big('0') }, + { date: '2016-01-01', investment: new Big('0') }, + { date: '2016-02-01', investment: new Big('0') }, + { date: '2016-03-01', investment: new Big('0') }, + { date: '2016-04-01', investment: new Big('0') }, + { date: '2016-05-01', investment: new Big('0') }, + { date: '2016-06-01', investment: new Big('0') }, + { date: '2016-07-01', investment: new Big('0') }, + { date: '2016-08-01', investment: new Big('0') }, + { date: '2016-09-01', investment: new Big('0') }, + { date: '2016-10-01', investment: new Big('0') }, + { date: '2016-11-01', investment: new Big('0') }, + { date: '2016-12-01', investment: new Big('0') }, + { date: '2017-01-01', investment: new Big('0') }, + { date: '2017-02-01', investment: new Big('0') }, + { date: '2017-03-01', investment: new Big('0') }, + { date: '2017-04-01', investment: new Big('0') }, + { date: '2017-05-01', investment: new Big('0') }, + { date: '2017-06-01', investment: new Big('0') }, + { date: '2017-07-01', investment: new Big('0') }, + { date: '2017-08-01', investment: new Big('0') }, + { date: '2017-09-01', investment: new Big('0') }, + { date: '2017-10-01', investment: new Big('0') }, + { date: '2017-11-01', investment: new Big('0') }, { date: '2017-12-01', investment: new Big('-14156.4') } ]); }); diff --git a/apps/api/src/app/portfolio/portfolio-calculator.ts b/apps/api/src/app/portfolio/portfolio-calculator.ts index f71597e14..9addb29dd 100644 --- a/apps/api/src/app/portfolio/portfolio-calculator.ts +++ b/apps/api/src/app/portfolio/portfolio-calculator.ts @@ -544,7 +544,7 @@ export class PortfolioCalculator { return []; } - const investments = []; + const investments: { date: string; investment: Big }[] = []; let currentDate: Date; let investmentByGroup = new Big(0); @@ -554,13 +554,11 @@ export class PortfolioCalculator { (groupBy === 'year' || isSameMonth(parseDate(order.date), currentDate)) ) { // Same group: Add up investments - investmentByGroup = investmentByGroup.plus( order.quantity.mul(order.unitPrice).mul(this.getFactor(order.type)) ); } else { // New group: Store previous group and reset - if (currentDate) { investments.push({ date: format( @@ -595,7 +593,39 @@ export class PortfolioCalculator { } } - return investments; + // Fill in the missing dates with investment = 0 + const startDate = parseDate(first(this.orders).date); + const endDate = parseDate(last(this.orders).date); + + const allDates: string[] = []; + currentDate = startDate; + + while (currentDate <= endDate) { + allDates.push( + format( + set(currentDate, { + date: 1, + month: groupBy === 'year' ? 0 : currentDate.getMonth() + }), + DATE_FORMAT + ) + ); + currentDate.setMonth(currentDate.getMonth() + 1); + } + + for (const date of allDates) { + const existingInvestment = investments.find((investment) => { + return investment.date === date; + }); + + if (!existingInvestment) { + investments.push({ date, investment: new Big(0) }); + } + } + + return sortBy(investments, (investment) => { + return investment.date; + }); } public async calculateTimeline( diff --git a/apps/api/src/app/portfolio/portfolio.controller.ts b/apps/api/src/app/portfolio/portfolio.controller.ts index 8f9c2e579..1747936fd 100644 --- a/apps/api/src/app/portfolio/portfolio.controller.ts +++ b/apps/api/src/app/portfolio/portfolio.controller.ts @@ -258,11 +258,12 @@ export class PortfolioController { filterByTags }); - let investments = await this.portfolioService.getInvestments({ + let { investments, streaks } = await this.portfolioService.getInvestments({ dateRange, filters, groupBy, - impersonationId + impersonationId, + savingsRate: this.request.user?.Settings?.settings.savingsRate }); if ( @@ -278,6 +279,11 @@ export class PortfolioController { date: item.date, investment: item.investment / maxInvestment })); + + streaks = nullifyValuesInObject(streaks, [ + 'currentStreak', + 'longestStreak' + ]); } if ( @@ -287,9 +293,14 @@ export class PortfolioController { investments = investments.map((item) => { return nullifyValuesInObject(item, ['investment']); }); + + streaks = nullifyValuesInObject(streaks, [ + 'currentStreak', + 'longestStreak' + ]); } - return { investments }; + return { investments, streaks }; } @Get('performance') diff --git a/apps/api/src/app/portfolio/portfolio.service.ts b/apps/api/src/app/portfolio/portfolio.service.ts index 7755146f1..aea522f40 100644 --- a/apps/api/src/app/portfolio/portfolio.service.ts +++ b/apps/api/src/app/portfolio/portfolio.service.ts @@ -28,6 +28,7 @@ import { Filter, HistoricalDataItem, PortfolioDetails, + PortfolioInvestments, PortfolioPerformanceResponse, PortfolioPosition, PortfolioReport, @@ -252,13 +253,15 @@ export class PortfolioService { dateRange, filters, groupBy, - impersonationId + impersonationId, + savingsRate }: { dateRange: DateRange; filters?: Filter[]; groupBy?: GroupBy; impersonationId: string; - }): Promise { + savingsRate: number; + }): Promise { const userId = await this.getUserId(impersonationId, this.request.user.id); const { portfolioOrders, transactionPoints } = @@ -276,7 +279,10 @@ export class PortfolioService { portfolioCalculator.setTransactionPoints(transactionPoints); if (transactionPoints.length === 0) { - return []; + return { + investments: [], + streaks: { currentStreak: 0, longestStreak: 0 } + }; } let investments: InvestmentItem[]; @@ -346,9 +352,23 @@ export class PortfolioService { parseDate(investments[0]?.date) ); - return investments.filter(({ date }) => { + investments = investments.filter(({ date }) => { return !isBefore(parseDate(date), startDate); }); + + let streaks: PortfolioInvestments['streaks']; + + if (savingsRate) { + streaks = this.getStreaks({ + investments, + savingsRate: groupBy === 'year' ? 12 * savingsRate : savingsRate + }); + } + + return { + investments, + streaks + }; } public async getChart({ @@ -1510,6 +1530,28 @@ export class PortfolioService { return portfolioStart; } + private getStreaks({ + investments, + savingsRate + }: { + investments: InvestmentItem[]; + savingsRate: number; + }) { + let currentStreak = 0; + let longestStreak = 0; + + for (const { investment } of investments) { + if (investment >= savingsRate) { + currentStreak++; + longestStreak = Math.max(longestStreak, currentStreak); + } else { + currentStreak = 0; + } + } + + return { currentStreak, longestStreak }; + } + private async getSummary({ balanceInBaseCurrency, emergencyFundPositionsValueInBaseCurrency, @@ -1841,13 +1883,6 @@ export class PortfolioService { return { accounts, platforms }; } - private async getUserId(aImpersonationId: string, aUserId: string) { - const impersonationUserId = - await this.impersonationService.validateImpersonationId(aImpersonationId); - - return impersonationUserId || aUserId; - } - private getTotalByType( orders: OrderWithAccount[], currency: string, @@ -1874,4 +1909,11 @@ export class PortfolioService { this.baseCurrency ); } + + private async getUserId(aImpersonationId: string, aUserId: string) { + const impersonationUserId = + await this.impersonationService.validateImpersonationId(aImpersonationId); + + return impersonationUserId || aUserId; + } } 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 75a66d828..0e493ec9c 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 @@ -10,6 +10,7 @@ import { UserService } from '@ghostfolio/client/services/user/user.service'; import { Filter, HistoricalDataItem, + PortfolioInvestments, Position, User } from '@ghostfolio/common/interfaces'; @@ -58,7 +59,10 @@ export class AnalysisPageComponent implements OnDestroy, OnInit { public performanceDataItemsInPercentage: HistoricalDataItem[]; public placeholder = ''; public portfolioEvolutionDataLabel = $localize`Deposit`; + public streaks: PortfolioInvestments['streaks']; public top3: Position[]; + public unitCurrentStreak: string; + public unitLongestStreak: string; public user: User; private unsubscribeSubject = new Subject(); @@ -242,8 +246,25 @@ export class AnalysisPageComponent implements OnDestroy, OnInit { range: this.user?.settings?.dateRange }) .pipe(takeUntil(this.unsubscribeSubject)) - .subscribe(({ investments }) => { + .subscribe(({ investments, streaks }) => { this.investmentsByGroup = investments; + this.streaks = streaks; + this.unitCurrentStreak = + this.mode === 'year' + ? this.streaks.currentStreak === 1 + ? translate('YEAR') + : translate('YEARS') + : this.streaks.currentStreak === 1 + ? translate('MONTH') + : translate('MONTHS'); + this.unitLongestStreak = + this.mode === 'year' + ? this.streaks.longestStreak === 1 + ? translate('YEAR') + : translate('YEARS') + : this.streaks.longestStreak === 1 + ? translate('MONTH') + : translate('MONTHS'); this.changeDetectorRef.markForCheck(); }); 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 68415e0ae..338aedc06 100644 --- a/apps/client/src/app/pages/portfolio/analysis/analysis-page.html +++ b/apps/client/src/app/pages/portfolio/analysis/analysis-page.html @@ -177,6 +177,26 @@ (change)="onChangeGroupBy($event.value)" > +
+
+ Current Streak +
+
+ Longest Streak +
+
Über Ghostfolio apps/client/src/app/pages/about/about-page-routing.module.ts - 36 + 35 apps/client/src/app/pages/about/about-page.component.ts - 56 + 51 apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts @@ -1346,7 +1346,7 @@ apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html - 180 + 183 apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html @@ -1358,11 +1358,11 @@ apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html - 192 + 195 apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html - 178 + 181 apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html @@ -1378,11 +1378,11 @@ apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html - 200 + 202 apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html - 245 + 252 apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html @@ -1398,7 +1398,7 @@ Changelog & Lizenz apps/client/src/app/pages/about/about-page.component.ts - 61 + 56 apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts @@ -1426,7 +1426,7 @@ Datenschutzbestimmungen apps/client/src/app/pages/about/about-page.component.ts - 66 + 61 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts @@ -1726,7 +1726,7 @@ Administration apps/client/src/app/pages/admin/admin-page-routing.module.ts - 26 + 19 @@ -1766,15 +1766,15 @@ Übersicht apps/client/src/app/pages/admin/admin-page.component.ts - 30 + 31 apps/client/src/app/pages/home/home-page.component.ts - 47 + 51 apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + 18 apps/client/src/app/pages/zen/zen-page.component.ts @@ -1786,11 +1786,11 @@ Märkte apps/client/src/app/pages/home/home-page-routing.module.ts - 33 + 32 apps/client/src/app/pages/home/home-page.component.ts - 77 + 66 apps/client/src/app/pages/markets/markets-page-routing.module.ts @@ -1806,7 +1806,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 61 + 65 @@ -1894,7 +1894,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 46 + 50 @@ -1966,11 +1966,11 @@ Positionen apps/client/src/app/pages/home/home-page-routing.module.ts - 23 + 22 apps/client/src/app/pages/home/home-page.component.ts - 52 + 56 apps/client/src/app/pages/portfolio/holdings/holdings-page-routing.module.ts @@ -1978,7 +1978,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 51 + 55 apps/client/src/app/pages/zen/zen-page.component.ts @@ -2118,7 +2118,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 56 + 60 @@ -2154,7 +2154,7 @@ apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 48 + 47 @@ -2562,7 +2562,7 @@ Monatlich apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 54 + 55 @@ -2570,11 +2570,11 @@ Einlage apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 48 + 49 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 60 + 61 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts @@ -2646,7 +2646,7 @@ apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 123 + 127 apps/client/src/app/pages/portfolio/holdings/holdings-page.component.ts @@ -2822,7 +2822,7 @@ Symbol libs/ui/src/lib/i18n.ts - 20 + 22 @@ -2830,7 +2830,7 @@ Tag libs/ui/src/lib/i18n.ts - 21 + 23 @@ -2838,7 +2838,7 @@ Bargeld libs/ui/src/lib/i18n.ts - 24 + 28 @@ -2846,7 +2846,7 @@ Rohstoff libs/ui/src/lib/i18n.ts - 25 + 29 @@ -2854,7 +2854,7 @@ Beteiligungskapital libs/ui/src/lib/i18n.ts - 26 + 30 @@ -2862,7 +2862,7 @@ Feste Einkünfte libs/ui/src/lib/i18n.ts - 27 + 31 @@ -2870,7 +2870,7 @@ Immobilien libs/ui/src/lib/i18n.ts - 28 + 32 @@ -2878,7 +2878,7 @@ Anleihe libs/ui/src/lib/i18n.ts - 31 + 35 @@ -2886,7 +2886,7 @@ Kryptowährung libs/ui/src/lib/i18n.ts - 32 + 36 @@ -2894,7 +2894,7 @@ ETF libs/ui/src/lib/i18n.ts - 33 + 37 @@ -2902,7 +2902,7 @@ Investmentfonds libs/ui/src/lib/i18n.ts - 34 + 38 @@ -2910,7 +2910,7 @@ Edelmetall libs/ui/src/lib/i18n.ts - 35 + 39 @@ -2918,7 +2918,7 @@ Privates Beteiligungskapital libs/ui/src/lib/i18n.ts - 36 + 40 @@ -2926,7 +2926,7 @@ Aktie libs/ui/src/lib/i18n.ts - 37 + 41 @@ -2942,7 +2942,7 @@ Andere libs/ui/src/lib/i18n.ts - 16 + 18 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts @@ -2966,7 +2966,7 @@ Nordamerika libs/ui/src/lib/i18n.ts - 43 + 47 @@ -2974,7 +2974,7 @@ Afrika libs/ui/src/lib/i18n.ts - 40 + 44 @@ -2982,7 +2982,7 @@ Asien libs/ui/src/lib/i18n.ts - 41 + 45 @@ -2990,7 +2990,7 @@ Europa libs/ui/src/lib/i18n.ts - 42 + 46 @@ -2998,7 +2998,7 @@ Ozeanien libs/ui/src/lib/i18n.ts - 44 + 48 @@ -3006,7 +3006,7 @@ Südamerika libs/ui/src/lib/i18n.ts - 45 + 49 @@ -3090,7 +3090,7 @@ Zeitstrahl der Dividenden apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 203 + 223 @@ -3098,7 +3098,7 @@ Dividenden apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 43 + 44 @@ -3142,7 +3142,7 @@ Wertschriften libs/ui/src/lib/i18n.ts - 19 + 21 @@ -3150,11 +3150,11 @@ Jobs apps/client/src/app/pages/admin/admin-page-routing.module.ts - 17 + 21 apps/client/src/app/pages/admin/admin-page.component.ts - 43 + 46 @@ -3162,11 +3162,11 @@ Marktdaten apps/client/src/app/pages/admin/admin-page-routing.module.ts - 21 + 25 apps/client/src/app/pages/admin/admin-page.component.ts - 40 + 41 @@ -3174,11 +3174,11 @@ Benutzer apps/client/src/app/pages/admin/admin-page-routing.module.ts - 36 + 35 apps/client/src/app/pages/admin/admin-page.component.ts - 44 + 51 @@ -3186,11 +3186,11 @@ Zusammenfassung apps/client/src/app/pages/home/home-page-routing.module.ts - 28 + 27 apps/client/src/app/pages/home/home-page.component.ts - 57 + 61 @@ -3214,7 +3214,7 @@ Jährlich apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 55 + 56 @@ -3270,7 +3270,7 @@ Altersvorsorge libs/ui/src/lib/i18n.ts - 17 + 19 @@ -3278,7 +3278,7 @@ Satellit libs/ui/src/lib/i18n.ts - 18 + 20 @@ -3822,11 +3822,11 @@ Einstellungen apps/client/src/app/pages/admin/admin-page-routing.module.ts - 31 + 30 apps/client/src/app/pages/admin/admin-page.component.ts - 35 + 36 @@ -3941,6 +3941,54 @@ 87 + + Current Streak + Aktueller Streak + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 187 + + + + Longest Streak + Längster Streak + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 196 + + + + Months + Monate + + libs/ui/src/lib/i18n.ts + 17 + + + + Years + Jahre + + libs/ui/src/lib/i18n.ts + 25 + + + + Month + Monat + + libs/ui/src/lib/i18n.ts + 16 + + + + Year + Jahr + + libs/ui/src/lib/i18n.ts + 24 + + diff --git a/apps/client/src/locales/messages.es.xlf b/apps/client/src/locales/messages.es.xlf index 88c4ece25..d538a8d9a 100644 --- a/apps/client/src/locales/messages.es.xlf +++ b/apps/client/src/locales/messages.es.xlf @@ -1307,11 +1307,11 @@ Sobre apps/client/src/app/pages/about/about-page-routing.module.ts - 36 + 35 apps/client/src/app/pages/about/about-page.component.ts - 56 + 51 apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts @@ -1347,7 +1347,7 @@ apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html - 180 + 183 apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html @@ -1359,11 +1359,11 @@ apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html - 192 + 195 apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html - 178 + 181 apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html @@ -1379,11 +1379,11 @@ apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html - 200 + 202 apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html - 245 + 252 apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html @@ -1399,7 +1399,7 @@ Registro de cambios & Licencia de uso apps/client/src/app/pages/about/about-page.component.ts - 61 + 56 apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts @@ -1427,7 +1427,7 @@ Política de privacidad apps/client/src/app/pages/about/about-page.component.ts - 66 + 61 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts @@ -1727,7 +1727,7 @@ Control de administrador apps/client/src/app/pages/admin/admin-page-routing.module.ts - 26 + 19 @@ -1767,15 +1767,15 @@ Visión general apps/client/src/app/pages/admin/admin-page.component.ts - 30 + 31 apps/client/src/app/pages/home/home-page.component.ts - 47 + 51 apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + 18 apps/client/src/app/pages/zen/zen-page.component.ts @@ -1787,11 +1787,11 @@ Mercados apps/client/src/app/pages/home/home-page-routing.module.ts - 33 + 32 apps/client/src/app/pages/home/home-page.component.ts - 77 + 66 apps/client/src/app/pages/markets/markets-page-routing.module.ts @@ -1807,7 +1807,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 61 + 65 @@ -1895,7 +1895,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 46 + 50 @@ -1967,11 +1967,11 @@ Participaciones apps/client/src/app/pages/home/home-page-routing.module.ts - 23 + 22 apps/client/src/app/pages/home/home-page.component.ts - 52 + 56 apps/client/src/app/pages/portfolio/holdings/holdings-page-routing.module.ts @@ -1979,7 +1979,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 51 + 55 apps/client/src/app/pages/zen/zen-page.component.ts @@ -2119,7 +2119,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 56 + 60 @@ -2155,7 +2155,7 @@ apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 48 + 47 @@ -2579,11 +2579,11 @@ Depósito apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 48 + 49 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 60 + 61 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts @@ -2595,7 +2595,7 @@ Mensual apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 54 + 55 @@ -2639,7 +2639,7 @@ apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 123 + 127 apps/client/src/app/pages/portfolio/holdings/holdings-page.component.ts @@ -2823,7 +2823,7 @@ Símbolo libs/ui/src/lib/i18n.ts - 20 + 22 @@ -2831,7 +2831,7 @@ Etiqueta libs/ui/src/lib/i18n.ts - 21 + 23 @@ -2839,7 +2839,7 @@ Efectivo libs/ui/src/lib/i18n.ts - 24 + 28 @@ -2847,7 +2847,7 @@ Bien libs/ui/src/lib/i18n.ts - 25 + 29 @@ -2855,7 +2855,7 @@ Capital libs/ui/src/lib/i18n.ts - 26 + 30 @@ -2863,7 +2863,7 @@ Renta fija libs/ui/src/lib/i18n.ts - 27 + 31 @@ -2871,7 +2871,7 @@ Propiedad inmobiliaria libs/ui/src/lib/i18n.ts - 28 + 32 @@ -2879,7 +2879,7 @@ Bono libs/ui/src/lib/i18n.ts - 31 + 35 @@ -2887,7 +2887,7 @@ Criptomoneda libs/ui/src/lib/i18n.ts - 32 + 36 @@ -2895,7 +2895,7 @@ ETF libs/ui/src/lib/i18n.ts - 33 + 37 @@ -2903,7 +2903,7 @@ Fondo de inversión libs/ui/src/lib/i18n.ts - 34 + 38 @@ -2911,7 +2911,7 @@ Metal precioso libs/ui/src/lib/i18n.ts - 35 + 39 @@ -2919,7 +2919,7 @@ Capital riesgo libs/ui/src/lib/i18n.ts - 36 + 40 @@ -2927,7 +2927,7 @@ Acción libs/ui/src/lib/i18n.ts - 37 + 41 @@ -2943,7 +2943,7 @@ Otros libs/ui/src/lib/i18n.ts - 16 + 18 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts @@ -2967,7 +2967,7 @@ América del Norte libs/ui/src/lib/i18n.ts - 43 + 47 @@ -2975,7 +2975,7 @@ África libs/ui/src/lib/i18n.ts - 40 + 44 @@ -2983,7 +2983,7 @@ Asia libs/ui/src/lib/i18n.ts - 41 + 45 @@ -2991,7 +2991,7 @@ Europa libs/ui/src/lib/i18n.ts - 42 + 46 @@ -2999,7 +2999,7 @@ Oceanía libs/ui/src/lib/i18n.ts - 44 + 48 @@ -3007,7 +3007,7 @@ América del Sur libs/ui/src/lib/i18n.ts - 45 + 49 @@ -3091,7 +3091,7 @@ Dividend apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 43 + 44 @@ -3099,7 +3099,7 @@ Dividend Timeline apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 203 + 223 @@ -3143,7 +3143,7 @@ Securities libs/ui/src/lib/i18n.ts - 19 + 21 @@ -3151,11 +3151,11 @@ Jobs apps/client/src/app/pages/admin/admin-page-routing.module.ts - 17 + 21 apps/client/src/app/pages/admin/admin-page.component.ts - 43 + 46 @@ -3163,11 +3163,11 @@ Market Data apps/client/src/app/pages/admin/admin-page-routing.module.ts - 21 + 25 apps/client/src/app/pages/admin/admin-page.component.ts - 40 + 41 @@ -3175,11 +3175,11 @@ Users apps/client/src/app/pages/admin/admin-page-routing.module.ts - 36 + 35 apps/client/src/app/pages/admin/admin-page.component.ts - 44 + 51 @@ -3187,11 +3187,11 @@ Summary apps/client/src/app/pages/home/home-page-routing.module.ts - 28 + 27 apps/client/src/app/pages/home/home-page.component.ts - 57 + 61 @@ -3215,7 +3215,7 @@ Yearly apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 55 + 56 @@ -3271,7 +3271,7 @@ Retirement Provision libs/ui/src/lib/i18n.ts - 17 + 19 @@ -3279,7 +3279,7 @@ Satellite libs/ui/src/lib/i18n.ts - 18 + 20 @@ -3823,11 +3823,11 @@ Settings apps/client/src/app/pages/admin/admin-page-routing.module.ts - 31 + 30 apps/client/src/app/pages/admin/admin-page.component.ts - 35 + 36 @@ -3942,6 +3942,54 @@ 87 + + Current Streak + Current Streak + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 187 + + + + Longest Streak + Longest Streak + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 196 + + + + Months + Months + + libs/ui/src/lib/i18n.ts + 17 + + + + Years + Years + + libs/ui/src/lib/i18n.ts + 25 + + + + Month + Month + + libs/ui/src/lib/i18n.ts + 16 + + + + Year + Year + + libs/ui/src/lib/i18n.ts + 24 + + diff --git a/apps/client/src/locales/messages.fr.xlf b/apps/client/src/locales/messages.fr.xlf index 6f3b1d979..ecc8f91cb 100644 --- a/apps/client/src/locales/messages.fr.xlf +++ b/apps/client/src/locales/messages.fr.xlf @@ -970,7 +970,7 @@ apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 48 + 47 @@ -1658,11 +1658,11 @@ À propos apps/client/src/app/pages/about/about-page-routing.module.ts - 36 + 35 apps/client/src/app/pages/about/about-page.component.ts - 56 + 51 apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts @@ -1674,7 +1674,7 @@ Historique des modifications & License apps/client/src/app/pages/about/about-page.component.ts - 61 + 56 apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts @@ -1702,7 +1702,7 @@ Politique de Vie Privée apps/client/src/app/pages/about/about-page.component.ts - 66 + 61 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts @@ -2038,11 +2038,11 @@ Tâches apps/client/src/app/pages/admin/admin-page-routing.module.ts - 17 + 21 apps/client/src/app/pages/admin/admin-page.component.ts - 43 + 46 @@ -2050,11 +2050,11 @@ Données de Marché apps/client/src/app/pages/admin/admin-page-routing.module.ts - 21 + 25 apps/client/src/app/pages/admin/admin-page.component.ts - 40 + 41 @@ -2062,7 +2062,7 @@ Contrôle Admin apps/client/src/app/pages/admin/admin-page-routing.module.ts - 26 + 19 @@ -2070,11 +2070,11 @@ Utilisateurs apps/client/src/app/pages/admin/admin-page-routing.module.ts - 36 + 35 apps/client/src/app/pages/admin/admin-page.component.ts - 44 + 51 @@ -2102,7 +2102,7 @@ apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html - 180 + 183 apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html @@ -2114,11 +2114,11 @@ apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html - 192 + 195 apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html - 178 + 181 apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html @@ -2134,11 +2134,11 @@ apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html - 200 + 202 apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html - 245 + 252 apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html @@ -2178,11 +2178,11 @@ Positions apps/client/src/app/pages/home/home-page-routing.module.ts - 23 + 22 apps/client/src/app/pages/home/home-page.component.ts - 52 + 56 apps/client/src/app/pages/portfolio/holdings/holdings-page-routing.module.ts @@ -2190,7 +2190,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 51 + 55 apps/client/src/app/pages/zen/zen-page.component.ts @@ -2202,11 +2202,11 @@ Résumé apps/client/src/app/pages/home/home-page-routing.module.ts - 28 + 27 apps/client/src/app/pages/home/home-page.component.ts - 57 + 61 @@ -2214,11 +2214,11 @@ Marchés apps/client/src/app/pages/home/home-page-routing.module.ts - 33 + 32 apps/client/src/app/pages/home/home-page.component.ts - 77 + 66 apps/client/src/app/pages/markets/markets-page-routing.module.ts @@ -2234,7 +2234,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 56 + 60 @@ -2374,7 +2374,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 61 + 65 @@ -2386,7 +2386,7 @@ apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 123 + 127 apps/client/src/app/pages/portfolio/holdings/holdings-page.component.ts @@ -2522,7 +2522,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 46 + 50 @@ -2530,7 +2530,7 @@ Dividende apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 43 + 44 @@ -2538,11 +2538,11 @@ Dépôt apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 48 + 49 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 60 + 61 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts @@ -2554,7 +2554,7 @@ Mensuel apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 54 + 55 @@ -2602,7 +2602,7 @@ Historique des Dividendes apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 203 + 223 @@ -2802,15 +2802,15 @@ Aperçu apps/client/src/app/pages/admin/admin-page.component.ts - 30 + 31 apps/client/src/app/pages/home/home-page.component.ts - 47 + 51 apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + 18 apps/client/src/app/pages/zen/zen-page.component.ts @@ -2997,7 +2997,7 @@ Autre libs/ui/src/lib/i18n.ts - 16 + 18 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts @@ -3009,7 +3009,7 @@ Titres libs/ui/src/lib/i18n.ts - 19 + 21 @@ -3017,7 +3017,7 @@ Symbole libs/ui/src/lib/i18n.ts - 20 + 22 @@ -3025,7 +3025,7 @@ Étiquette libs/ui/src/lib/i18n.ts - 21 + 23 @@ -3033,7 +3033,7 @@ Cash libs/ui/src/lib/i18n.ts - 24 + 28 @@ -3041,7 +3041,7 @@ Marchandise libs/ui/src/lib/i18n.ts - 25 + 29 @@ -3049,7 +3049,7 @@ Capital libs/ui/src/lib/i18n.ts - 26 + 30 @@ -3057,7 +3057,7 @@ Revenu Fixe libs/ui/src/lib/i18n.ts - 27 + 31 @@ -3065,7 +3065,7 @@ Immobilier libs/ui/src/lib/i18n.ts - 28 + 32 @@ -3073,7 +3073,7 @@ Obligation libs/ui/src/lib/i18n.ts - 31 + 35 @@ -3081,7 +3081,7 @@ Cryptomonnaie libs/ui/src/lib/i18n.ts - 32 + 36 @@ -3089,7 +3089,7 @@ ETF libs/ui/src/lib/i18n.ts - 33 + 37 @@ -3097,7 +3097,7 @@ SICAV libs/ui/src/lib/i18n.ts - 34 + 38 @@ -3105,7 +3105,7 @@ Métal Précieux libs/ui/src/lib/i18n.ts - 35 + 39 @@ -3113,7 +3113,7 @@ Capital Propre libs/ui/src/lib/i18n.ts - 36 + 40 @@ -3121,7 +3121,7 @@ Action libs/ui/src/lib/i18n.ts - 37 + 41 @@ -3129,7 +3129,7 @@ Afrique libs/ui/src/lib/i18n.ts - 40 + 44 @@ -3137,7 +3137,7 @@ Asie libs/ui/src/lib/i18n.ts - 41 + 45 @@ -3145,7 +3145,7 @@ Europe libs/ui/src/lib/i18n.ts - 42 + 46 @@ -3153,7 +3153,7 @@ Amérique du Nord libs/ui/src/lib/i18n.ts - 43 + 47 @@ -3161,7 +3161,7 @@ Océanie libs/ui/src/lib/i18n.ts - 44 + 48 @@ -3169,7 +3169,7 @@ Amérique du Sud libs/ui/src/lib/i18n.ts - 45 + 49 @@ -3213,7 +3213,7 @@ Annuel apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 55 + 56 @@ -3269,7 +3269,7 @@ Retirement Provision libs/ui/src/lib/i18n.ts - 17 + 19 @@ -3277,7 +3277,7 @@ Satellite libs/ui/src/lib/i18n.ts - 18 + 20 @@ -3821,11 +3821,11 @@ Settings apps/client/src/app/pages/admin/admin-page-routing.module.ts - 31 + 30 apps/client/src/app/pages/admin/admin-page.component.ts - 35 + 36 @@ -3940,6 +3940,54 @@ 87 + + Current Streak + Current Streak + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 187 + + + + Longest Streak + Longest Streak + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 196 + + + + Months + Months + + libs/ui/src/lib/i18n.ts + 17 + + + + Years + Years + + libs/ui/src/lib/i18n.ts + 25 + + + + Month + Month + + libs/ui/src/lib/i18n.ts + 16 + + + + Year + Year + + libs/ui/src/lib/i18n.ts + 24 + + diff --git a/apps/client/src/locales/messages.it.xlf b/apps/client/src/locales/messages.it.xlf index e8e0170f9..7f54756ad 100644 --- a/apps/client/src/locales/messages.it.xlf +++ b/apps/client/src/locales/messages.it.xlf @@ -1307,11 +1307,11 @@ Informazioni su apps/client/src/app/pages/about/about-page-routing.module.ts - 36 + 35 apps/client/src/app/pages/about/about-page.component.ts - 56 + 51 apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts @@ -1347,7 +1347,7 @@ apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html - 180 + 183 apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html @@ -1359,11 +1359,11 @@ apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html - 192 + 195 apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html - 178 + 181 apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html @@ -1379,11 +1379,11 @@ apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html - 200 + 202 apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html - 245 + 252 apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html @@ -1399,7 +1399,7 @@ Registro delle modifiche & Licenza apps/client/src/app/pages/about/about-page.component.ts - 61 + 56 apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts @@ -1427,7 +1427,7 @@ Informativa sulla privacy apps/client/src/app/pages/about/about-page.component.ts - 66 + 61 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts @@ -1727,7 +1727,7 @@ Controllo amministrativo apps/client/src/app/pages/admin/admin-page-routing.module.ts - 26 + 19 @@ -1767,15 +1767,15 @@ Panoramica apps/client/src/app/pages/admin/admin-page.component.ts - 30 + 31 apps/client/src/app/pages/home/home-page.component.ts - 47 + 51 apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + 18 apps/client/src/app/pages/zen/zen-page.component.ts @@ -1787,11 +1787,11 @@ Mercati apps/client/src/app/pages/home/home-page-routing.module.ts - 33 + 32 apps/client/src/app/pages/home/home-page.component.ts - 77 + 66 apps/client/src/app/pages/markets/markets-page-routing.module.ts @@ -1807,7 +1807,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 61 + 65 @@ -1895,7 +1895,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 46 + 50 @@ -1967,11 +1967,11 @@ Partecipazioni apps/client/src/app/pages/home/home-page-routing.module.ts - 23 + 22 apps/client/src/app/pages/home/home-page.component.ts - 52 + 56 apps/client/src/app/pages/portfolio/holdings/holdings-page-routing.module.ts @@ -1979,7 +1979,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 51 + 55 apps/client/src/app/pages/zen/zen-page.component.ts @@ -2119,7 +2119,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 56 + 60 @@ -2155,7 +2155,7 @@ apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 48 + 47 @@ -2579,11 +2579,11 @@ Deposito apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 48 + 49 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 60 + 61 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts @@ -2595,7 +2595,7 @@ Mensile apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 54 + 55 @@ -2639,7 +2639,7 @@ apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 123 + 127 apps/client/src/app/pages/portfolio/holdings/holdings-page.component.ts @@ -2823,7 +2823,7 @@ Symbol libs/ui/src/lib/i18n.ts - 20 + 22 @@ -2831,7 +2831,7 @@ Tag libs/ui/src/lib/i18n.ts - 21 + 23 @@ -2839,7 +2839,7 @@ Cash libs/ui/src/lib/i18n.ts - 24 + 28 @@ -2847,7 +2847,7 @@ Commodity libs/ui/src/lib/i18n.ts - 25 + 29 @@ -2855,7 +2855,7 @@ Equity libs/ui/src/lib/i18n.ts - 26 + 30 @@ -2863,7 +2863,7 @@ Fixed Income libs/ui/src/lib/i18n.ts - 27 + 31 @@ -2871,7 +2871,7 @@ Real Estate libs/ui/src/lib/i18n.ts - 28 + 32 @@ -2879,7 +2879,7 @@ Bond libs/ui/src/lib/i18n.ts - 31 + 35 @@ -2887,7 +2887,7 @@ Cryptocurrency libs/ui/src/lib/i18n.ts - 32 + 36 @@ -2895,7 +2895,7 @@ ETF libs/ui/src/lib/i18n.ts - 33 + 37 @@ -2903,7 +2903,7 @@ Mutual Fund libs/ui/src/lib/i18n.ts - 34 + 38 @@ -2911,7 +2911,7 @@ Precious Metal libs/ui/src/lib/i18n.ts - 35 + 39 @@ -2919,7 +2919,7 @@ Private Equity libs/ui/src/lib/i18n.ts - 36 + 40 @@ -2927,7 +2927,7 @@ Stock libs/ui/src/lib/i18n.ts - 37 + 41 @@ -2943,7 +2943,7 @@ Other libs/ui/src/lib/i18n.ts - 16 + 18 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts @@ -2967,7 +2967,7 @@ North America libs/ui/src/lib/i18n.ts - 43 + 47 @@ -2975,7 +2975,7 @@ Africa libs/ui/src/lib/i18n.ts - 40 + 44 @@ -2983,7 +2983,7 @@ Asia libs/ui/src/lib/i18n.ts - 41 + 45 @@ -2991,7 +2991,7 @@ Europe libs/ui/src/lib/i18n.ts - 42 + 46 @@ -2999,7 +2999,7 @@ Oceania libs/ui/src/lib/i18n.ts - 44 + 48 @@ -3007,7 +3007,7 @@ South America libs/ui/src/lib/i18n.ts - 45 + 49 @@ -3091,7 +3091,7 @@ Dividend apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 43 + 44 @@ -3099,7 +3099,7 @@ Dividend Timeline apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 203 + 223 @@ -3143,7 +3143,7 @@ Securities libs/ui/src/lib/i18n.ts - 19 + 21 @@ -3151,11 +3151,11 @@ Jobs apps/client/src/app/pages/admin/admin-page-routing.module.ts - 17 + 21 apps/client/src/app/pages/admin/admin-page.component.ts - 43 + 46 @@ -3163,11 +3163,11 @@ Market Data apps/client/src/app/pages/admin/admin-page-routing.module.ts - 21 + 25 apps/client/src/app/pages/admin/admin-page.component.ts - 40 + 41 @@ -3175,11 +3175,11 @@ Users apps/client/src/app/pages/admin/admin-page-routing.module.ts - 36 + 35 apps/client/src/app/pages/admin/admin-page.component.ts - 44 + 51 @@ -3187,11 +3187,11 @@ Summary apps/client/src/app/pages/home/home-page-routing.module.ts - 28 + 27 apps/client/src/app/pages/home/home-page.component.ts - 57 + 61 @@ -3215,7 +3215,7 @@ Yearly apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 55 + 56 @@ -3271,7 +3271,7 @@ Retirement Provision libs/ui/src/lib/i18n.ts - 17 + 19 @@ -3279,7 +3279,7 @@ Satellite libs/ui/src/lib/i18n.ts - 18 + 20 @@ -3823,11 +3823,11 @@ Settings apps/client/src/app/pages/admin/admin-page-routing.module.ts - 31 + 30 apps/client/src/app/pages/admin/admin-page.component.ts - 35 + 36 @@ -3942,6 +3942,54 @@ 87 + + Current Streak + Current Streak + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 187 + + + + Longest Streak + Longest Streak + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 196 + + + + Months + Months + + libs/ui/src/lib/i18n.ts + 17 + + + + Years + Years + + libs/ui/src/lib/i18n.ts + 25 + + + + Month + Month + + libs/ui/src/lib/i18n.ts + 16 + + + + Year + Year + + libs/ui/src/lib/i18n.ts + 24 + + diff --git a/apps/client/src/locales/messages.nl.xlf b/apps/client/src/locales/messages.nl.xlf index ad0361529..c9d588c07 100644 --- a/apps/client/src/locales/messages.nl.xlf +++ b/apps/client/src/locales/messages.nl.xlf @@ -1306,11 +1306,11 @@ Over apps/client/src/app/pages/about/about-page-routing.module.ts - 36 + 35 apps/client/src/app/pages/about/about-page.component.ts - 56 + 51 apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts @@ -1346,7 +1346,7 @@ apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html - 180 + 183 apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html @@ -1358,11 +1358,11 @@ apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html - 192 + 195 apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html - 178 + 181 apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html @@ -1378,11 +1378,11 @@ apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html - 200 + 202 apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html - 245 + 252 apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html @@ -1398,7 +1398,7 @@ Changelog & licentie apps/client/src/app/pages/about/about-page.component.ts - 61 + 56 apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts @@ -1426,7 +1426,7 @@ Privacybeleid apps/client/src/app/pages/about/about-page.component.ts - 66 + 61 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts @@ -1726,7 +1726,7 @@ Beheerderscontrole apps/client/src/app/pages/admin/admin-page-routing.module.ts - 26 + 19 @@ -1766,15 +1766,15 @@ Overzicht apps/client/src/app/pages/admin/admin-page.component.ts - 30 + 31 apps/client/src/app/pages/home/home-page.component.ts - 47 + 51 apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + 18 apps/client/src/app/pages/zen/zen-page.component.ts @@ -1786,11 +1786,11 @@ Markten apps/client/src/app/pages/home/home-page-routing.module.ts - 33 + 32 apps/client/src/app/pages/home/home-page.component.ts - 77 + 66 apps/client/src/app/pages/markets/markets-page-routing.module.ts @@ -1806,7 +1806,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 61 + 65 @@ -1894,7 +1894,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 46 + 50 @@ -1966,11 +1966,11 @@ Participaties apps/client/src/app/pages/home/home-page-routing.module.ts - 23 + 22 apps/client/src/app/pages/home/home-page.component.ts - 52 + 56 apps/client/src/app/pages/portfolio/holdings/holdings-page-routing.module.ts @@ -1978,7 +1978,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 51 + 55 apps/client/src/app/pages/zen/zen-page.component.ts @@ -2118,7 +2118,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 56 + 60 @@ -2154,7 +2154,7 @@ apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 48 + 47 @@ -2578,11 +2578,11 @@ Storting apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 48 + 49 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 60 + 61 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts @@ -2594,7 +2594,7 @@ Maandelijks apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 54 + 55 @@ -2638,7 +2638,7 @@ apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 123 + 127 apps/client/src/app/pages/portfolio/holdings/holdings-page.component.ts @@ -2822,7 +2822,7 @@ Symbool libs/ui/src/lib/i18n.ts - 20 + 22 @@ -2830,7 +2830,7 @@ Label libs/ui/src/lib/i18n.ts - 21 + 23 @@ -2838,7 +2838,7 @@ Contant geld libs/ui/src/lib/i18n.ts - 24 + 28 @@ -2846,7 +2846,7 @@ Commodity libs/ui/src/lib/i18n.ts - 25 + 29 @@ -2854,7 +2854,7 @@ Equity libs/ui/src/lib/i18n.ts - 26 + 30 @@ -2862,7 +2862,7 @@ Vast inkomen libs/ui/src/lib/i18n.ts - 27 + 31 @@ -2870,7 +2870,7 @@ Vastgoed libs/ui/src/lib/i18n.ts - 28 + 32 @@ -2878,7 +2878,7 @@ Obligatie libs/ui/src/lib/i18n.ts - 31 + 35 @@ -2886,7 +2886,7 @@ Cryptovaluta libs/ui/src/lib/i18n.ts - 32 + 36 @@ -2894,7 +2894,7 @@ ETF libs/ui/src/lib/i18n.ts - 33 + 37 @@ -2902,7 +2902,7 @@ Beleggingsfonds libs/ui/src/lib/i18n.ts - 34 + 38 @@ -2910,7 +2910,7 @@ Edel metaal libs/ui/src/lib/i18n.ts - 35 + 39 @@ -2918,7 +2918,7 @@ Private equity libs/ui/src/lib/i18n.ts - 36 + 40 @@ -2926,7 +2926,7 @@ Aandeel libs/ui/src/lib/i18n.ts - 37 + 41 @@ -2942,7 +2942,7 @@ Anders libs/ui/src/lib/i18n.ts - 16 + 18 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts @@ -2966,7 +2966,7 @@ Noord Amerika libs/ui/src/lib/i18n.ts - 43 + 47 @@ -2974,7 +2974,7 @@ Afrika libs/ui/src/lib/i18n.ts - 40 + 44 @@ -2982,7 +2982,7 @@ Azië libs/ui/src/lib/i18n.ts - 41 + 45 @@ -2990,7 +2990,7 @@ Europa libs/ui/src/lib/i18n.ts - 42 + 46 @@ -2998,7 +2998,7 @@ Oceanië libs/ui/src/lib/i18n.ts - 44 + 48 @@ -3006,7 +3006,7 @@ Zuid Amerika libs/ui/src/lib/i18n.ts - 45 + 49 @@ -3090,7 +3090,7 @@ Dividend apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 43 + 44 @@ -3098,7 +3098,7 @@ Dividend tijdlijn apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 203 + 223 @@ -3142,7 +3142,7 @@ Effecten libs/ui/src/lib/i18n.ts - 19 + 21 @@ -3150,11 +3150,11 @@ Taken apps/client/src/app/pages/admin/admin-page-routing.module.ts - 17 + 21 apps/client/src/app/pages/admin/admin-page.component.ts - 43 + 46 @@ -3162,11 +3162,11 @@ Marktgegevens apps/client/src/app/pages/admin/admin-page-routing.module.ts - 21 + 25 apps/client/src/app/pages/admin/admin-page.component.ts - 40 + 41 @@ -3174,11 +3174,11 @@ Gebruikers apps/client/src/app/pages/admin/admin-page-routing.module.ts - 36 + 35 apps/client/src/app/pages/admin/admin-page.component.ts - 44 + 51 @@ -3186,11 +3186,11 @@ Samenvatting apps/client/src/app/pages/home/home-page-routing.module.ts - 28 + 27 apps/client/src/app/pages/home/home-page.component.ts - 57 + 61 @@ -3214,7 +3214,7 @@ Jaarlijks apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 55 + 56 @@ -3270,7 +3270,7 @@ Retirement Provision libs/ui/src/lib/i18n.ts - 17 + 19 @@ -3278,7 +3278,7 @@ Satellite libs/ui/src/lib/i18n.ts - 18 + 20 @@ -3822,11 +3822,11 @@ Settings apps/client/src/app/pages/admin/admin-page-routing.module.ts - 31 + 30 apps/client/src/app/pages/admin/admin-page.component.ts - 35 + 36 @@ -3941,6 +3941,54 @@ 87 + + Current Streak + Current Streak + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 187 + + + + Longest Streak + Longest Streak + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 196 + + + + Months + Months + + libs/ui/src/lib/i18n.ts + 17 + + + + Years + Years + + libs/ui/src/lib/i18n.ts + 25 + + + + Month + Month + + libs/ui/src/lib/i18n.ts + 16 + + + + Year + Year + + libs/ui/src/lib/i18n.ts + 24 + + diff --git a/apps/client/src/locales/messages.pt.xlf b/apps/client/src/locales/messages.pt.xlf index 5c259ce12..f95a608d9 100644 --- a/apps/client/src/locales/messages.pt.xlf +++ b/apps/client/src/locales/messages.pt.xlf @@ -854,7 +854,7 @@ apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 48 + 47 @@ -1130,11 +1130,11 @@ Deposit apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 48 + 49 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 60 + 61 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts @@ -1646,11 +1646,11 @@ About apps/client/src/app/pages/about/about-page-routing.module.ts - 36 + 35 apps/client/src/app/pages/about/about-page.component.ts - 56 + 51 apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts @@ -1662,7 +1662,7 @@ Changelog & License apps/client/src/app/pages/about/about-page.component.ts - 61 + 56 apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts @@ -1690,7 +1690,7 @@ Privacy Policy apps/client/src/app/pages/about/about-page.component.ts - 66 + 61 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts @@ -1850,11 +1850,11 @@ Users apps/client/src/app/pages/admin/admin-page-routing.module.ts - 36 + 35 apps/client/src/app/pages/admin/admin-page.component.ts - 44 + 51 @@ -2014,7 +2014,7 @@ Admin Control apps/client/src/app/pages/admin/admin-page-routing.module.ts - 26 + 19 @@ -2042,7 +2042,7 @@ apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html - 180 + 183 apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html @@ -2054,11 +2054,11 @@ apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html - 192 + 195 apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html - 178 + 181 apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html @@ -2074,11 +2074,11 @@ apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html - 200 + 202 apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html - 245 + 252 apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html @@ -2118,15 +2118,15 @@ Overview apps/client/src/app/pages/admin/admin-page.component.ts - 30 + 31 apps/client/src/app/pages/home/home-page.component.ts - 47 + 51 apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + 18 apps/client/src/app/pages/zen/zen-page.component.ts @@ -2138,11 +2138,11 @@ Markets apps/client/src/app/pages/home/home-page-routing.module.ts - 33 + 32 apps/client/src/app/pages/home/home-page.component.ts - 77 + 66 apps/client/src/app/pages/markets/markets-page-routing.module.ts @@ -2158,7 +2158,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 56 + 60 @@ -2182,11 +2182,11 @@ Jobs apps/client/src/app/pages/admin/admin-page-routing.module.ts - 17 + 21 apps/client/src/app/pages/admin/admin-page.component.ts - 43 + 46 @@ -2302,7 +2302,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 61 + 65 @@ -2314,7 +2314,7 @@ apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 123 + 127 apps/client/src/app/pages/portfolio/holdings/holdings-page.component.ts @@ -2450,7 +2450,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 46 + 50 @@ -2458,7 +2458,7 @@ Monthly apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 54 + 55 @@ -2546,11 +2546,11 @@ Holdings apps/client/src/app/pages/home/home-page-routing.module.ts - 23 + 22 apps/client/src/app/pages/home/home-page.component.ts - 52 + 56 apps/client/src/app/pages/portfolio/holdings/holdings-page-routing.module.ts @@ -2558,7 +2558,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 51 + 55 apps/client/src/app/pages/zen/zen-page.component.ts @@ -2874,7 +2874,7 @@ Other libs/ui/src/lib/i18n.ts - 16 + 18 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts @@ -2886,7 +2886,7 @@ Symbol libs/ui/src/lib/i18n.ts - 20 + 22 @@ -2894,7 +2894,7 @@ Tag libs/ui/src/lib/i18n.ts - 21 + 23 @@ -2902,7 +2902,7 @@ Cash libs/ui/src/lib/i18n.ts - 24 + 28 @@ -2910,7 +2910,7 @@ Commodity libs/ui/src/lib/i18n.ts - 25 + 29 @@ -2918,7 +2918,7 @@ Equity libs/ui/src/lib/i18n.ts - 26 + 30 @@ -2926,7 +2926,7 @@ Fixed Income libs/ui/src/lib/i18n.ts - 27 + 31 @@ -2934,7 +2934,7 @@ Real Estate libs/ui/src/lib/i18n.ts - 28 + 32 @@ -2942,7 +2942,7 @@ Bond libs/ui/src/lib/i18n.ts - 31 + 35 @@ -2950,7 +2950,7 @@ Cryptocurrency libs/ui/src/lib/i18n.ts - 32 + 36 @@ -2958,7 +2958,7 @@ ETF libs/ui/src/lib/i18n.ts - 33 + 37 @@ -2966,7 +2966,7 @@ Mutual Fund libs/ui/src/lib/i18n.ts - 34 + 38 @@ -2974,7 +2974,7 @@ Precious Metal libs/ui/src/lib/i18n.ts - 35 + 39 @@ -2982,7 +2982,7 @@ Private Equity libs/ui/src/lib/i18n.ts - 36 + 40 @@ -2990,7 +2990,7 @@ Stock libs/ui/src/lib/i18n.ts - 37 + 41 @@ -2998,7 +2998,7 @@ Africa libs/ui/src/lib/i18n.ts - 40 + 44 @@ -3006,7 +3006,7 @@ Asia libs/ui/src/lib/i18n.ts - 41 + 45 @@ -3014,7 +3014,7 @@ Europe libs/ui/src/lib/i18n.ts - 42 + 46 @@ -3022,7 +3022,7 @@ North America libs/ui/src/lib/i18n.ts - 43 + 47 @@ -3030,7 +3030,7 @@ Oceania libs/ui/src/lib/i18n.ts - 44 + 48 @@ -3038,7 +3038,7 @@ South America libs/ui/src/lib/i18n.ts - 45 + 49 @@ -3122,11 +3122,11 @@ Market Data apps/client/src/app/pages/admin/admin-page-routing.module.ts - 21 + 25 apps/client/src/app/pages/admin/admin-page.component.ts - 40 + 41 @@ -3134,11 +3134,11 @@ Summary apps/client/src/app/pages/home/home-page-routing.module.ts - 28 + 27 apps/client/src/app/pages/home/home-page.component.ts - 57 + 61 @@ -3166,7 +3166,7 @@ Dividend apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 43 + 44 @@ -3174,7 +3174,7 @@ Dividend Timeline apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 203 + 223 @@ -3190,7 +3190,7 @@ Securities libs/ui/src/lib/i18n.ts - 19 + 21 @@ -3214,7 +3214,7 @@ Yearly apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 55 + 56 @@ -3270,7 +3270,7 @@ Retirement Provision libs/ui/src/lib/i18n.ts - 17 + 19 @@ -3278,7 +3278,7 @@ Satellite libs/ui/src/lib/i18n.ts - 18 + 20 @@ -3822,11 +3822,11 @@ Settings apps/client/src/app/pages/admin/admin-page-routing.module.ts - 31 + 30 apps/client/src/app/pages/admin/admin-page.component.ts - 35 + 36 @@ -3941,6 +3941,54 @@ 87 + + Current Streak + Current Streak + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 187 + + + + Longest Streak + Longest Streak + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 196 + + + + Months + Months + + libs/ui/src/lib/i18n.ts + 17 + + + + Years + Years + + libs/ui/src/lib/i18n.ts + 25 + + + + Month + Month + + libs/ui/src/lib/i18n.ts + 16 + + + + Year + Year + + libs/ui/src/lib/i18n.ts + 24 + + diff --git a/apps/client/src/locales/messages.xlf b/apps/client/src/locales/messages.xlf index b6a511fbf..ad29804f5 100644 --- a/apps/client/src/locales/messages.xlf +++ b/apps/client/src/locales/messages.xlf @@ -1190,11 +1190,11 @@ About apps/client/src/app/pages/about/about-page-routing.module.ts - 36 + 35 apps/client/src/app/pages/about/about-page.component.ts - 56 + 51 apps/client/src/app/pages/about/overview/about-overview-page-routing.module.ts @@ -1228,7 +1228,7 @@ apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html - 180 + 183 apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html @@ -1240,11 +1240,11 @@ apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html - 192 + 195 apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html - 178 + 181 apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html @@ -1260,11 +1260,11 @@ apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html - 200 + 202 apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html - 245 + 252 apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html @@ -1279,7 +1279,7 @@ Changelog & License apps/client/src/app/pages/about/about-page.component.ts - 61 + 56 apps/client/src/app/pages/about/changelog/changelog-page-routing.module.ts @@ -1304,7 +1304,7 @@ Privacy Policy apps/client/src/app/pages/about/about-page.component.ts - 66 + 61 apps/client/src/app/pages/about/privacy-policy/privacy-policy-page-routing.module.ts @@ -1572,7 +1572,7 @@ Admin Control apps/client/src/app/pages/admin/admin-page-routing.module.ts - 26 + 19 @@ -1607,15 +1607,15 @@ Overview apps/client/src/app/pages/admin/admin-page.component.ts - 30 + 31 apps/client/src/app/pages/home/home-page.component.ts - 47 + 51 apps/client/src/app/pages/zen/zen-page-routing.module.ts - 19 + 18 apps/client/src/app/pages/zen/zen-page.component.ts @@ -1626,11 +1626,11 @@ Markets apps/client/src/app/pages/home/home-page-routing.module.ts - 33 + 32 apps/client/src/app/pages/home/home-page.component.ts - 77 + 66 apps/client/src/app/pages/markets/markets-page-routing.module.ts @@ -1645,7 +1645,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 61 + 65 @@ -1723,7 +1723,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 46 + 50 @@ -1786,11 +1786,11 @@ Holdings apps/client/src/app/pages/home/home-page-routing.module.ts - 23 + 22 apps/client/src/app/pages/home/home-page.component.ts - 52 + 56 apps/client/src/app/pages/portfolio/holdings/holdings-page-routing.module.ts @@ -1798,7 +1798,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 51 + 55 apps/client/src/app/pages/zen/zen-page.component.ts @@ -1927,7 +1927,7 @@ apps/client/src/app/pages/portfolio/portfolio-page.component.ts - 56 + 60 @@ -1959,7 +1959,7 @@ apps/client/src/app/pages/portfolio/portfolio-page-routing.module.ts - 48 + 47 @@ -2337,11 +2337,11 @@ Deposit apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 48 + 49 apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 60 + 61 libs/ui/src/lib/fire-calculator/fire-calculator.component.ts @@ -2352,7 +2352,7 @@ Monthly apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 54 + 55 @@ -2391,7 +2391,7 @@ apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 123 + 127 apps/client/src/app/pages/portfolio/holdings/holdings-page.component.ts @@ -2539,35 +2539,35 @@ Precious Metal libs/ui/src/lib/i18n.ts - 35 + 39 Tag libs/ui/src/lib/i18n.ts - 21 + 23 Equity libs/ui/src/lib/i18n.ts - 26 + 30 Real Estate libs/ui/src/lib/i18n.ts - 28 + 32 Cryptocurrency libs/ui/src/lib/i18n.ts - 32 + 36 @@ -2581,14 +2581,14 @@ Stock libs/ui/src/lib/i18n.ts - 37 + 41 Private Equity libs/ui/src/lib/i18n.ts - 36 + 40 @@ -2602,49 +2602,49 @@ Mutual Fund libs/ui/src/lib/i18n.ts - 34 + 38 Cash libs/ui/src/lib/i18n.ts - 24 + 28 Symbol libs/ui/src/lib/i18n.ts - 20 + 22 Commodity libs/ui/src/lib/i18n.ts - 25 + 29 Bond libs/ui/src/lib/i18n.ts - 31 + 35 ETF libs/ui/src/lib/i18n.ts - 33 + 37 Fixed Income libs/ui/src/lib/i18n.ts - 27 + 31 @@ -2669,7 +2669,7 @@ Other libs/ui/src/lib/i18n.ts - 16 + 18 libs/ui/src/lib/portfolio-proportion-chart/portfolio-proportion-chart.component.ts @@ -2680,42 +2680,42 @@ North America libs/ui/src/lib/i18n.ts - 43 + 47 Africa libs/ui/src/lib/i18n.ts - 40 + 44 Oceania libs/ui/src/lib/i18n.ts - 44 + 48 Asia libs/ui/src/lib/i18n.ts - 41 + 45 South America libs/ui/src/lib/i18n.ts - 45 + 49 Europe libs/ui/src/lib/i18n.ts - 42 + 46 @@ -2791,7 +2791,7 @@ Dividend Timeline apps/client/src/app/pages/portfolio/analysis/analysis-page.html - 203 + 223 @@ -2805,7 +2805,7 @@ Dividend apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 43 + 44 @@ -2819,7 +2819,7 @@ Securities libs/ui/src/lib/i18n.ts - 19 + 21 @@ -2844,44 +2844,44 @@ Jobs apps/client/src/app/pages/admin/admin-page-routing.module.ts - 17 + 21 apps/client/src/app/pages/admin/admin-page.component.ts - 43 + 46 Users apps/client/src/app/pages/admin/admin-page-routing.module.ts - 36 + 35 apps/client/src/app/pages/admin/admin-page.component.ts - 44 + 51 Summary apps/client/src/app/pages/home/home-page-routing.module.ts - 28 + 27 apps/client/src/app/pages/home/home-page.component.ts - 57 + 61 Market Data apps/client/src/app/pages/admin/admin-page-routing.module.ts - 21 + 25 apps/client/src/app/pages/admin/admin-page.component.ts - 40 + 41 @@ -2902,7 +2902,7 @@ Yearly apps/client/src/app/pages/portfolio/analysis/analysis-page.component.ts - 55 + 56 @@ -2944,14 +2944,14 @@ Satellite libs/ui/src/lib/i18n.ts - 18 + 20 Retirement Provision libs/ui/src/lib/i18n.ts - 17 + 19 @@ -3439,11 +3439,11 @@ Settings apps/client/src/app/pages/admin/admin-page-routing.module.ts - 31 + 30 apps/client/src/app/pages/admin/admin-page.component.ts - 35 + 36 @@ -3552,6 +3552,48 @@ 87 + + Current Streak + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 187 + + + + Months + + libs/ui/src/lib/i18n.ts + 17 + + + + Years + + libs/ui/src/lib/i18n.ts + 25 + + + + Longest Streak + + apps/client/src/app/pages/portfolio/analysis/analysis-page.html + 196 + + + + Year + + libs/ui/src/lib/i18n.ts + 24 + + + + Month + + libs/ui/src/lib/i18n.ts + 16 + + diff --git a/libs/common/src/lib/interfaces/portfolio-investments.interface.ts b/libs/common/src/lib/interfaces/portfolio-investments.interface.ts index 84ac0895f..70de5c7d6 100644 --- a/libs/common/src/lib/interfaces/portfolio-investments.interface.ts +++ b/libs/common/src/lib/interfaces/portfolio-investments.interface.ts @@ -2,4 +2,5 @@ import { InvestmentItem } from './investment-item.interface'; export interface PortfolioInvestments { investments: InvestmentItem[]; + streaks: { currentStreak: number; longestStreak: number }; } diff --git a/libs/ui/src/lib/i18n.ts b/libs/ui/src/lib/i18n.ts index f4b9893aa..5def3b749 100644 --- a/libs/ui/src/lib/i18n.ts +++ b/libs/ui/src/lib/i18n.ts @@ -13,12 +13,16 @@ const locales = { HIGHER_RISK: $localize`Higher Risk`, IMPORT_ACTIVITY_ERROR_IS_DUPLICATE: $localize`This activity already exists.`, LOWER_RISK: $localize`Lower Risk`, + MONTH: $localize`Month`, + MONTHS: $localize`Months`, OTHER: $localize`Other`, RETIREMENT_PROVISION: $localize`Retirement Provision`, SATELLITE: $localize`Satellite`, SECURITIES: $localize`Securities`, SYMBOL: $localize`Symbol`, TAG: $localize`Tag`, + YEAR: $localize`Year`, + YEARS: $localize`Years`, // enum AssetClass CASH: $localize`Cash`, diff --git a/libs/ui/src/lib/value/value.component.html b/libs/ui/src/lib/value/value.component.html index 35be5b808..d6b01be43 100644 --- a/libs/ui/src/lib/value/value.component.html +++ b/libs/ui/src/lib/value/value.component.html @@ -35,9 +35,15 @@ {{ currency }} + + {{ unit }} +
{{ currency }}
+
+ {{ unit }} +