diff --git a/public_html/index.html b/public_html/index.html
index 8e17b38..d027206 100644
--- a/public_html/index.html
+++ b/public_html/index.html
@@ -677,9 +677,11 @@ body::after{
-
+
JARVIS SERVER
165.22.1.228
+
+
-
CPU USAGE --%
+
CPU --%
@@ -687,36 +689,28 @@ body::after{
-
-
-
+
-
-
SERVICES
+
+
SERVICES
-
-
-
DO SERVER 165.22.1.228
-
-
-
TOP PROCESSES
+
+
PROCESSES
@@ -1240,40 +1234,36 @@ function setBar(id, pct) {
el.className = 'metric-bar-fill' + (pct>90?' danger':pct>75?' warn':'');
}
-// ── RENDER: DO SERVER ─────────────────────────────────────────────────
+// ── RENDER: DO SERVER (site health only — metrics merged into system panel) ───
function renderDO(d) {
- const el = document.getElementById('do-stats');
- const dot = document.getElementById('bb-do-dot');
+ const dot = document.getElementById('bb-do-dot');
const status = document.getElementById('bb-do-status');
+ const sitesEl = document.getElementById('sites-list');
- if (!d || d.error) {
- el.innerHTML = `
${d?.error || 'Unreachable'}
`;
- dot.className='bb-dot offline'; status.textContent='OFFLINE';
- document.getElementById('tb-do').className='text-red';
- document.getElementById('tb-do').textContent='OFFLINE';
+ if (!d || d.error || !d.reachable) {
+ if (dot) dot.className = 'bb-dot offline';
+ if (status) status.textContent = 'OFFLINE';
+ document.getElementById('tb-do').className = 'text-red';
+ document.getElementById('tb-do').textContent = 'OFFLINE';
+ if (sitesEl) sitesEl.innerHTML = '
Unavailable
';
return;
}
- const reachable = d.reachable;
- dot.className = 'bb-dot ' + (reachable ? 'online' : 'offline');
- status.textContent = reachable ? 'ONLINE' : 'OFFLINE';
- document.getElementById('tb-do').className = reachable ? 'text-green' : 'text-red';
- document.getElementById('tb-do').textContent = reachable ? 'ONLINE' : 'OFFLINE';
+ dot.className = 'bb-dot online';
+ status.textContent = 'ONLINE';
+ document.getElementById('tb-do').className = 'text-green';
+ document.getElementById('tb-do').textContent = 'ONLINE';
- if (!reachable) { el.innerHTML='
UNREACHABLE
'; return; }
-
- const cpuClass = (d.cpu_pct||0)>80?'danger':(d.cpu_pct||0)>60?'warn':'ok';
- const memClass = (d.memory?.percent||0)>80?'danger':(d.memory?.percent||0)>60?'warn':'ok';
-
- el.innerHTML = `
-
-
MEMORY
${d.memory?.percent??'--'}%
-
DISK
${d.disk_used_pct??'--'}
-
-
- ${d.sites && Object.keys(d.sites).length ? `
WEBSITES:
- ${Object.entries(d.sites).map(([k,v])=>{const cls=v==='up'?'ok':v==='down'?'danger':'warn';const lbl=k.replace(/^https?:\/\//,'').replace(/\.com$/,'').replace(/\.orbishosting$/,'');return`
`}).join('')}` : ''}
- `;
+ if (sitesEl && d.sites && Object.keys(d.sites).length) {
+ sitesEl.innerHTML = Object.entries(d.sites).map(([k, v]) => {
+ const cls = v === 'up' ? 'ok' : v === 'down' ? 'danger' : 'warn';
+ const lbl = k.replace(/^https?:\/\//, '').replace(/\.orbishosting\.com$/, '').replace(/\.com$/, '');
+ return `
+
${lbl}
+
${v.toUpperCase()}
+
`;
+ }).join('');
+ }
}
async function loadNetwork() {