2022-02-21 21:16:44 +08:00
|
|
|
import merge from 'lodash/merge'
|
|
|
|
import pick from 'lodash/pick'
|
2022-03-18 20:36:05 +08:00
|
|
|
import { EchartsDataType } from '../index.d'
|
2022-02-24 17:23:20 +08:00
|
|
|
import { globalThemeJson } from '@/settings/chartThemes/index'
|
2023-02-15 09:20:48 +08:00
|
|
|
import type VChart from 'vue-echarts'
|
2022-02-21 21:16:44 +08:00
|
|
|
|
|
|
|
/**
|
|
|
|
* * 合并 color 和全局配置项
|
|
|
|
* @param option 配置
|
|
|
|
* @param themeSetting 设置
|
|
|
|
* @param excludes 排除元素
|
|
|
|
* @returns object
|
|
|
|
*/
|
2022-06-27 21:35:27 +08:00
|
|
|
export const mergeTheme = <T, U>(option: T, themeSetting: U, includes: string[]) => {
|
|
|
|
return (option = merge({}, pick(themeSetting, includes), option))
|
2022-02-21 21:16:44 +08:00
|
|
|
}
|
2022-02-24 17:23:20 +08:00
|
|
|
|
|
|
|
/**
|
|
|
|
* * ECharts option 统一前置处理
|
|
|
|
* @param option
|
2022-03-18 20:36:05 +08:00
|
|
|
* @return option
|
2022-02-24 17:23:20 +08:00
|
|
|
*/
|
2022-03-18 20:36:05 +08:00
|
|
|
export const echartOptionProfixHandle = (option: any, includes: string[]) => {
|
2022-02-24 17:23:20 +08:00
|
|
|
option['backgroundColor'] = 'rgba(0,0,0,0)'
|
|
|
|
return mergeTheme(option, globalThemeJson, includes)
|
2022-03-18 20:36:05 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* * 设置数据
|
|
|
|
* @param option
|
|
|
|
* @return option
|
|
|
|
*/
|
|
|
|
export const setData = (option: any, data: EchartsDataType) => {
|
|
|
|
option.dataset = data
|
|
|
|
return option
|
|
|
|
}
|
2023-02-15 09:20:48 +08:00
|
|
|
|
|
|
|
/**
|
|
|
|
* * 配置公共 setOption 方法
|
|
|
|
* @param instance
|
|
|
|
* @param data
|
|
|
|
*/
|
|
|
|
export const setOption = <T extends typeof VChart | undefined, D>(instance: T, data: D) => {
|
|
|
|
if (!instance) return
|
|
|
|
const option = instance.getOption()
|
|
|
|
option.dataset = null
|
|
|
|
instance.setOption(data)
|
|
|
|
}
|