import { Component, Input, OnChanges, inject } from '@angular/core';
//import { ChartDataset } from 'chart.js';
import { BaseChartDirective } from 'ng2-charts';

import { UtilitiesService } from '@services';
import { DoughnutConfig } from '@models';

@Component({
    selector: 'app-pie-chart',
    imports: [BaseChartDirective],
    templateUrl: './pie-chart.component.html',
})
export class PieChartComponent implements OnChanges {
    private _utilitiesService = inject(UtilitiesService);

    public displayCharts = false;
    public chartConfig: DoughnutConfig = this._utilitiesService.getDoughnutChartConfig();

    @Input() names: string[] = [];
    @Input() values: number[] = [];
    @Input() headers: string[] = [];
    @Input() colors: {
        backgroundColor: string[];
        borderColor: string[];
    } = {
        backgroundColor: this._utilitiesService.getSeriesColors(0.8, 'all'),
        borderColor: this._utilitiesService.getSeriesColors(1, 'all'),
    };
    @Input() legend: boolean = false;

    ngOnChanges() {
        this._loadDoughnutChart();
    }

    private _loadDoughnutChart(): void {
        this.chartConfig.doughnutChartLabels = [...this.names];
        this.chartConfig.doughnutChartDatasets[0].data = [...this.values];
        this.chartConfig.doughnutChartDatasets[0].label = 'Nombre total de sauts';
        this.chartConfig.doughnutChartDatasets[0].backgroundColor = this.colors.backgroundColor;
        this.chartConfig.doughnutChartDatasets[0].borderColor = this.colors.borderColor;
        this.chartConfig.doughnutChartDatasets[0].borderWidth = 2;
        this.chartConfig.doughnutChartLegend = this.legend;
        this.displayCharts = true;
    }

    /*private _loadDoughnutChart(): void {
        const dataset: ChartDataset<'doughnut'> = {
            data: [...this.values],
            label: 'Nombre total de sauts',
            backgroundColor: this._utilitiesService.getSeriesColors(0.8),
            borderColor: this._utilitiesService.getSeriesColors(1),
            borderWidth: 1
        };
        this.chartConfig.doughnutChartLabels = [...this.names];
        this.chartConfig.doughnutChartDatasets!.push(dataset);
        this.displayCharts = true;
    }*/
}
