esp_proxmox: dropdowns relogio mostram estado atual (persistido no MySQL)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
deploy 2026-07-07 20:41:53 +01:00
parent aa78f601d5
commit 8c1b1267d4

View File

@ -13,7 +13,7 @@ function pmx_get(): array {
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
return $pdo->query("
SELECT uid, online, blocked, current_broker, last_seen,
brightness, heap, rssi, fw_ver, chip,
brightness, heap, rssi, fw_ver, chip, clock_style, clock_theme,
TIMESTAMPDIFF(SECOND, last_seen, NOW()) AS ago_s
FROM contadores
ORDER BY uid ASC
@ -37,7 +37,21 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if ($action0 === 'clock_style' || $action0 === 'clock_theme') {
$res = pmx_post($_POST);
$who = ($_POST['uid'] ?? '') === 'all' ? 'frota toda' : ($_POST['uid'] ?? '?');
if (!empty($res['ok'])) { $msg = "Relógio atualizado ($who)."; $msgOk = true; }
if (!empty($res['ok'])) {
$msg = "Relógio atualizado ($who)."; $msgOk = true;
// guardar estado no MySQL local p/ os dropdowns refletirem
try {
$pdo = new PDO('mysql:host=localhost;dbname=cagalhao;charset=utf8',
'master', 'master', [PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION]);
$col = $action0 === 'clock_style' ? 'clock_style' : 'clock_theme';
$val = $_POST['value'] ?? '';
if (($_POST['uid'] ?? '') === 'all') {
$pdo->prepare("UPDATE contadores SET $col=?")->execute([$val]);
} else {
$pdo->prepare("UPDATE contadores SET $col=? WHERE uid=?")->execute([$val, $_POST['uid']]);
}
} catch (Throwable $e) { /* estado é cosmético, não falhar por isto */ }
}
else { $msg = $res['error'] ?? 'Erro'; $msgOk = false; }
$qs = $msgOk ? '?ok='.urlencode($msg) : '?err='.urlencode($msg);
header("Location: /esp_proxmox.php$qs"); exit;
@ -165,21 +179,20 @@ ob_start();
</select>
</td>
<td style="white-space:nowrap">
<select onchange="clockCmd('<?= h($uid) ?>','clock_style',this.value);this.selectedIndex=0;" <?= $online?'':'disabled'?>
<?php $cs = $d['clock_style'] ?? null; $ct = $d['clock_theme'] ?? ''; ?>
<select onchange="clockCmd('<?= h($uid) ?>','clock_style',this.value)" <?= $online?'':'disabled'?>
style="background:#1e2733;color:#c9d1d9;border:1px solid #30363d;border-radius:4px;padding:3px 4px;font-size:11px;">
<option value="" selected>Estilo…</option>
<option value="0">Hybrid</option>
<option value="1">Analógico</option>
<option value="2">Barras</option>
<option value="3">Big</option>
<option value="" <?= $cs === null || $cs === '' ? 'selected' : '' ?> disabled>Estilo…</option>
<?php foreach (['Hybrid','Analógico','Barras','Big'] as $si => $sl): ?>
<option value="<?= $si ?>" <?= (string)$cs === (string)$si ? 'selected' : '' ?>><?= $sl ?></option>
<?php endforeach; ?>
</select>
<select onchange="clockCmd('<?= h($uid) ?>','clock_theme',this.value);this.selectedIndex=0;" <?= $online?'':'disabled'?>
<select onchange="clockCmd('<?= h($uid) ?>','clock_theme',this.value)" <?= $online?'':'disabled'?>
style="background:#1e2733;color:#c9d1d9;border:1px solid #30363d;border-radius:4px;padding:3px 4px;font-size:11px;">
<option value="" selected>Tema…</option>
<option value="ambar">Âmbar</option>
<option value="verde">Verde</option>
<option value="branco">Branco</option>
<option value="noite">Noite</option>
<option value="" <?= $ct === '' || $ct === null ? 'selected' : '' ?> disabled>Tema…</option>
<?php foreach (['ambar'=>'Âmbar','verde'=>'Verde','branco'=>'Branco','noite'=>'Noite'] as $tk => $tl): ?>
<option value="<?= $tk ?>" <?= $ct === $tk ? 'selected' : '' ?>><?= $tl ?></option>
<?php endforeach; ?>
</select>
</td>
<td style="white-space:nowrap">