feat(stats): tab Statistik (F-005) — bar CPU/RAM, riwayat sparkline 60 dtk, laju NET/Disk, PIDs
CI / test (push) Successful in 22s

This commit is contained in:
oxpoe committed 2026-10-16 01:02:46 +07:00
1 parent d3abc15a95
commit 86db90ea9a
10 files changed
+409 -18

No files matched your search

+4 -4
View File
@@ -95,7 +95,7 @@ func (m Model) hostPanel(w, h int) string {
lines := []string{
fieldW(i18n.T("field.host"), 9) + dim(m.hostname),
fieldW(i18n.T("field.cpu"), 9) + dim(i18n.Tf("fmt.coreLoad", cpus, s.Load1)),
fieldW(i18n.T("field.ram"), 9) + dim(i18n.Tf("fmt.ramUsage", pct)) + memBar(pct, 10) +
fieldW(i18n.T("field.ram"), 9) + dim(i18n.Tf("fmt.ramUsage", pct)) + pctBar(float64(pct), 10) +
dim(fmt.Sprintf(" %s/%s", humanKBs(s.MemTotal-s.MemAvail), humanKBs(s.MemTotal))),
fieldW(i18n.T("field.uptime"), 9) + dim(humanDuration(s.Uptime)),
}
@@ -184,9 +184,9 @@ func humanDuration(sec float64) string {
}
}
// memBar — bar RAM; warna ikut beban (hijau <60% · kuning 60–85% · merah >85%).
func memBar(pct, w int) string {
fill := pct * w / 100
// pctBar — bar persentase; warna ikut beban (hijau <60% · kuning 60–85% · merah >85%).
func pctBar(pct float64, w int) string {
fill := int(pct * float64(w) / 100)
if fill > w {
fill = w
}