diff --git a/internal/gateway/ui/index.html b/internal/gateway/ui/index.html index c0cc5ac..b59f1d0 100644 --- a/internal/gateway/ui/index.html +++ b/internal/gateway/ui/index.html @@ -966,24 +966,22 @@ function drawStatusChart(rows) { const total = (rows||[]).reduce((a,x)=>a+x.reqs,0); if (!total) return; const palette = ['#3fb27f', '#4fa3d8', '#f0a45c', '#e06c6c', '#b06ce0', '#8a9bb5', '#6fbfa0', '#d0a45c']; - const r = Math.min(rect.width, H) / 2 - 2; + const rOut = Math.min(rect.width, H) / 2 - 2; + const rIn = Math.max(rOut * 0.45, 1); const cx = rect.width / 2, cy = H / 2; let a0 = -Math.PI / 2; rows.forEach((row, i) => { const sweep = row.reqs / total * Math.PI * 2; + const a1 = a0 + sweep; ctx.beginPath(); - ctx.moveTo(cx, cy); - ctx.arc(cx, cy, r, a0, a0 + sweep); + // outer arc, then inner arc reversed -> true annulus slice (hollow center) + ctx.arc(cx, cy, rOut, a0, a1); + ctx.arc(cx, cy, rIn, a1, a0, true); ctx.closePath(); ctx.fillStyle = palette[i % palette.length]; ctx.fill(); - a0 += sweep; + a0 = a1; }); - // carve a clean center hole (donut) instead of a solid pie with a number - ctx.beginPath(); - ctx.arc(cx, cy, Math.max(r * 0.45, 1), 0, Math.PI * 2); - ctx.fillStyle = 'var(--card)'; - ctx.fill(); } function paintKeyTable(rows, keyNames) { const el = $('#tb-key'); if (!el) return;