MCPcopy
hub / github.com/zxlie/FeHelper / createChart

Function createChart

apps/chart-maker/chart-generator.js:13–334  ·  view source on GitHub ↗
(data, settings)

Source from the content-addressed store, hash-verified

11
12// 生成图表的主函数
13function createChart(data, settings) {
14 // 获取Canvas元素
15 const canvas = document.getElementById('chart-canvas');
16 const ctx = canvas.getContext('2d');
17
18 // 如果已有图表,先销毁
19 if (window.chartInstance) {
20 window.chartInstance.destroy();
21 }
22
23 // 应用颜色方案
24 applyColorScheme(data, settings.colorScheme, settings.type);
25
26 // 配置图表选项
27 const options = getChartOptions(settings);
28
29 // 处理特殊图表类型
30 let type = settings.type;
31 let chartData = {...data};
32
33 // 检查是否为首系列图表类型
34 const isFirstSeriesOnly = settings.type.includes(" (首系列)");
35 if (isFirstSeriesOnly) {
36 // 提取真正的图表类型
37 type = settings.type.replace(" (首系列)", "");
38
39 // 只保留第一个数据系列
40 if (chartData.datasets.length > 1) {
41 const firstDataset = chartData.datasets[0];
42 chartData.datasets = [{
43 ...firstDataset,
44 label: firstDataset.label || '数据'
45 }];
46 }
47 }
48
49 // 移除可能存在的旧堆叠设置
50 if (options.scales && options.scales.x) {
51 delete options.scales.x.stacked;
52 }
53 if (options.scales && options.scales.y) {
54 delete options.scales.y.stacked;
55 }
56
57 // 移除旧的填充设置和其他特殊属性
58 chartData.datasets.forEach(dataset => {
59 delete dataset.fill;
60 delete dataset.tension;
61 delete dataset.stepped;
62 delete dataset.borderDash;
63 });
64
65 // 基本图表类型处理
66 switch(type) {
67 // 柱状图系列
68 case 'horizontalBar':
69 type = 'bar';
70 options.indexAxis = 'y';

Callers 1

generateChartFunction · 0.85

Calls 7

applyColorSchemeFunction · 0.85
getChartOptionsFunction · 0.85
transformScatterDataFunction · 0.85
transformBubbleDataFunction · 0.85
renderHeatmapFunction · 0.85
destroyMethod · 0.80
getContextMethod · 0.45

Tested by

no test coverage detected