import { sumData, streetLightMain, colors } from '../main';

export function drawChart(title, sections, real, ppto){

    try{
      sections.push("Acumulado");
  
      var minReal = Math.min.apply(Math, real);
      var maxReal = Math.max.apply(Math, real);
      var minPpto = Math.min.apply(Math, ppto);
      var maxPpto = Math.max.apply(Math, ppto);
  
      var arrMin = [minReal, minPpto];
      var arrMax = [maxReal, maxPpto]; 
      var minKpis = Math.min.apply(Math, arrMin);
      var maxKpis = Math.max.apply(Math, arrMax);
  
      var options = {
        chart: {
          height: 500
        },
        title: {
          text: title
        },
        tooltip: {
          shared: true,
          enabled: true,
        },
        xAxis: {
          categories: sections
        },
        yAxis: [{
          // min: 0,
          // max: 100,
          title: {
            text: '%',
          },
          plotLines: [{
            zIndex: 1,
            color: 'red',
            width: 2,
            value: 0,
            label: {
              text: "Meta"
            }
          }],
        }, {
          // min: 0,
          // max: 10000,
          title: { text: 'Acumulado' },
          opposite: true
        }],
        exporting: {
          enabled: false
        },
        credits: {
            enabled: false
        },
        series: [{
          color: colors.t,
          type: 'spline',
          name: 'Real',
          data: real,
          yAxis: 0
        }, {
          color: colors.g,
          type: 'spline',
          name: 'Ppto',
          data: ppto,
          yAxis: 0
        }, {
          type: 'column',
          name: 'Acumulado',
          dataLabels: {
              enabled: false
          },
          yAxis: 1
        }]
      }
  
      // Real
      options.series[0].data = real;
      
      // Presupuesto
      options.series[1].data = ppto;
      var sumPpto = sumData(ppto);
      var meta = sumPpto;
  
      // Meta
      options.yAxis[0].plotLines[0].value = sumPpto/4;
  
      // Acumulado
      options.series[2].data = [sumData(real)]; 
      var acum = options.series[2].data; // Valor acumulado
      options.series[2].color = streetLightMain(acum, meta); // Color
      options.series[2].pointStart = sections.length-1; // Punto que empieza el acumulado
  
      // Limites
      options.yAxis[0].min = 0;
      options.yAxis[0].max = maxKpis;
      options.yAxis[1].min = 0;
      options.yAxis[1].max = acum;

      return options;

    } catch(err) {

      alert("Error al crear el grafico. " + err);
      return null;
    }
  
  }
  