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) ───────────────────────────────────────────
|
// ── 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)';
|
$results['sites'] = 'skipped (fresh)';
|
||||||
} else try {
|
} else try {
|
||||||
$sites = [
|
$sites = [
|
||||||
|
|||||||
@@ -1388,6 +1388,14 @@ a{color:var(--cyan);text-decoration:none}
|
|||||||
.stat-card .val{font-size:1.6rem;color:var(--cyan)}
|
.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 .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)}
|
.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 ── */
|
/* ── TABLE ── */
|
||||||
.tbl-wrap{background:var(--surface);border:1px solid var(--border);overflow-x:auto}
|
.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; }
|
if (!sites.length) { document.getElementById('sites-content').innerHTML='<div class="empty">NO SITE DATA</div>'; return; }
|
||||||
const labels = {
|
const labels = {
|
||||||
'jarvis':'jarvis.orbishosting.com','tomsjavajive':'tomsjavajive.com',
|
'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'
|
'orbishosting':'orbishosting.com','orbisportal':'orbis.orbishosting.com','tomtomgames':'tomtomgames.com'
|
||||||
};
|
};
|
||||||
let cards = sites.map(s => {
|
let cards = sites.map(s => {
|
||||||
const up = s.fact_value==='up';
|
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="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 class="sub">checked ${ago(s.updated_at)}</div>
|
||||||
</div>`;
|
</div>`;
|
||||||
}).join('');
|
}).join('');
|
||||||
document.getElementById('sites-content').innerHTML = `<div class="stat-grid">${cards}</div>`;
|
document.getElementById('sites-content').innerHTML = `<div class="site-grid">${cards}</div>`;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ── USERS ─────────────────────────────────────────────────────────────────────
|
// ── USERS ─────────────────────────────────────────────────────────────────────
|
||||||
|
|||||||
Reference in New Issue
Block a user