|
|
@ -16,8 +16,8 @@ import { |
|
|
Input, |
|
|
Input, |
|
|
OnChanges, |
|
|
OnChanges, |
|
|
OnDestroy, |
|
|
OnDestroy, |
|
|
ViewChild, |
|
|
output, |
|
|
output |
|
|
viewChild |
|
|
} from '@angular/core'; |
|
|
} from '@angular/core'; |
|
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; |
|
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; |
|
|
import { |
|
|
import { |
|
|
@ -90,8 +90,6 @@ export class GfFireCalculatorComponent implements OnChanges, OnDestroy { |
|
|
@Input() retirementDate: Date; |
|
|
@Input() retirementDate: Date; |
|
|
@Input() savingsRate = 0; |
|
|
@Input() savingsRate = 0; |
|
|
|
|
|
|
|
|
@ViewChild('chartCanvas') chartCanvas: ElementRef<HTMLCanvasElement>; |
|
|
|
|
|
|
|
|
|
|
|
public calculatorForm = this.formBuilder.group({ |
|
|
public calculatorForm = this.formBuilder.group({ |
|
|
annualInterestRate: new FormControl<number | null>(null), |
|
|
annualInterestRate: new FormControl<number | null>(null), |
|
|
paymentPerPeriod: new FormControl<number | null>(null), |
|
|
paymentPerPeriod: new FormControl<number | null>(null), |
|
|
@ -111,6 +109,8 @@ export class GfFireCalculatorComponent implements OnChanges, OnDestroy { |
|
|
protected readonly retirementDateChanged = output<Date>(); |
|
|
protected readonly retirementDateChanged = output<Date>(); |
|
|
protected readonly savingsRateChanged = output<number>(); |
|
|
protected readonly savingsRateChanged = output<number>(); |
|
|
|
|
|
|
|
|
|
|
|
private readonly chartCanvas = |
|
|
|
|
|
viewChild.required<ElementRef<HTMLCanvasElement>>('chartCanvas'); |
|
|
private readonly CONTRIBUTION_PERIOD = 12; |
|
|
private readonly CONTRIBUTION_PERIOD = 12; |
|
|
private readonly DEFAULT_RETIREMENT_DATE = startOfMonth( |
|
|
private readonly DEFAULT_RETIREMENT_DATE = startOfMonth( |
|
|
addYears(new Date(), 10) |
|
|
addYears(new Date(), 10) |
|
|
@ -272,7 +272,7 @@ export class GfFireCalculatorComponent implements OnChanges, OnDestroy { |
|
|
|
|
|
|
|
|
const chartData = this.getChartData(); |
|
|
const chartData = this.getChartData(); |
|
|
|
|
|
|
|
|
if (this.chartCanvas) { |
|
|
if (this.chartCanvas()) { |
|
|
if (this.chart) { |
|
|
if (this.chart) { |
|
|
this.chart.data.labels = chartData.labels; |
|
|
this.chart.data.labels = chartData.labels; |
|
|
|
|
|
|
|
|
@ -282,7 +282,7 @@ export class GfFireCalculatorComponent implements OnChanges, OnDestroy { |
|
|
|
|
|
|
|
|
this.chart.update(); |
|
|
this.chart.update(); |
|
|
} else { |
|
|
} else { |
|
|
this.chart = new Chart<'bar'>(this.chartCanvas.nativeElement, { |
|
|
this.chart = new Chart<'bar'>(this.chartCanvas().nativeElement, { |
|
|
data: chartData, |
|
|
data: chartData, |
|
|
options: { |
|
|
options: { |
|
|
plugins: { |
|
|
plugins: { |
|
|
|