/**
 * 顶部header
 */
Vue.component("project-overview-charts", {
    template: `
        <div style="position: relative">
            <div :style="{'height': height+'px'}" ref="warningPieChart">

            </div>
            <div class="chart-gif chart-overview-gif" style="top:92px"  v-if="typedata.length > 0"></div>
        </div>

    `,
    props: {
        typedata:{
            type: Array,
        },
        height:{
            type:Number
        },
        text:{
            type:String
        }
    },
    data() {
        return {
            active:0,
            option:{}
        }
    },
    mounted(){
        this.init()
    },
    methods: {
        init(){
            this.getChartData()
        },
        getChartData(){
            //品类金额占比 饼图
            var chChartPie = echarts.init(this.$refs.warningPieChart);
            this.echartPie(chChartPie,this.typedata)
        },
        echartPie(chChart,chartData){
            var that = this
            let newPromise = new Promise((resolve) => {
                resolve()
            })

            //然后异步执行echarts的初始化函数
            newPromise.then(() => {
                var total_datas = 0;
                var data = [];
                var legendData = [];
                var color = ['#4974ff','#52aef7','#6863d7','#1d5d89','#20e6ff','#67feef']
                for (let i = 0; i <chartData.length ; i++) {
                    total_datas += Number(chartData[i].value);
                    legendData.push(chartData[i].name)
                    data.push(
                        {
                            value: chartData[i].value,
                            name:  chartData[i].name,
                            itemStyle: {
                                normal: {
                                    //颜色渐变
                                    color: color[i]
                                },
                            },
                        },
                    )
                }
                /*     let total = chartData.reduce((a, b) => {
                         return a + b.value;
                     }, 0);*/

                let legendOption = {
                    top: "center",
                    orient: "vertical",
                    icon: "circle",
                    itemWidth: 12,
                    itemGap: 8,
                    textStyle: {
                        fontSize: 14,
                        rich: {
                            name: {
                                color: "#c3dbfd",
                                padding: [10, 5, 20, 5],
                                // align: 'right'
                                // width: 60
                            },
                            percent: {
                                color: "#18DB9F",
                                fontSize: 16,
                                padding: [0, 5, 0, 5],
                                // align: 'right'
                            },
                        },
                    },
                    formatter: function (name) {
                        let res = chartData.filter((v) => v.name === name);
                        let percent = total_datas == 0 ?0:(((res[0].value * 100) / total_datas).toFixed(1));
                        return "{name| " + name + "}\n{percent|" + res[0].value + "}{percent|" + percent + "%}";
                    },
                };
                this.option =  {
                    title: {
                        text: total_datas,
                        subtext: this.text,
                        x: "85",
                        y: "120",
                        textStyle: {
                            color: "#0dd2fd",
                            fontSize: 24,
                            fontWeight: "bold",
                            align: "center",
                            width: "200px",
                        },
                        subtextStyle: {
                            color: "#a5b5f0",
                            fontSize: 12,
                            align: "center",
                        },
                    },
                    tooltip: {
                        show: false,
                        trigger: 'item',
                        formatter: "{b} <br/>{c} ({d}%)"
                    },
                    legend: [
                        {
                            right: 10,
                            data: legendData,
                            align: "left",
                            ...legendOption,
                        },
                    ],

                    series: [
                        {
                            name: "品类金额占比",
                            type: "pie",
                            center: ["25%", "50%"],
                            radius: ["46%", "63%"],
                            data: data,
                            label: {
                                show: false,
                            },
                            itemStyle: {
                                normal: {
                                    borderWidth: 5,
                                    borderColor: "#051a36"
                                }
                            },

                        },
                        {
                            name: "外边框",
                            type: "pie",
                            clockWise: false, //顺时加载
                            hoverAnimation: false, //鼠标移入变大
                            center: ["25%", "50%"],
                            radius: ["70%", "70%"],
                            label: {
                                normal: {
                                    show: false,
                                },
                            },
                            data: [
                                {
                                    value: 9,
                                    name: "",
                                    itemStyle: {
                                        normal: {
                                            borderWidth: 3,
                                            borderColor: "#152c65",
                                        },
                                    },
                                },
                            ],
                        },
                    ],
                }
                chChart.setOption(this.option);
                window.onresize = chChart.resize;

                chChart.off('click')

                chChart.on('click', function (params) {
                    for(let i= 0;i<chartData.length;i++){
                        if(params.name == chartData[i].name){
                            that.$emit('ledger',chartData[i]);
                            break
                        }
                    }
                })
            })
        },
    },
    watch:{
        typedata: function (n,o) {
            this.init()
        }
    }

})