无木
2021-06-04 fb6c76db535bd0c6305d03c0cff876a1f079100b
src/hooks/web/useECharts.ts
@@ -1,13 +1,15 @@
import type { EChartsOption } from 'echarts';
import type { Ref } from 'vue';
import { useTimeoutFn } from '/@/hooks/core/useTimeout';
import { tryOnUnmounted } from '@vueuse/core';
import { unref, Ref, nextTick, watch, computed, ref } from 'vue';
import type { EChartsOption } from 'echarts';
import { useDebounce } from '/@/hooks/core/useDebounce';
import { unref, nextTick, watch, computed, ref } from 'vue';
import { useDebounceFn } from '@vueuse/core';
import { useEventListener } from '/@/hooks/event/useEventListener';
import { useBreakpoint } from '/@/hooks/event/useBreakpoint';
import echarts from '/@/plugins/echarts';
import { useRootSetting } from '../setting/useRootSetting';
import echarts from '/@/utils/lib/echarts';
import { useRootSetting } from '/@/hooks/setting/useRootSetting';
export function useECharts(
  elRef: Ref<HTMLDivElement>,
@@ -19,20 +21,17 @@
  const cacheOptions = ref<EChartsOption>({});
  let removeResizeFn: Fn = () => {};
  const [debounceResize] = useDebounce(resize, 200);
  resizeFn = debounceResize;
  resizeFn = useDebounceFn(resize, 200);
  const getOptions = computed(
    (): EChartsOption => {
      if (getDarkMode.value !== 'dark') {
        return cacheOptions.value;
      }
      return {
        backgroundColor: 'transparent',
        ...cacheOptions.value,
      };
  const getOptions = computed((): EChartsOption => {
    if (getDarkMode.value !== 'dark') {
      return cacheOptions.value;
    }
  );
    return {
      backgroundColor: 'transparent',
      ...cacheOptions.value,
    };
  });
  function initCharts(t = theme) {
    const el = unref(elRef);
@@ -66,7 +65,7 @@
    nextTick(() => {
      useTimeoutFn(() => {
        if (!chartInstance) {
          initCharts(getDarkMode.value);
          initCharts(getDarkMode.value as 'default');
          if (!chartInstance) return;
        }
@@ -86,7 +85,7 @@
    (theme) => {
      if (chartInstance) {
        chartInstance.dispose();
        initCharts(theme);
        initCharts(theme as 'default');
        setOptions(cacheOptions.value);
      }
    }
@@ -99,9 +98,17 @@
    chartInstance = null;
  });
  function getInstance(): echarts.ECharts | null {
    if (!chartInstance) {
      initCharts(getDarkMode.value as 'default');
    }
    return chartInstance;
  }
  return {
    setOptions,
    resize,
    echarts,
    getInstance,
  };
}