import { Component, Input } from '@angular/core'; import { CommonModule } from '@angular/common'; import { NgChartsModule } from 'ng2-charts'; import { ChartConfiguration, ChartData, } from 'chart.js'; import { SportGoal, Activity } from '../../../core/models/sport-goal.model'; import { ProgressCardComponent } from '../../../shared/components/progress-card/progress-card.component'; import { ChartCardComponent } from '../../../shared/components/chart-card/chart-card.component'; @Component({ selector: 'app-sport-section', standalone: true, imports: [CommonModule, NgChartsModule, ProgressCardComponent, ChartCardComponent], template: `
{{ emoji }}

{{ title }}

{{ description }}

Progress

{{ goal.percentage.toFixed(1) }}% Actual

Optimal: {{ idealProgress.toFixed(1) }}%

`, }) export class SportSectionComponent { @Input() title = ''; @Input() emoji = ''; @Input() description = ''; @Input() goal!: SportGoal; @Input() estimatedCompletion: string | null = null; @Input() dailyKmNeeded: number | null = null; @Input() currentDailyAvg: number | null = null; @Input() optimalDailyAvg: number | null = null; @Input() daysAheadOrBehind: number | null = null; @Input() recentActivities: Activity[] | null = null; @Input() idealProgress = 0; @Input() doughnutData!: ChartData<'doughnut'>; @Input() chartData!: ChartData<'line'>; @Input() doughnutOptions!: ChartConfiguration<'doughnut'>['options']; @Input() chartOptions!: ChartConfiguration['options']; @Input() gradientClass = ''; @Input() borderClass = ''; @Input() borderColorClass = ''; readonly Math = Math; formatDistance(km: number): string { return km.toFixed(2); } }