From 93350f0f6a4e1d9ff8288c1b13c9f09dbb46cd54 Mon Sep 17 00:00:00 2001
From: xiangmaoshuo <544437819@qq.com>
Date: Thu, 9 Mar 2023 18:26:50 +0800
Subject: [PATCH] =?UTF-8?q?fix:=20=E8=A7=A3=E5=86=B3=E9=A2=84=E8=A7=88?=
=?UTF-8?q?=E6=97=B6=E6=A8=A1=E7=B3=8A=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../EchartsRendererSetting.vue | 45 +++++++++++++++++++
.../Pages/ChartItemSetting/GlobalSetting.vue | 41 +++++++++++++++++
src/hooks/useCanvasInitOptions.hook.ts | 26 +++++++++++
.../Charts/Bars/BarCommon/index.vue | 4 ++
.../Charts/Bars/BarCrossrange/index.vue | 4 ++
.../Charts/Lines/LineCommon/index.vue | 4 ++
.../Charts/Lines/LineGradientSingle/index.vue | 5 ++-
.../Charts/Lines/LineGradients/index.vue | 5 ++-
.../Charts/Lines/LineLinearSingle/index.vue | 5 ++-
.../components/Charts/Maps/MapBase/index.vue | 5 ++-
.../components/Charts/Mores/Funnel/index.vue | 5 ++-
.../components/Charts/Mores/Heatmap/index.vue | 5 ++-
.../components/Charts/Mores/Radar/index.vue | 5 ++-
.../components/Charts/Mores/TreeMap/index.vue | 5 ++-
.../Charts/Mores/WaterPolo/index.vue | 5 ++-
.../Charts/Pies/PieCircle/index.vue | 5 ++-
.../Charts/Pies/PieCommon/index.vue | 5 ++-
.../Charts/Scatters/ScatterCommon/index.vue | 4 ++
.../ScatterLogarithmicRegression/index.vue | 4 ++
.../Informations/Mores/WordCloud/config.vue | 3 +-
.../Informations/Mores/WordCloud/index.vue | 4 ++
src/settings/chartThemes/index.ts | 5 ++-
src/views/preview/hooks/useScale.hook.ts | 18 +++++++-
23 files changed, 202 insertions(+), 15 deletions(-)
create mode 100644 src/components/Pages/ChartItemSetting/EchartsRendererSetting.vue
create mode 100644 src/hooks/useCanvasInitOptions.hook.ts
diff --git a/src/components/Pages/ChartItemSetting/EchartsRendererSetting.vue b/src/components/Pages/ChartItemSetting/EchartsRendererSetting.vue
new file mode 100644
index 00000000..f7624fef
--- /dev/null
+++ b/src/components/Pages/ChartItemSetting/EchartsRendererSetting.vue
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+ {{ item.value }}
+
+
+ {{ item.desc }}
+
+
+
+
+
diff --git a/src/components/Pages/ChartItemSetting/GlobalSetting.vue b/src/components/Pages/ChartItemSetting/GlobalSetting.vue
index 35a74235..a416e69c 100644
--- a/src/components/Pages/ChartItemSetting/GlobalSetting.vue
+++ b/src/components/Pages/ChartItemSetting/GlobalSetting.vue
@@ -1,4 +1,34 @@
+
+
+
+ 全局
+
+
+
+
+
+
+ 所有echarts图表组件默认都将采用所选的渲染器进行渲染
+
+
+
+
+
+
+ 当前
+
+
+
+
+
+
+ 仅当前组件采用指定渲染器渲染
+
+
+
+
+
@@ -283,6 +313,11 @@ import { PropType, computed } from 'vue'
import { GlobalThemeJsonType } from '@/settings/chartThemes/index'
import { axisConfig } from '@/packages/chartConfiguration/echarts/index'
import { CollapseItem, SettingItemBox, SettingItem, GlobalSettingPosition } from '@/components/Pages/ChartItemSetting'
+import { icon } from '@/plugins'
+import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
+import EchartsRendererSetting from './EchartsRendererSetting.vue'
+
+const { HelpOutlineIcon } = icon.ionicons5
const props = defineProps({
optionData: {
@@ -296,6 +331,12 @@ const props = defineProps({
}
})
+const chartEditStore = useChartEditStore()
+const themeSetting = computed(() => {
+ const chartThemeSetting = chartEditStore.getEditCanvasConfig.chartThemeSetting
+ return chartThemeSetting
+})
+
const title = computed(() => {
return props.optionData.title
})
diff --git a/src/hooks/useCanvasInitOptions.hook.ts b/src/hooks/useCanvasInitOptions.hook.ts
new file mode 100644
index 00000000..d8521eef
--- /dev/null
+++ b/src/hooks/useCanvasInitOptions.hook.ts
@@ -0,0 +1,26 @@
+import { inject, type Ref } from 'vue'
+import { EchartsRenderer } from '@/settings/chartThemes'
+import { SCALE_KEY } from '@/views/preview/hooks/useScale.hook'
+import { use } from 'echarts/core'
+import { CanvasRenderer, SVGRenderer } from 'echarts/renderers'
+
+use([CanvasRenderer, SVGRenderer])
+
+type InitOptions = {
+ renderer: EchartsRenderer
+ devicePixelRatio?: number
+}
+
+// 获取需要给当前echarts组件设置什么初始值
+export function useCanvasInitOptions(option: any, themeSetting: any) {
+ const renderer = option.renderer || themeSetting.renderer
+ const initOptions: InitOptions = { renderer }
+ const scaleRef = inject[>(SCALE_KEY) || { value: { width: 1, height: 1 } }
+
+ if (renderer === 'canvas') {
+ initOptions.devicePixelRatio = Math.ceil(
+ Math.max(window.devicePixelRatio, scaleRef.value.width, scaleRef.value.height)
+ )
+ }
+ return initOptions
+}
diff --git a/src/packages/components/Charts/Bars/BarCommon/index.vue b/src/packages/components/Charts/Bars/BarCommon/index.vue
index 77f6da02..6c8bcd2d 100644
--- a/src/packages/components/Charts/Bars/BarCommon/index.vue
+++ b/src/packages/components/Charts/Bars/BarCommon/index.vue
@@ -1,6 +1,7 @@
import { ref, nextTick, computed, watch, PropType } from 'vue'
import VChart from 'vue-echarts'
+import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook'
import { use } from 'echarts/core'
import { CanvasRenderer } from 'echarts/renderers'
import { BarChart } from 'echarts/charts'
@@ -41,6 +43,8 @@ const props = defineProps({
}
})
+const initOptions = useCanvasInitOptions(props.chartConfig.option, props.themeSetting)
+
use([DatasetComponent, CanvasRenderer, BarChart, GridComponent, TooltipComponent, LegendComponent])
const replaceMergeArr = ref()
diff --git a/src/packages/components/Charts/Bars/BarCrossrange/index.vue b/src/packages/components/Charts/Bars/BarCrossrange/index.vue
index c8d2957a..683d777b 100644
--- a/src/packages/components/Charts/Bars/BarCrossrange/index.vue
+++ b/src/packages/components/Charts/Bars/BarCrossrange/index.vue
@@ -1,6 +1,7 @@
import { ref, nextTick, computed, watch, PropType } from 'vue'
import VChart from 'vue-echarts'
+import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook'
import { use } from 'echarts/core'
import { CanvasRenderer } from 'echarts/renderers'
import { BarChart } from 'echarts/charts'
@@ -40,6 +42,8 @@ const props = defineProps({
}
})
+const initOptions = useCanvasInitOptions(props.chartConfig.option, props.themeSetting)
+
use([DatasetComponent, CanvasRenderer, BarChart, GridComponent, TooltipComponent, LegendComponent])
const replaceMergeArr = ref()
diff --git a/src/packages/components/Charts/Lines/LineCommon/index.vue b/src/packages/components/Charts/Lines/LineCommon/index.vue
index 33149e84..c2163eb7 100644
--- a/src/packages/components/Charts/Lines/LineCommon/index.vue
+++ b/src/packages/components/Charts/Lines/LineCommon/index.vue
@@ -1,6 +1,7 @@
import { PropType, computed, watch, ref, nextTick } from 'vue'
import VChart from 'vue-echarts'
+import { useCanvasInitOptions } from '@/hooks/useCanvasInitOptions.hook'
import { use } from 'echarts/core'
import { CanvasRenderer } from 'echarts/renderers'
import { LineChart } from 'echarts/charts'
@@ -41,6 +43,8 @@ const props = defineProps({
}
})
+const initOptions = useCanvasInitOptions(props.chartConfig.option, props.themeSetting)
+
use([DatasetComponent, CanvasRenderer, LineChart, GridComponent, TooltipComponent, LegendComponent])
const replaceMergeArr = ref()
diff --git a/src/packages/components/Charts/Lines/LineGradientSingle/index.vue b/src/packages/components/Charts/Lines/LineGradientSingle/index.vue
index 0bd33cfe..b96ffa71 100644
--- a/src/packages/components/Charts/Lines/LineGradientSingle/index.vue
+++ b/src/packages/components/Charts/Lines/LineGradientSingle/index.vue
@@ -1,11 +1,12 @@
-
+
]