Fix status log elapsed time
This commit is contained in:
+22
-4
@@ -534,6 +534,20 @@ if (isset($_GET['mode']) && $_GET['mode'] === 'ajax') {
|
||||
$stmtLogs->bindValue(':limit', LOG_LIMIT, PDO::PARAM_INT);
|
||||
$stmtLogs->execute();
|
||||
$logs = $stmtLogs->fetchAll();
|
||||
$logReferenceTs = null;
|
||||
if (!empty($logs[0]['ts'])) {
|
||||
$parsedReferenceTs = strtotime((string)$logs[0]['ts']);
|
||||
if ($parsedReferenceTs !== false) {
|
||||
$logReferenceTs = $parsedReferenceTs;
|
||||
}
|
||||
}
|
||||
foreach ($logs as &$logRow) {
|
||||
$rowTs = strtotime((string)($logRow['ts'] ?? ''));
|
||||
$logRow['age_seconds'] = ($logReferenceTs !== null && $rowTs !== false)
|
||||
? max(0, $logReferenceTs - $rowTs)
|
||||
: 0;
|
||||
}
|
||||
unset($logRow);
|
||||
|
||||
$stmtChart = $pdo->prepare(""
|
||||
. "SELECT ts, battery_voltage FROM ("
|
||||
@@ -572,7 +586,8 @@ if (isset($_GET['mode']) && $_GET['mode'] === 'ajax') {
|
||||
'stale' => $isStale,
|
||||
'stale_reason' => $staleReason,
|
||||
'latest_tcp' => $latestTcp,
|
||||
'state_duration' => current_state_duration($pdo, $latest),
|
||||
'server_time' => time(),
|
||||
'state_duration' => current_engine_state_duration($pdo, $latest),
|
||||
'engine_state_duration' => current_engine_state_duration($pdo, $latest),
|
||||
'poll_interval' => $isFastPollState ? 5 : 10,
|
||||
'log_count' => count($logs),
|
||||
@@ -1682,7 +1697,7 @@ if (isset($_GET['mode']) && $_GET['mode'] === 'usage') {
|
||||
.then(payload => {
|
||||
if (payload.status !== 'success') return;
|
||||
updateDashboard(payload.data, payload.meta || {});
|
||||
updateLogs(payload.logs || []);
|
||||
updateLogs(payload.logs || [], payload.meta || {});
|
||||
updateChart(payload.chart || []);
|
||||
usageRefreshIntervalSec = normalizedUsageInterval(payload.meta?.poll_interval);
|
||||
})
|
||||
@@ -1872,14 +1887,17 @@ if (isset($_GET['mode']) && $_GET['mode'] === 'usage') {
|
||||
).getTime();
|
||||
}
|
||||
|
||||
function updateLogs(logs) {
|
||||
function updateLogs(logs, meta = {}) {
|
||||
const tbody = document.getElementById('log-table-body');
|
||||
const serverNowMs = Number(meta.server_time || 0) > 0 ? Number(meta.server_time) * 1000 : Date.now();
|
||||
const html = logs.map(log => {
|
||||
const cmdCode = String(log.cmd || '').toLowerCase();
|
||||
const cmd = CMD_MAP[cmdCode] || { label: '', icon: 'fa-terminal', bg: 'rgba(128,128,128,0.1)', color: 'var(--text-secondary)' };
|
||||
const cmdText = cmd.label ? t(cmd.label) : (cmdCode.toUpperCase() || '-');
|
||||
const logMs = parseLocalTimestamp(log.ts);
|
||||
const ageSec = logMs === null ? 0 : Math.max(0, Math.floor((Date.now() - logMs) / 1000));
|
||||
const ageSec = Number.isFinite(Number(log.age_seconds))
|
||||
? Math.max(0, Number(log.age_seconds))
|
||||
: (logMs === null ? 0 : Math.max(0, Math.floor((serverNowMs - logMs) / 1000)));
|
||||
const doors = doorSummary(log);
|
||||
const remote = remoteSummary(log);
|
||||
const trim = escapeHtml(log.raw_trim || '-');
|
||||
|
||||
Reference in New Issue
Block a user