121 lines
3.3 KiB
JavaScript
121 lines
3.3 KiB
JavaScript
(function () {
|
|
if (typeof Chart === 'undefined' || !_schemaLabels || !_schemaLabels.length) return;
|
|
|
|
var COLORS = [
|
|
'#2563eb','#16a34a','#d97706','#dc2626','#0284c7',
|
|
'#6d28d9','#db2777','#059669','#ea580c','#0891b2',
|
|
'#0f766e','#b45309','#7c3aed','#be185d','#0369a1'
|
|
];
|
|
|
|
function palette(n) {
|
|
var out = [];
|
|
for (var i = 0; i < n; i++) out.push(COLORS[i % COLORS.length]);
|
|
return out;
|
|
}
|
|
|
|
// --- bar chart: most used processes ---
|
|
var ctxBar = document.getElementById('chartBar');
|
|
if (ctxBar) {
|
|
new Chart(ctxBar, {
|
|
type: 'bar',
|
|
data: {
|
|
labels: _schemaLabels,
|
|
datasets: [{
|
|
label: 'Esecuzioni',
|
|
data: _schemaCounts,
|
|
backgroundColor: palette(_schemaLabels.length),
|
|
borderRadius: 4,
|
|
borderSkipped: false
|
|
}]
|
|
},
|
|
options: {
|
|
responsive: true,
|
|
plugins: {
|
|
legend: { display: false }
|
|
},
|
|
scales: {
|
|
y: { beginAtZero: true, ticks: { precision: 0 } }
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
// --- pie chart: time per process ---
|
|
var ctxPie = document.getElementById('chartPie');
|
|
if (ctxPie) {
|
|
new Chart(ctxPie, {
|
|
type: 'pie',
|
|
data: {
|
|
labels: _schemaLabels,
|
|
datasets: [{
|
|
data: _schemaMinutes,
|
|
backgroundColor: palette(_schemaLabels.length)
|
|
}]
|
|
},
|
|
options: {
|
|
responsive: true,
|
|
plugins: {
|
|
legend: { position: 'right', labels: { font: { size: 12 } } },
|
|
tooltip: {
|
|
callbacks: {
|
|
label: function (ctx) {
|
|
var min = ctx.parsed;
|
|
var h = Math.floor(min / 60);
|
|
var m = min % 60;
|
|
var dur = h > 0 ? h + 'h ' + m + 'min' : m + 'min';
|
|
return ' ' + ctx.label + ': ' + dur;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
// --- horizontal bar chart: total errors per process (most to least) ---
|
|
var ctxErrByProc = document.getElementById('chartErrByProc');
|
|
if (ctxErrByProc && _errLabels && _errLabels.length) {
|
|
var errPairs = _errLabels.map(function(l, i) { return { l: l, n: _errCounts[i] }; })
|
|
.filter(function(p) { return p.n > 0; });
|
|
var errLabels = errPairs.map(function(p) { return p.l; });
|
|
var errCounts = errPairs.map(function(p) { return p.n; });
|
|
if (!errLabels.length) {
|
|
ctxErrByProc.closest('.chart-box').style.display = 'none';
|
|
} else
|
|
new Chart(ctxErrByProc, {
|
|
type: 'bar',
|
|
data: {
|
|
labels: errLabels,
|
|
datasets: [{
|
|
label: 'Errori',
|
|
data: errCounts,
|
|
backgroundColor: '#dc2626',
|
|
hoverBackgroundColor: '#b91c1c',
|
|
borderRadius: 4,
|
|
borderSkipped: false
|
|
}]
|
|
},
|
|
options: {
|
|
indexAxis: 'y',
|
|
responsive: true,
|
|
plugins: {
|
|
legend: { display: false },
|
|
tooltip: {
|
|
callbacks: {
|
|
label: function (ctx) { return ' ' + ctx.parsed.x + ' errori'; }
|
|
}
|
|
}
|
|
},
|
|
scales: {
|
|
x: {
|
|
beginAtZero: true,
|
|
ticks: { precision: 0 },
|
|
title: { display: true, text: 'Numero errori' }
|
|
},
|
|
y: { ticks: { font: { size: 12 } } }
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}());
|