import { jsx as _jsx } from "react/jsx-runtime";
import * as echarts from 'echarts';
import { useRef, useEffect } from 'react';
import { isEmpty, merge } from 'lodash';
import { LOADING_COLOR } from './type';
import { useSize } from 'ahooks';
export function ChartsGauge(props) {
    const { series, loading, style, options, onDownCallBack, loadingType = { color: LOADING_COLOR }, } = props;
    const contentEle = useRef();
    const chartRef = useRef();
    const defaultOptions = merge({
        series: [
            {
                type: 'gauge',
                startAngle: 180,
                endAngle: 0,
                min: 0,
                max: 100,
                splitNumber: 5,
                radius: '100%',
                center: ['50%', '90%'],
                itemStyle: {
                    borderWidth: 10,
                    shadowBlur: 0,
                    shadowOffsetX: 0,
                    shadowOffsetY: 0,
                },
                progress: {
                    show: true,
                    width: 5,
                },
                pointer: {
                    length: '65%',
                    width: 5,
                },
                axisLabel: {
                    color: '#999',
                    fontSize: 12,
                },
                axisLine: {
                    roundCap: true,
                    lineStyle: {
                        width: 5,
                    },
                },
                axisTick: {
                    splitNumber: 1,
                    lineStyle: {
                        width: 1,
                        color: '#999',
                    },
                },
                splitLine: {
                    length: 10,
                    lineStyle: {
                        width: 1,
                        color: '#999',
                    },
                },
                title: {
                    show: false,
                },
                detail: {
                    show: false,
                },
            },
        ],
    }, options);
    const responsive = useSize(contentEle.current);
    useEffect(() => {
        var _a;
        (_a = chartRef.current) === null || _a === void 0 ? void 0 : _a.resize();
    }, [JSON.stringify(responsive)]);
    useEffect(() => {
        if (!Boolean(chartRef.current)) {
            chartRef.current = echarts.init(contentEle.current);
        }
        if (loading) {
            chartRef.current.showLoading(Object.assign({ text: '' }, loadingType));
            return;
        }
        else {
            chartRef.current.hideLoading();
        }
        if (!isEmpty(series)) {
            const options = Object.assign({}, defaultOptions);
            options.series[0].data = series[0].data;
            chartRef.current.setOption(options);
            if (onDownCallBack) {
                chartRef.current.on('click', function (params) {
                    onDownCallBack(chartRef.current, params, options);
                });
            }
        }
    }, [series, loading]);
    return (_jsx("div", { ref: contentEle, style: Object.assign({ width: '100%', height: '100%' }, style) }));
}