{{/* The polled part of Health: two rows of boxes, in the page and in its fragment (GET /server/health/fragment) alike. panel.js polls the first row (data-poll, outerHTML) and htmx swaps the second into place by its id when the fragment marks it out of band (.Refresh) — the two rows are siblings, and a fragment can replace only the element that asked for it. */}} {{define "health_body"}}
{{template "box_open" .Machine}}
{{range .MachineRows}} {{end}}
ResourceUsageDetail
{{.Resource}}{{if .Gauge}}{{.Gauge.Text}}{{else if .Usage}}{{.Usage}}{{else}}—{{end}}{{range .Detail}}
{{.}}
{{end}}
{{template "box_close"}}
{{template "box_open" .Processes}} {{if .ProcessError}} {{template "body_open"}}

Could not ask supervisord for the process list.

{{template "body_close"}} {{else}}
{{range .ProcessRows}} {{end}}
ProgramStateDetail
{{.Name}}{{template "tag" .State}}{{.Detail}}
{{end}} {{template "box_close"}}
{{template "box_open" .Certificate}} {{template "body_open"}} {{if .CertFacts}}{{template "facts" .CertFacts}}{{end}}

{{.CertDetail}}

{{template "body_close"}} {{template "box_close"}}
{{template "box_open" .Sockets}}
{{range .SocketRows}} {{end}}
MilterState
{{.Name}}{{if .Note}} · {{.Note}}{{end}}
{{.Path}}{{if .Detail}}
{{.Detail}}{{end}}
{{template "tag" .State}}
{{template "box_close"}}
{{template "box_open" .Hostname}} {{template "body_open"}} {{template "facts" .HostFacts}} {{template "body_close"}} {{template "box_close"}}
{{end}}