28 lines
962 B
TypeScript
28 lines
962 B
TypeScript
import { computed } from 'vue';
|
|
import { EChartsOption } from 'echarts';
|
|
import { useAppStore } from '@/store';
|
|
|
|
// for code hints
|
|
// import { SeriesOption } from 'echarts';
|
|
// Because there are so many configuration items, this provides a relatively convenient code hint.
|
|
// When using vue, pay attention to the reactive issues. It is necessary to ensure that corresponding functions can be triggered, TypeScript does not report errors, and code writing is convenient.
|
|
interface optionsFn {
|
|
(isDark: boolean): EChartsOption;
|
|
}
|
|
|
|
export default function useChartOption(sourceOption: optionsFn) {
|
|
const appStore = useAppStore();
|
|
const isDark = computed(() => {
|
|
return appStore.theme === 'dark';
|
|
});
|
|
// echarts support https://echarts.apache.org/zh/theme-builder.html
|
|
// It's not used here
|
|
// TODO echarts themes
|
|
const chartOption = computed<EChartsOption>(() => {
|
|
return sourceOption(isDark.value);
|
|
});
|
|
return {
|
|
chartOption,
|
|
};
|
|
}
|