Aggiunta visualizzazione presenza device ultimi 30 giorni
This commit is contained in:
parent
bdf4f5b9e1
commit
157be8042c
67
gui/ajax.php
67
gui/ajax.php
|
@ -44,11 +44,78 @@ if( $_GET['op'] == 'get-details' && !empty($_GET['mac']) ){
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Dispositivi per giorno (tabella) -->
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="card shadow mb-4">
|
||||
<div class="card-header py-3">
|
||||
<h6 class="m-0 font-weight-bold text-primary">Presenza per giorno</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div id="presence-per-day"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<script>
|
||||
drawBarChart( 'chart-orari', 'get-activity-by-hour', '<?php echo $_GET['mac']; ?>' );
|
||||
drawBarChart( 'chart-giorno', 'get-activity-by-weekday', '<?php echo $_GET['mac']; ?>' );
|
||||
|
||||
var interval = 30;
|
||||
var date_start = moment().subtract(interval, 'days').format('YYYY-MM-DD');
|
||||
var date_end = moment().format('YYYY-MM-DD');
|
||||
|
||||
$.post(
|
||||
reader_url,
|
||||
{
|
||||
op: 'get-presence-per-day',
|
||||
mac: '<?php echo $_GET['mac']; ?>',
|
||||
date_start: date_start,
|
||||
date_end: date_end
|
||||
}, function(response){
|
||||
result = $.parseJSON(response);
|
||||
|
||||
if (result.status == 'OK') {
|
||||
$('#presence-per-day').html(
|
||||
'<table class="table table-striped table-condensed" id="table-presence-per-day">\
|
||||
<thead>\
|
||||
<tr>\
|
||||
<th width="80%">Giorno</th>\
|
||||
<th></th>\
|
||||
</tr>\
|
||||
</thead>\
|
||||
<tbody></tbody>\
|
||||
</table>'
|
||||
);
|
||||
|
||||
// Lista dispositivi
|
||||
var giorno = moment().subtract(interval, 'days');
|
||||
console.log( result.records );
|
||||
|
||||
for (i=0; i<interval; i++) {
|
||||
icon = '<i class="fa fa-times text-danger"></i>';
|
||||
|
||||
|
||||
if( result.records[ giorno.format('YYYY-MM-DD') ] !== undefined ){
|
||||
icon = '<i class="fa fa-check text-success"></i>';
|
||||
}
|
||||
|
||||
$('#table-presence-per-day tbody').append(
|
||||
'<tr>\
|
||||
<td>' + giorno.format('DD/MM/YYYY') + '</td>\
|
||||
<td class="text-center">' + icon + '</td>\
|
||||
</tr>'
|
||||
);
|
||||
|
||||
giorno = giorno.add(1, 'days');
|
||||
}
|
||||
} else {
|
||||
$('#presence-per-day').html('Errore durante il recupero dati.');
|
||||
}
|
||||
}
|
||||
);
|
||||
</script>
|
||||
<?php
|
||||
}
|
|
@ -470,4 +470,69 @@ switch( $_POST['op'] ){
|
|||
$stmt->close();
|
||||
$mysqli->close();
|
||||
break;
|
||||
|
||||
|
||||
case 'get-presence-per-day':
|
||||
// Connessione al database
|
||||
$mysqli = mysqli_connect($config['db_host'], $config['db_user'], $config['db_pass'], $config['db_name']);
|
||||
|
||||
// Errore nella connessione a database
|
||||
if (mysqli_connect_errno($mysqli)) {
|
||||
|
||||
$result = [
|
||||
'status' => 'ERR',
|
||||
'message' => mysqli_connect_error(),
|
||||
];
|
||||
} else {
|
||||
// Lettura presenza per giorno
|
||||
$sql = "
|
||||
SELECT
|
||||
DATE_FORMAT(received_at, '%Y-%m-%d') AS giorno,
|
||||
COUNT(id) AS valore
|
||||
FROM
|
||||
`logs`
|
||||
WHERE
|
||||
`mac` = ? AND received_at BETWEEN ? AND ?
|
||||
GROUP BY
|
||||
DATE_FORMAT(received_at, '%Y-%m-%d')
|
||||
ORDER BY
|
||||
received_at ASC";
|
||||
|
||||
|
||||
$stmt = $mysqli->prepare($sql);
|
||||
|
||||
// Errore nella preparazione query
|
||||
if (!$stmt) {
|
||||
$result = [
|
||||
'status' => 'ERR',
|
||||
'message' => $mysqli->error,
|
||||
];
|
||||
} else {
|
||||
if ($stmt->bind_param('sss', $mac, $date_start, $date_end)) {
|
||||
$mac = $_POST['mac'];
|
||||
$date_start = $_POST['date_start'];
|
||||
$date_end = $_POST['date_end'];
|
||||
|
||||
// Esecuzione statement
|
||||
$stmt->execute();
|
||||
|
||||
$rs = $stmt->get_result();
|
||||
|
||||
while ($row = $rs->fetch_assoc()) {
|
||||
$records[ $row['giorno'] ] = $row;
|
||||
}
|
||||
|
||||
$result = [
|
||||
'status' => 'OK',
|
||||
'records' => (array)$records,
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
echo json_encode($result);
|
||||
|
||||
$stmt->close();
|
||||
$mysqli->close();
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue