|
|
@ -87,7 +87,8 @@ export class GfAnalysisPageComponent implements OnInit { |
|
|
protected isLoadingInvestmentChart: boolean; |
|
|
protected isLoadingInvestmentChart: boolean; |
|
|
protected isLoadingInvestmentTimelineChart: boolean; |
|
|
protected isLoadingInvestmentTimelineChart: boolean; |
|
|
protected isLoadingPortfolioPrompt: boolean; |
|
|
protected isLoadingPortfolioPrompt: boolean; |
|
|
protected readonly mode = signal<GroupBy>('month'); |
|
|
protected readonly dividendGroupBy = signal<GroupBy>('month'); |
|
|
|
|
|
protected readonly investmentGroupBy = signal<GroupBy>('month'); |
|
|
protected readonly modeOptions: ToggleOption[] = [ |
|
|
protected readonly modeOptions: ToggleOption[] = [ |
|
|
{ label: $localize`Monthly`, value: 'month' }, |
|
|
{ label: $localize`Monthly`, value: 'month' }, |
|
|
{ label: $localize`Yearly`, value: 'year' } |
|
|
{ label: $localize`Yearly`, value: 'year' } |
|
|
@ -137,7 +138,7 @@ export class GfAnalysisPageComponent implements OnInit { |
|
|
return undefined; |
|
|
return undefined; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
return this.mode() === 'year' |
|
|
return this.investmentGroupBy() === 'year' |
|
|
? savingsRatePerMonth * 12 |
|
|
? savingsRatePerMonth * 12 |
|
|
: savingsRatePerMonth; |
|
|
: savingsRatePerMonth; |
|
|
} |
|
|
} |
|
|
@ -186,9 +187,14 @@ export class GfAnalysisPageComponent implements OnInit { |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
protected onChangeGroupBy(aMode: GroupBy) { |
|
|
protected onChangeDividendGroupBy(aMode: GroupBy) { |
|
|
this.mode.set(aMode); |
|
|
this.dividendGroupBy.set(aMode); |
|
|
this.fetchDividendsAndInvestments(); |
|
|
this.fetchDividends(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
protected onChangeInvestmentGroupBy(aMode: GroupBy) { |
|
|
|
|
|
this.investmentGroupBy.set(aMode); |
|
|
|
|
|
this.fetchInvestments(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
protected onCopyPromptToClipboard(mode: AiPromptMode) { |
|
|
protected onCopyPromptToClipboard(mode: AiPromptMode) { |
|
|
@ -232,14 +238,13 @@ export class GfAnalysisPageComponent implements OnInit { |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private fetchDividendsAndInvestments() { |
|
|
private fetchDividends() { |
|
|
this.isLoadingDividendTimelineChart = true; |
|
|
this.isLoadingDividendTimelineChart = true; |
|
|
this.isLoadingInvestmentTimelineChart = true; |
|
|
|
|
|
|
|
|
|
|
|
this.dataService |
|
|
this.dataService |
|
|
.fetchDividends({ |
|
|
.fetchDividends({ |
|
|
filters: this.userService.getFilters(), |
|
|
filters: this.userService.getFilters(), |
|
|
groupBy: this.mode(), |
|
|
groupBy: this.dividendGroupBy(), |
|
|
range: this.user?.settings?.dateRange ?? DEFAULT_DATE_RANGE |
|
|
range: this.user?.settings?.dateRange ?? DEFAULT_DATE_RANGE |
|
|
}) |
|
|
}) |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
@ -250,11 +255,15 @@ export class GfAnalysisPageComponent implements OnInit { |
|
|
|
|
|
|
|
|
this.changeDetectorRef.markForCheck(); |
|
|
this.changeDetectorRef.markForCheck(); |
|
|
}); |
|
|
}); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private fetchInvestments() { |
|
|
|
|
|
this.isLoadingInvestmentTimelineChart = true; |
|
|
|
|
|
|
|
|
this.dataService |
|
|
this.dataService |
|
|
.fetchInvestments({ |
|
|
.fetchInvestments({ |
|
|
filters: this.userService.getFilters(), |
|
|
filters: this.userService.getFilters(), |
|
|
groupBy: this.mode(), |
|
|
groupBy: this.investmentGroupBy(), |
|
|
range: this.user?.settings?.dateRange ?? DEFAULT_DATE_RANGE |
|
|
range: this.user?.settings?.dateRange ?? DEFAULT_DATE_RANGE |
|
|
}) |
|
|
}) |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
.pipe(takeUntilDestroyed(this.destroyRef)) |
|
|
@ -262,7 +271,7 @@ export class GfAnalysisPageComponent implements OnInit { |
|
|
this.investmentsByGroup = investments; |
|
|
this.investmentsByGroup = investments; |
|
|
this.streaks = streaks; |
|
|
this.streaks = streaks; |
|
|
this.unitCurrentStreak = |
|
|
this.unitCurrentStreak = |
|
|
this.mode() === 'year' |
|
|
this.investmentGroupBy() === 'year' |
|
|
? this.streaks?.currentStreak === 1 |
|
|
? this.streaks?.currentStreak === 1 |
|
|
? translate('YEAR') |
|
|
? translate('YEAR') |
|
|
: translate('YEARS') |
|
|
: translate('YEARS') |
|
|
@ -270,7 +279,7 @@ export class GfAnalysisPageComponent implements OnInit { |
|
|
? translate('MONTH') |
|
|
? translate('MONTH') |
|
|
: translate('MONTHS'); |
|
|
: translate('MONTHS'); |
|
|
this.unitLongestStreak = |
|
|
this.unitLongestStreak = |
|
|
this.mode() === 'year' |
|
|
this.investmentGroupBy() === 'year' |
|
|
? this.streaks?.longestStreak === 1 |
|
|
? this.streaks?.longestStreak === 1 |
|
|
? translate('YEAR') |
|
|
? translate('YEAR') |
|
|
: translate('YEARS') |
|
|
: translate('YEARS') |
|
|
@ -381,7 +390,8 @@ export class GfAnalysisPageComponent implements OnInit { |
|
|
this.changeDetectorRef.markForCheck(); |
|
|
this.changeDetectorRef.markForCheck(); |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
this.fetchDividendsAndInvestments(); |
|
|
this.fetchDividends(); |
|
|
|
|
|
this.fetchInvestments(); |
|
|
this.changeDetectorRef.markForCheck(); |
|
|
this.changeDetectorRef.markForCheck(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|