diff --git a/go/weed/weed_server/volume_server_ui/templates.go b/go/weed/weed_server/volume_server_ui/templates.go index c3db6e92a..73f8741a0 100644 --- a/go/weed/weed_server/volume_server_ui/templates.go +++ b/go/weed/weed_server/volume_server_ui/templates.go @@ -1,11 +1,21 @@ 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 { @@ -14,8 +24,26 @@ func join(data []int64) string { 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, + "join": join, + "prettySize": prettySize, } var StatusTpl = template.Must(template.New("status").Funcs(funcMap).Parse(` @@ -62,7 +90,7 @@ var StatusTpl = template.Must(template.New("status").Funcs(funcMap).Parse(`
{{ .Id }}