<template>
  <div 
    id="analysischartLine"
    style="width: 100%;height: 100%;"
  ></div>
</template>
<script>
import * as echarts from 'echarts'
import resize from '@/utils/chartMixins/resize'
export default {
  name: "LineChart",
  mixins: [resize],
  data() {
    return {
      chartDom: '',
      chart: '',
      chartHeight: this.tableHeight(214) - 70
    }
  },
  props: {
    chartData: {
      type: Array,
      required: true,
      default: () => {
        return []
      }
    }
  },
  watch: {
    chartData: function () {
      this.getChart()
    }
  },
  mounted() {
    window.addEventListener('resize', () => {
      this.chartHeight = this.tableHeight(214) - 70
    })
  },
  methods: {
    getChart() {
      if (
        this.chart !== null &&
        this.chart !== '' &&
        this.chart !== undefined
      ) {
        this.chart.dispose() // 页面多次刷新会出现警告，Dom已经初始化了一个实例，这是销毁实例
      }
      this.chartDom = document.getElementById('analysischartLine')
      this.chart = echarts.init(this.chartDom)
      if (this.chartData.length === 0) {
        return false
      }
      let xData = []
      let arr = this.chartData[0].type
      let keys = Object.keys(this.chartData[0])
      let yData = []
      for (let j = 0; j < arr.length; j++) {
        for (let k = 0; k < keys.length; k++) {
          if (keys[k].indexOf(arr[j]+'_上年同期') > -1 || keys[k].indexOf(arr[j]+'_能源消耗') > -1) {
            let obj = {
              name: '',
              type: 'line',
              stack: 'Total',
              data: []
            }
            obj.name = keys[k]
            yData.push(obj)
          }
        }
      }
      for (let i = 0; i < this.chartData.length; i++) {
        xData.push(this.chartData[i].time)
        for (let p = 0; p < yData.length; p++) {
          yData[p].data.push(this.chartData[i][ yData[p].name])
        }
      }
      var option = {
        legend: {
          data: keys
        },
        tooltip: {
          trigger: 'axis'
        },
        grid: {
          left: '3%',
          right: '4%',
          bottom: '3%',
          containLabel: true
        },
        xAxis: {
          type: 'category',
          data: xData
        },
        yAxis: {
          type: 'value'
        },
        series: yData
      };

      option && this.chart.setOption(option);
    }
  }
}
</script>