import _ from 'lodash';
import {BISplitLineColor, BIAxisLableColor, BIAxisLabelColor, BIAxisLineColor} from "./theme";

/**
 * 1. 背景
 * 2. 坐标轴、字体颜色
 * 3. 分割线
 * 4. legend的文字颜色
 * 5. markPoint的颜色设置
 * 6. tooltip 背景
 * */
const handleYAxis = (item, _opt) => {
    item.minorSplitLine = {
        ...item.minorSplitLine,
        show: false,
        lineStyle: {
            type: 'solid',
            color: '#38435a'
        }
    };
    item.splitLine = {
        ...item.splitLine,
        show: true,
        lineStyle: {
            type: 'solid',
            color: BISplitLineColor
        }
    };
    item.axisLabel = {
        ...item.axisLabel,
        color: BIAxisLabelColor
    };
    item.axisLine = {
        ...(_opt?.xAxis?.axisLine ?? {}),
        show: true,
        lineStyle: {
            type: 'solid',
            color: BIAxisLineColor
        }
    };
}
const patchBIOption = (option, theme) => {
    let _opt = _.cloneDeep(option);
    // 1. 修改legend颜色
    if (_opt?.legend) {
        _opt.legend.textStyle = {
            ...(_opt?.legend?.textStyle ?? {}),
            color: theme.legendTextColor
        }
    }
    //2. 分割线样式调整
    _opt.xAxis.minorSplitLine = {
        ..._opt.xAxis.minorSplitLine,
        show: false,
        lineStyle: {
            type: 'solid',
            color: BISplitLineColor
        }
    };
    _opt.xAxis.axisLine = {
        ..._opt.xAxis.axisLine,
        show: true,
        lineStyle: {
            type: 'solid',
            color: BIAxisLineColor
        }
    };
    _opt.xAxis.splitLine = {
        ..._opt.xAxis.splitLine,
        show: true,
        lineStyle: {
            type: 'solid',
            color: BISplitLineColor
        }
    };
    _opt.xAxis.axisLabel = {
        ..._opt.xAxis.axisLabel,
        color: BIAxisLabelColor
    };
    if (_opt && _.isArray[_opt.yAxis]) {
        _opt.yAxis.forEach(item => {
            handleYAxis(item, _opt);
        })
    } else if (_opt && !_.isArray(_opt.yAxis)) {
        handleYAxis(_opt.yAxis, _opt);
    }

    return _opt;
};
export default patchBIOption;