mirror of
https://github.com/myronblair/jarvis
synced 2026-07-27 16:22:55 -05:00
Site Health tab: fix parkerslingshotrentals.com label + widen cards for full domain names; fix sites freshness-check interval mismatch (300s vs 180s cron) causing checks to feel far apart
This commit is contained in:
@@ -182,7 +182,10 @@ function collect_all(): array {
|
||||
}
|
||||
|
||||
// ── Site Health (TTL 5 min) ───────────────────────────────────────────
|
||||
if ($fresh('sites', 300)) {
|
||||
// Fixed 2026-07-07: this guard was 300s but cron only runs every 180s, so sites
|
||||
// were effectively only re-checked every OTHER run (~6 min gaps, felt "far apart").
|
||||
// 170s keeps it just under the cron cadence so it re-checks on every run.
|
||||
if ($fresh('sites', 170)) {
|
||||
$results['sites'] = 'skipped (fresh)';
|
||||
} else try {
|
||||
$sites = [
|
||||
|
||||
@@ -1388,6 +1388,14 @@ a{color:var(--cyan);text-decoration:none}
|
||||
.stat-card .val{font-size:1.6rem;color:var(--cyan)}
|
||||
.stat-card .sub{color:var(--text-dim);font-size:0.65rem;margin-top:4px}
|
||||
.stat-card .ok{color:var(--green)}.stat-card .warn{color:var(--yellow)}.stat-card .danger{color:var(--red)}
|
||||
/* Sites tab: domain names are much longer than typical stat labels (e.g.
|
||||
parkerslingshotrentals.com) — wider columns + no letter-spacing so they read cleanly. */
|
||||
.site-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;margin-bottom:24px}
|
||||
.site-card{background:var(--surface);border:1px solid var(--border);padding:16px}
|
||||
.site-card .lbl{color:var(--text-dim);font-size:0.68rem;letter-spacing:0.5px;margin-bottom:8px;white-space:normal;word-break:break-word;line-height:1.4}
|
||||
.site-card .val{font-size:1.2rem;color:var(--cyan)}
|
||||
.site-card .sub{color:var(--text-dim);font-size:0.65rem;margin-top:4px}
|
||||
.site-card .ok{color:var(--green)}.site-card .danger{color:var(--red)}
|
||||
|
||||
/* ── TABLE ── */
|
||||
.tbl-wrap{background:var(--surface);border:1px solid var(--border);overflow-x:auto}
|
||||
@@ -3520,18 +3528,18 @@ async function loadSites() {
|
||||
if (!sites.length) { document.getElementById('sites-content').innerHTML='<div class="empty">NO SITE DATA</div>'; return; }
|
||||
const labels = {
|
||||
'jarvis':'jarvis.orbishosting.com','tomsjavajive':'tomsjavajive.com',
|
||||
'epictravelexp':'epictravelexpeditions.com','parkersling':'parkerslingshot',
|
||||
'epictravelexp':'epictravelexpeditions.com','parkerslingshotrentals':'parkerslingshotrentals.com',
|
||||
'orbishosting':'orbishosting.com','orbisportal':'orbis.orbishosting.com','tomtomgames':'tomtomgames.com'
|
||||
};
|
||||
let cards = sites.map(s => {
|
||||
const up = s.fact_value==='up';
|
||||
return `<div class="stat-card" style="border-left:3px solid ${up?'var(--green)':'var(--red)'}">
|
||||
return `<div class="site-card" style="border-left:3px solid ${up?'var(--green)':'var(--red)'}">
|
||||
<div class="lbl">${esc(labels[s.fact_key]||s.fact_key)}</div>
|
||||
<div class="val ${up?'ok':'danger'}" style="font-size:1.2rem">${up?'ONLINE':'OFFLINE'}</div>
|
||||
<div class="val ${up?'ok':'danger'}">${up?'ONLINE':'OFFLINE'}</div>
|
||||
<div class="sub">checked ${ago(s.updated_at)}</div>
|
||||
</div>`;
|
||||
}).join('');
|
||||
document.getElementById('sites-content').innerHTML = `<div class="stat-grid">${cards}</div>`;
|
||||
document.getElementById('sites-content').innerHTML = `<div class="site-grid">${cards}</div>`;
|
||||
}
|
||||
|
||||
// ── USERS ─────────────────────────────────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user