Add Server Info card

This commit is contained in:
josh committed 2026-04-20 20:57:39 -04:00
1 parent 5687d8a4e7
commit 49a20a946f
2 files changed
+106

No files matched your search

+58
View File
@@ -112,9 +112,67 @@ if cgi.params.key?("content")
drives = info.select { |e| e["type"] == "drive" }
filesystems = info.select { |e| e["type"] == "filesystem" }
vms = info.select { |e| e["type"] == "vm" }
server = info.find { |e| e["type"] == "server" }
html << %(<div class="span-3">)
if server
html << %(<div class="section-label">Server</div>)
html << %(<div class="card ok"><div class="card-header"><span class="card-title">Server Info</span></div><div class="subitems">)
if server["os_name"]
html << <<~HTML
<div class="subitem">
<div class="subitem-left"><div class="dot ok"></div><span class="subitem-name">OS</span></div>
<span class="subitem-value ok">#{CGI.escapeHTML(server["os_name"])}</span>
</div>
HTML
end
if server["install_date"]
html << <<~HTML
<div class="subitem">
<div class="subitem-left"><div class="dot ok"></div><span class="subitem-name">Installed</span></div>
<span class="subitem-value ok">#{CGI.escapeHTML(server["install_date"])}</span>
</div>
HTML
end
cpu_model = server["cpu_model"]
cpu_cores = server["cpu_cores"]
if cpu_model || cpu_cores
cpu_text = [
cpu_model,
cpu_cores ? "#{cpu_cores} thread#{cpu_cores == 1 ? "" : "s"}" : nil
].compact.join(" · ")
html << <<~HTML
<div class="subitem">
<div class="subitem-left"><div class="dot ok"></div><span class="subitem-name">CPU</span></div>
<span class="subitem-value ok">#{CGI.escapeHTML(cpu_text)}</span>
</div>
HTML
end
mem_total = server["mem_total"].to_i
mem_used = server["mem_used"].to_i
if mem_total > 0
mem_pct_f = mem_used * 100.0 / mem_total
mem_pct = mem_pct_f.round
mem_cls = mem_pct_f >= 90 ? "bad" : mem_pct_f >= 75 ? "warn" : "ok"
html << <<~HTML
<div class="subitem" style="flex-direction:column;align-items:stretch;gap:0.35rem;">
<div style="display:flex;justify-content:space-between;align-items:center;">
<div class="subitem-left"><div class="dot #{mem_cls}"></div><span class="subitem-name">Memory</span></div>
<span class="subitem-value #{mem_cls}">#{mem_pct}% · #{CGI.escapeHTML(human_capacity(mem_used))} / #{CGI.escapeHTML(human_capacity(mem_total))}</span>
</div>
<div class="bar-track"><div class="bar-fill #{mem_cls}" style="width:#{mem_pct}%"></div></div>
</div>
HTML
end
html << %(</div></div>)
end
if vms.any?
running = vms.count { |v| v["state"].to_s == "running" }
total = vms.size