()
| 125 | |
| 126 | // 生成图表按钮点击事件 (修改为独立的函数) |
| 127 | function generateChart() { |
| 128 | try { |
| 129 | let parsedData; |
| 130 | const method = document.querySelector('input[name="data-input-method"]:checked').value; |
| 131 | |
| 132 | if (method === 'upload-csv' && uploadedData) { |
| 133 | parsedData = uploadedData; |
| 134 | } else if (method === 'manual') { |
| 135 | parsedData = parseInputData(); // 使用现有的手动数据解析函数 |
| 136 | } else if (method === 'upload-csv' && !uploadedData) { |
| 137 | throw new Error('请先上传文件'); |
| 138 | } else { |
| 139 | throw new Error('请选择有效的数据输入方式并提供数据'); |
| 140 | } |
| 141 | |
| 142 | if (!parsedData || |
| 143 | (parsedData.labels && parsedData.labels.length === 0) || |
| 144 | (parsedData.datasets && parsedData.datasets.length === 0)) { |
| 145 | throw new Error('无法解析数据或数据为空'); |
| 146 | } |
| 147 | |
| 148 | // 保存数据到全局变量,方便其他函数访问 |
| 149 | window.chartData = parsedData; |
| 150 | |
| 151 | const chartSettings = getChartSettings(); |
| 152 | |
| 153 | // 将简单数据标记添加到设置中 |
| 154 | if (parsedData.isSimpleData) { |
| 155 | chartSettings.isSimpleData = true; |
| 156 | } |
| 157 | |
| 158 | // 调用chart-generator.js中的createChart函数 |
| 159 | if (typeof createChart !== 'function') { |
| 160 | throw new Error('createChart函数未定义,请确保chart-generator.js正确加载'); |
| 161 | } |
| 162 | |
| 163 | createChart(parsedData, chartSettings); |
| 164 | |
| 165 | exportPngBtn.disabled = false; |
| 166 | exportJpgBtn.disabled = false; |
| 167 | copyImgBtn.disabled = false; |
| 168 | } catch (error) { |
| 169 | showNotification(error.message, true); |
| 170 | } |
| 171 | } |
| 172 | |
| 173 | // 将generateChart函数暴露为全局函数 |
| 174 | window.generateChart = generateChart; |
no test coverage detected