/**
 * 顶部header
 */
Vue.component("certificate-bar-chart", {
    template: `
            <div :style="{'height': height+'px'}" ref="chart"></div>
    `,
    props: {
        data:{
            type:Array
        },
        height:{
            type:Number
        }
    },
    data() {
        return {
            option:{},

        }
    },
    mounted(){
        this.init()
    },
    methods: {
        init(){
            this.getChartData()
        },
        getChartData(){
            let chChart =  echarts.getInstanceByDom(this.$refs.chart)
            //品类金额占比 饼图
            if(chChart == null){
                chChart = echarts.init(this.$refs.chart);
            }
            this.echart(chChart,this.data)
        },
        echart(chChart,chartData){
            let newPromise = new Promise((resolve) => {
                resolve()
            })
            //然后异步执行echarts的初始化函数
            newPromise.then(() => {
                var value = []
                var text = []
                var total = 0
                var bgd = []
                for (let i = 0; i < chartData.length; i++) {
                    value.push(chartData[i].value)
                    text.push(chartData[i].text)
                    bgd.push(100)
                    total += chartData[i].value
                }

                var prop = []
                for (let j = 0; j < value.length; j++) {
                    if(total != 0) {
                        prop.push((value[j]/total * 100).toFixed(1))
                    } else {
                        prop.push(0.0)
                    }

                }

                this.option = {
                    grid: {
                        left: "5%",
                        right: "5%",
                        bottom: "-10%",
                        top: "2%",
                        containLabel: true,
                    },
                    xAxis: {
                        show: false,
                        type: "value",
                    },
                    yAxis: [
                        {
                            type: "category",
                            inverse: true,
                            axisLabel: {
                                show: true,
                                textStyle: {
                                    color: "#cbdaff",
                                    fontSize: "14",
                                },
                            },
                            splitLine: {
                                show: false,
                            },
                            axisTick: {
                                show: false,
                            },
                            axisLine: {
                                show: false,
                            },
                            data: text,
                        },
                        {
                            type: "category",
                            inverse: true,
                            axisTick: "none",
                            axisLine: "none",
                            show: true,
                            axisLabel: {
                                textStyle: {
                                    color: "#cbdaff",
                                    fontSize: "16",
                                },
                                formatter: function(params,i){
                                    var text = "{a|" + value[i] + "}{a|   "+ prop[i]+ "%}";
                                    return text;
                                },
                                rich: {
                                    a: {
                                        fontSize: '16px',
                                        color: "#cbdaff",
                                    },
                                },
                            },
                            data: prop,
                        },
                    ],
                    series: [
                        {
                            type: "bar",
                            zlevel: 1,
                            itemStyle: {
                                normal: {
                                    color: "#6ab9fe",
                                },
                            },
                            barWidth: 8,
                            data: prop,
                        },
                        {
                            type: "bar",
                            barWidth: 8,
                            barGap: "-100%",
                            data: bgd,
                            itemStyle: {
                                normal: {
                                    color: "rgba(24,31,68,1)",
                                },
                            },
                        },
                    ],
                };

                chChart.setOption(this.option);
                window.onresize = chChart.resize;
            })
        },
    },
    watch:{
        data: function (n,o) {
            this.getChartData(this.data)
        }
    }

})