161 lines
5.5 KiB
PHP
161 lines
5.5 KiB
PHP
<?php
|
|
$data = j(setting("ndtCalculation"));
|
|
|
|
$stats = [];
|
|
$statsData = [];
|
|
|
|
foreach($data AS $d) {
|
|
foreach($d AS $field => $value) {
|
|
if(strpos($field, "backlog") !== false) {
|
|
$field = str_replace("_backlog", "", $field);
|
|
$field = strtoupper($field);
|
|
if(!isset($stats[$field])) {
|
|
$stats[$field] = 0;
|
|
}
|
|
if($value>0) {
|
|
$stats[$field] += $value;
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
foreach($stats AS $log => $value) {
|
|
|
|
$statsData[] = [
|
|
'log_name' => $log,
|
|
'val' => $value,
|
|
];
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$labels = implode("','",array_keys($stats));
|
|
$datas = implode(",",array_values($stats));
|
|
$totalCount = array_sum(array_values($stats));
|
|
?>
|
|
<div class="row">
|
|
<div class="col-md-6">
|
|
<canvas class="d-none" id="ndtBacklogStats"></canvas>
|
|
<div id="ndtBacklogChart"></div>
|
|
</div>
|
|
<div class="col-md-6">
|
|
|
|
<table class="table table-sm table-bordered table-striped">
|
|
|
|
<tr>
|
|
<th>{{e2("Status")}}</th>
|
|
<th>{{e2("Count")}}</th>
|
|
<th>{{e2("%")}}</th>
|
|
</tr>
|
|
|
|
<?php foreach($stats AS $label => $stat) {
|
|
?>
|
|
<tr>
|
|
<td>{{$label}}</td>
|
|
<td>{{$stat}}</td>
|
|
<td>%{{round($stat * 100 / $totalCount, 0)}}</td>
|
|
</tr>
|
|
<?php
|
|
} ?>
|
|
|
|
<tr>
|
|
<th>{{e2("Total")}}</th>
|
|
<th>{{$totalCount}}</th>
|
|
<th>%100</th>
|
|
|
|
</tr>
|
|
|
|
</table>
|
|
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
|
|
$(() => {
|
|
|
|
const ndtBacklogData = <?php echo json_encode_tr($statsData) ?>;
|
|
|
|
$('#ndtBacklogChart').dxPieChart({
|
|
type: 'doughnut',
|
|
// palette: 'Pastel',
|
|
dataSource: ndtBacklogData,
|
|
// title: '{{e2("Spool List")}}',
|
|
tooltip: {
|
|
enabled: true,
|
|
// format: 'millions',
|
|
customizeTooltip(arg) {
|
|
console.log(arg);
|
|
return {
|
|
text: `${arg.valueText} - ${(arg.percent * 100).toFixed(2)}%`,
|
|
};
|
|
},
|
|
},
|
|
legend: {
|
|
horizontalAlignment: 'center',
|
|
verticalAlignment: 'top',
|
|
margin: 0,
|
|
visible: true
|
|
},
|
|
export: {
|
|
enabled: true,
|
|
},
|
|
series: [{
|
|
argumentField: 'log_name',
|
|
label: {
|
|
visible: true,
|
|
connector: {
|
|
visible: true,
|
|
},
|
|
customizeText: function (arg) {
|
|
|
|
return arg.percentText;
|
|
}
|
|
},
|
|
}],
|
|
});
|
|
});
|
|
|
|
</script>
|
|
<script>
|
|
const ctx2 = document.getElementById('ndtBacklogStats');
|
|
|
|
var options = {
|
|
tooltips: {
|
|
enabled: true
|
|
},
|
|
plugins: {
|
|
datalabels: {
|
|
formatter: (value, ctx) => {
|
|
|
|
let sum = ctx.dataset._meta[0].total;
|
|
let percentage = (value * 100 / sum).toFixed(2) + "%";
|
|
return percentage;
|
|
|
|
|
|
},
|
|
color: '#fff',
|
|
}
|
|
}
|
|
};
|
|
|
|
new Chart(ctx2, {
|
|
type: 'doughnut',
|
|
data: {
|
|
labels: ['<?php echo $labels ?>'],
|
|
datasets: [{
|
|
label: '# {{e2("Count")}}',
|
|
data: [<?php echo $datas ?>],
|
|
borderWidth: 1
|
|
}]
|
|
},
|
|
options: options
|
|
});
|
|
</script>
|
|
|