fix: charts plugins (#3530)
This commit is contained in:
@@ -4,8 +4,8 @@ import { SystemPluginSpecialResponse } from '../../../type.d';
|
||||
|
||||
type Props = {
|
||||
title: string;
|
||||
xAxis: string;
|
||||
yAxis: string;
|
||||
xAxis: string[];
|
||||
yAxis: string[];
|
||||
chartType: string;
|
||||
};
|
||||
|
||||
@@ -27,7 +27,12 @@ type Option = {
|
||||
series: SeriesData[]; // 使用定义的类型
|
||||
};
|
||||
|
||||
const generateChart = async (title: string, xAxis: string, yAxis: string, chartType: string) => {
|
||||
const generateChart = async (
|
||||
title: string,
|
||||
xAxis: string[],
|
||||
yAxis: string[],
|
||||
chartType: string
|
||||
) => {
|
||||
// @ts-ignore 无法使用dom,如使用jsdom会出现生成图片无法正常展示,有高手可以帮忙解决
|
||||
const chart = echarts.init(undefined, undefined, {
|
||||
renderer: 'svg', // 必须使用 SVG 模式
|
||||
@@ -36,21 +41,11 @@ const generateChart = async (title: string, xAxis: string, yAxis: string, chartT
|
||||
height: 300
|
||||
});
|
||||
|
||||
let parsedXAxis: string[] = [];
|
||||
let parsedYAxis: number[] = [];
|
||||
try {
|
||||
parsedXAxis = json5.parse(xAxis);
|
||||
parsedYAxis = json5.parse(yAxis);
|
||||
} catch (error: any) {
|
||||
console.error('解析数据时出错:', error);
|
||||
return Promise.reject('Data error');
|
||||
}
|
||||
|
||||
const option: Option = {
|
||||
backgroundColor: '#f5f5f5',
|
||||
title: { text: title },
|
||||
tooltip: {},
|
||||
xAxis: { data: parsedXAxis },
|
||||
xAxis: { data: xAxis },
|
||||
yAxis: {},
|
||||
series: [] // 初始化为空数组
|
||||
};
|
||||
@@ -58,18 +53,18 @@ const generateChart = async (title: string, xAxis: string, yAxis: string, chartT
|
||||
// 根据 chartType 生成不同的图表
|
||||
switch (chartType) {
|
||||
case '柱状图':
|
||||
option.series.push({ name: 'Sample', type: 'bar', data: parsedYAxis });
|
||||
option.series.push({ name: 'Sample', type: 'bar', data: yAxis.map(Number) });
|
||||
break;
|
||||
case '折线图':
|
||||
option.series.push({ name: 'Sample', type: 'line', data: parsedYAxis });
|
||||
option.series.push({ name: 'Sample', type: 'line', data: yAxis.map(Number) });
|
||||
break;
|
||||
case '饼图':
|
||||
option.series.push({
|
||||
name: 'Sample',
|
||||
type: 'pie',
|
||||
data: parsedYAxis.map((value, index) => ({
|
||||
value,
|
||||
name: parsedXAxis[index] // 使用 xAxis 作为饼图的名称
|
||||
data: yAxis.map((value, index) => ({
|
||||
value: Number(value),
|
||||
name: xAxis[index] // 使用 xAxis 作为饼图的名称
|
||||
}))
|
||||
});
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user