import * as echarts from 'echarts';
import elementResizeDetectorMaker from 'element-resize-detector';
export default {
  props: {
    id: {
      type: String,
      default: 'bar'
    },
    data: {
      type: Array,
      default: function () {
        return [
          {
            name: '1月',
            value: '10'
          },
          {
            name: '2月',
            value: '19'
          }
        ];
      }
    },

    unit: {
      type: String,
      default: '单位：万元'
    },
    color: {
      type: Array,
      default: function () {
        return ['rgba(15, 252, 252, 1)', 'rgba(15, 252, 252, 0.04)']
      }
    }
  },
  data () {
    return {
      icon: require('./icon.png'),
      chart: null
    };
  },
  mounted () {
    this.initChart();
  },
  computed: {
  },
  methods: {
    // 设置监听器 页面尺寸变化重新绘制图表
    initResizeCallBack () {
      const erd = elementResizeDetectorMaker();
      erd.listenTo(document.getElementById(this.id), () => {
        this.$nextTick(() => {
          this.chart.resize();
        });
      });
    },
    initChart () {
      this.chart = echarts.init(document.getElementById(this.id));
      this.chartSetOption();
    },
    chartSetOption () {
      let xAxisData = [];
      let data = [];
      this.data.forEach(item => {
        xAxisData.push(item.name)
        data.push(item.value)
      });
      const option = {
        color: ["#3398DB"],
        tooltip: {
          show: true,
          trigger: "item",
        },
        legend: {
          data: ["直接访问", "背景"],
          show: false,
        },
        grid: {
          left: "2%",
          right: "0%",
          bottom: "5%",
          top: "15%",
          containLabel: true,
          z: 22,
        },
        xAxis: [
          {
            splitArea: {
              show: false,
              areaStyle: {
                color: ['RGBA(13, 31, 64, 1)']
              }
            },
            splitLine: {
              show: false,
              lineStyle: {
                color: ['rgba(18, 40, 83, 1)'],
                width: 100
              }
            },
            type: "category",
            gridIndex: 0,
            data: xAxisData,
            axisTick: {
              alignWithLabel: true,
            },
            axisLine: {
              lineStyle: {
                color: "#0c3b71",
              },
            },
            axisLabel: {
              show: true,
              color: 'rgba(185, 211, 235, 1)'
            },
          },
        ],
        yAxis: [
          {
            type: "value",
            name: this.unit,
            nameTextStyle: {
              color: 'rgba(185, 211, 235, 1)'
            },
            axisLabel: {
              formatter: "{value}",
              textStyle: {
                color: "rgba(185, 211, 235, 1)",
              },
            },
            axisLine: {
              lineStyle: {
                color: "#27b4c2",
              },
            },
            axisTick: {
              show: false,
            },
            splitLine: {
              show: true,
              lineStyle: {
                color: "#11366e",
              },
            },
          },
          {
            type: "value",
            gridIndex: 0,
            max: 100,
            splitNumber: 12,
            splitLine: {
              show: false,
            },
            axisLine: {
              show: false,
            },
            axisTick: {
              show: false,
            },
            axisLabel: {
              show: false,
            }
          },
        ],
        series: [
          {
            name: "合格率",
            type: "bar",
            barWidth: 2,
            xAxisIndex: 0,
            yAxisIndex: 0,
            showBackground: false,
            backgroundStyle: {
              shadowBlur: 10,
              color: 'rgba(18, 40, 83, 1)'
            },
            renderItem: function (params, api) {
              //获取对应类目的axisTick中心点坐标
              var start = api.coord([api.value(0)]);
              //通过坐标系的宽度和类目数，计算单个类目的背景
              var width = (params.coordSys.width / 7) * 0.6;
              return {
                type: 'rect',
                shape: {
                  // 相对左上角坐标
                  x: start[0] - width / 2,
                  y: params.coordSys.y,
                  width: width,
                  height: params.coordSys.height,
                },
                style: api.style()
              };
            },
            itemStyle: {
              normal: {
                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
                  {
                    offset: 0,
                    color: this.color[0],
                  },
                  {
                    offset: 1,
                    color: this.color[1],
                  },
                ]),
              },
            },
            data: data,
            zlevel: 11,
          },
          {
            type: "pictorialBar",
            symbol: 'image://data:' + this.icon,
            symbolSize: [20, 20],
            symbolOffset: [0, -10],
            barWidth: 20,
            symbolPosition: 'end',
            xAxisIndex: 0,
            yAxisIndex: 0,
            showBackground: false,
            backgroundStyle: {
              shadowBlur: 10,
              color: 'rgba(18, 40, 83, 1)'
            },
            data: data,
            zlevel: 11,
          }

        ],
      };;
      this.chart.setOption(option);
      this.initResizeCallBack();

    }
  }
};
