fix: rewrite app.js with working upload button
This commit is contained in:
parent
6a9235864e
commit
515dd8da03
47
app.js
47
app.js
@ -1,4 +1,26 @@
|
|||||||
// Chart utility functions removed - using tables instead
|
var charts = {};
|
||||||
|
|
||||||
|
document.getElementById('uploadBtn').addEventListener('click', function() {
|
||||||
|
document.getElementById('excelFile').click();
|
||||||
|
});
|
||||||
|
|
||||||
|
document.getElementById('excelFile').addEventListener('change', function(e) {
|
||||||
|
var file = e.target.files[0];
|
||||||
|
if (!file) return;
|
||||||
|
document.getElementById('statusMsg').textContent = 'Загрузка: ' + file.name + '...';
|
||||||
|
|
||||||
|
var reader = new FileReader();
|
||||||
|
reader.onload = function(ev) {
|
||||||
|
try {
|
||||||
|
var arr = new Uint8Array(ev.target.result);
|
||||||
|
var wb = XLSX.read(arr, {type: 'array'});
|
||||||
|
var ws = wb.Sheets[wb.SheetNames[0]];
|
||||||
|
var rows = XLSX.utils.sheet_to_json(ws, {defval: ''});
|
||||||
|
if (!rows.length) { document.getElementById('statusMsg').textContent = 'Файл пуст'; return; }
|
||||||
|
build(rows);
|
||||||
|
} catch(err) {
|
||||||
|
document.getElementById('statusMsg').textContent = 'Ошибка: ' + err.message;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
reader.readAsArrayBuffer(file);
|
reader.readAsArrayBuffer(file);
|
||||||
});
|
});
|
||||||
@ -47,7 +69,7 @@ function build(raw) {
|
|||||||
var c = r.course || 'Без темы';
|
var c = r.course || 'Без темы';
|
||||||
if (!train[c]) train[c] = {all:{}, ok:{}, sc:[], tr:{}};
|
if (!train[c]) train[c] = {all:{}, ok:{}, sc:[], tr:{}};
|
||||||
train[c].all[r.name] = true;
|
train[c].all[r.name] = true;
|
||||||
if (r.status === 'завершен' || r.status === 'пройден') train[c].ok[r.name] = true;
|
if (done(r.status)) train[c].ok[r.name] = true;
|
||||||
if (!isNaN(sc) && sc > 0) train[c].sc.push(sc);
|
if (!isNaN(sc) && sc > 0) train[c].sc.push(sc);
|
||||||
if (r.trainer) train[c].tr[r.trainer] = true;
|
if (r.trainer) train[c].tr[r.trainer] = true;
|
||||||
|
|
||||||
@ -98,24 +120,3 @@ function build(raw) {
|
|||||||
return '<tr><td>'+(r.name||'')+'</td><td>'+(r.division||'')+'</td><td>'+(r.course||'')+'</td><td>'+(r.status||'')+'</td><td>'+(r.score||'')+'</td><td>'+(r.trainer||'')+'</td></tr>';
|
return '<tr><td>'+(r.name||'')+'</td><td>'+(r.division||'')+'</td><td>'+(r.course||'')+'</td><td>'+(r.status||'')+'</td><td>'+(r.score||'')+'</td><td>'+(r.trainer||'')+'</td></tr>';
|
||||||
}).join('');
|
}).join('');
|
||||||
}
|
}
|
||||||
|
|
||||||
function barH(id, labels, ds) {
|
|
||||||
if(charts[id])charts[id].destroy();
|
|
||||||
charts[id]=new Chart(document.getElementById(id),{type:'bar',data:{labels:labels,datasets:ds.map(function(s){return{label:s.label,data:s.data,backgroundColor:s.bg,borderColor:s.bc,borderWidth:1}})},
|
|
||||||
options:{indexAxis:'y',responsive:true,plugins:{legend:{labels:{color:'#e0e0e0'}}},scales:{x:{beginAtZero:true,ticks:{color:'#90a4ae'},grid:{color:'#1e2d3d'}},y:{ticks:{color:'#e0e0e0',font:{size:11}},grid:{color:'#1e2d3d'}}}}});
|
|
||||||
}
|
|
||||||
function bar(id, labels, ds) {
|
|
||||||
if(charts[id])charts[id].destroy();
|
|
||||||
charts[id]=new Chart(document.getElementById(id),{type:'bar',data:{labels:labels,datasets:ds.map(function(s){return{label:s.label,data:s.data,backgroundColor:s.bg,borderColor:s.bc,borderWidth:1}})},
|
|
||||||
options:{responsive:true,plugins:{legend:{labels:{color:'#e0e0e0'}}},scales:{y:{beginAtZero:true,ticks:{color:'#90a4ae'},grid:{color:'#1e2d3d'}},x:{ticks:{color:'#90a4ae'},grid:{color:'#1e2d3d'}}}}});
|
|
||||||
}
|
|
||||||
function stacked(id, labels, ds) {
|
|
||||||
if(charts[id])charts[id].destroy();
|
|
||||||
charts[id]=new Chart(document.getElementById(id),{type:'bar',data:{labels:labels,datasets:ds.map(function(s){return{label:s.label,data:s.data,backgroundColor:s.bg,borderColor:s.bc,borderWidth:1}})},
|
|
||||||
options:{responsive:true,plugins:{legend:{labels:{color:'#e0e0e0'}}},scales:{x:{stacked:true,ticks:{color:'#90a4ae',maxRotation:45},grid:{color:'#1e2d3d'}},y:{stacked:true,beginAtZero:true,ticks:{color:'#90a4ae'},grid:{color:'#1e2d3d'}}}}});
|
|
||||||
}
|
|
||||||
function doughnut(id, labels, data, colors) {
|
|
||||||
if(charts[id])charts[id].destroy();
|
|
||||||
charts[id]=new Chart(document.getElementById(id),{type:'doughnut',data:{labels:labels,datasets:[{data:data,backgroundColor:colors,borderWidth:0}]},
|
|
||||||
options:{responsive:true,plugins:{legend:{labels:{color:'#e0e0e0'}}}}});
|
|
||||||
}
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user