package master_ui import ( "fmt" "html/template" "strconv" "strings" ) const ( _ = iota // ignore first value by assigning to blank identifier KB float64 = 1 << (10 * iota) MB GB TB PB ) func join(data []int64) string { var ret []string for _, d := range data { ret = append(ret, strconv.Itoa(int(d))) } return strings.Join(ret, ",") } func prettySize(byteSize uint64) string { sz := float64(byteSize) switch { case sz >= PB: return fmt.Sprintf("%.2f PB", sz/PB) case sz >= TB: return fmt.Sprintf("%.2f TB", sz/TB) case sz >= GB: return fmt.Sprintf("%.2f GB", sz/GB) case sz >= MB: return fmt.Sprintf("%.2f MB", sz/MB) case sz >= KB: return fmt.Sprintf("%.2f KB", sz/KB) } return fmt.Sprintf("%.0f Bytes", sz) } var funcMap = template.FuncMap{ "join": join, "prettySize": prettySize, } var StatusTpl = template.Must(template.New("status").Funcs(funcMap).Parse(` SeaweedFS {{ .Version }}

Disk Stats

{{ range .DiskStatuses }} {{ end }}
{{ .Dir }} {{ .Free | prettySize }} Free

System Stats

{{ range $key, $val := .Stats }} {{ end }}
Master {{.Master}}
Weekly # ReadRequests {{ .Counters.ReadRequests.WeekCounter.ToList | join }}
Daily # ReadRequests {{ .Counters.ReadRequests.DayCounter.ToList | join }}
Hourly # ReadRequests {{ .Counters.ReadRequests.HourCounter.ToList | join }}
Last Minute # ReadRequests {{ .Counters.ReadRequests.MinuteCounter.ToList | join }}
Concurrent Connections {{ .Counters.Connections.WeekCounter.Sum }}
{{ $key }} {{ $val }}

Volumes

{{ range .Volumes }} {{ end }}
Id Collection Size Files Trash TTL
{{ .Id }} {{ .Collection }} {{ .Size | prettySize }} {{ .FileCount }} {{ .DeleteCount }} / {{.DeletedByteCount | prettySize }} {{ .Ttl }}
`))