1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| <script> const dataTable = document.getElementById('data-table'); const addRowButton = document.getElementById('add-row'); const uploadFileButton = document.getElementById('upload-file'); const pieChartCanvas = document.getElementById('pie-chart').getContext('2d');
const chart = new Chart(pieChartCanvas, { type: 'pie', data: { labels: [], datasets: [{ data: [], backgroundColor: [ 'rgba(255, 99, 132, 0.2)', 'rgba(54, 162, 235, 0.2)', 'rgba(255, 206, 86, 0.2)', 'rgba(75, 192, 192, 0.2)', 'rgba(153, 102, 255, 0.2)', 'rgba(255, 159, 64, 0.2)' ], borderColor: [ 'rgba(255, 99, 132, 1)', 'rgba(54, 162, 235, 1)', 'rgba(255, 206, 86, 1)', 'rgba(75, 192, 192, 1)', 'rgba(153, 102, 255, 1)', 'rgba(255, 159, 64, 1)' ], borderWidth: 1 }] }, options: { responsive: true, maintainAspectRatio: false, animation: { duration: 500, easing: 'easeInOutQuart' } } });
addRowButton.addEventListener('click', () => { const newRow = dataTable.insertRow(-1); const labelCell = newRow.insertCell(0); const valueCell = newRow.insertCell(1); labelCell.innerHTML = `<input type="text" class="label">`; valueCell.innerHTML = `<input type="number" class="value">`; });
dataTable.addEventListener('input', () => { const labels = Array.from(document.querySelectorAll('.label')).map(input => input.value); const values = Array.from(document.querySelectorAll('.value')).map(input => parseInt(input.value)); chart.data.labels = labels; chart.data.datasets[0].data = values; chart.update(); });
uploadFileButton.addEventListener('click', () => { const fileInput = document.createElement('input'); fileInput.type = 'file'; fileInput.accept = '.xls,.xlsx'; fileInput.onchange = (event) => { const file = event.target.files[0]; const reader = new FileReader(); reader.onload = (e) => { const data = new Uint8Array(e.target.result); const workbook = XLSX.read(data, { type: 'array' }); const sheetName = workbook.SheetNames[0]; const sheet = workbook.Sheets[sheetName]; const jsonData = XLSX.utils.sheet_to_json(sheet, { header: 1 }); const labels = jsonData.slice(1).map(row => row[0]); const values = jsonData.slice(1).map(row => parseInt(row[1])); chart.data.labels = labels; chart.data.datasets[0].data = values; chart.update(); }; reader.readAsArrayBuffer(file); }; fileInput.click(); }); </script>
|