diff --git a/app/common/utils.go b/app/common/utils.go index e0bf76f..e291747 100644 --- a/app/common/utils.go +++ b/app/common/utils.go @@ -10,7 +10,6 @@ import ( "io" "io/fs" "log" - "math" "net/http" "os" "reflect" @@ -256,33 +255,6 @@ func GetInstancePathFromRequest(c *gin.Context) (paas.InstancePath, error) { return vm_path, nil } -func FormatNumber(val int64, base int64) (string, string) { - valf := float64(val) - basef := float64(base) - steps := 0 - for math.Abs(valf) > basef && steps < 4 { - valf /= basef - steps++ - } - - switch base { - case 1000: - s := fmt.Sprintf("%.4f", valf) - s = strings.TrimRight(s, "0") - s = strings.TrimRight(s, ".") - prefixes := []string{"", "K", "M", "G", "T"} - return s, prefixes[steps] - case 1024: - s := fmt.Sprintf("%.4f", valf) - s = strings.TrimRight(s, "0") - s = strings.TrimRight(s, ".") - prefixes := []string{"", "Ki", "Mi", "Gi", "Ti"} - return s, prefixes[steps] - default: - return "0", "" - } -} - func GetRequestContextFromCookies(auth paas.Auth) map[string]string { return map[string]string{ "username": auth.Username, diff --git a/app/routes/account.go b/app/routes/account.go index 231e11e..cae07a7 100644 --- a/app/routes/account.go +++ b/app/routes/account.go @@ -36,7 +36,7 @@ type NumericResource struct { Type string Name string Multiplier int64 - Base int64 + Base uint64 Compact bool Unit string Display bool @@ -50,7 +50,7 @@ type StorageResource struct { Type string Name string Multiplier int64 - Base int64 + Base uint64 Compact bool Unit string Display bool @@ -119,7 +119,7 @@ func HandleGETAccount(c *gin.Context) { // create a resource chart for resource depending on resource type switch t := v.(type) { case NumericResource: - avail, prefix := common.FormatNumber(t.Total.Avail*t.Multiplier, t.Base) + avail, prefix := paas.FormatNumber(paas.SafeUint64(t.Total.Avail*t.Multiplier), t.Base) pools[poolname].Resources[category].(map[string]any)[resource] = ResourceChart{ Type: t.Type, Display: t.Display, @@ -132,7 +132,7 @@ func HandleGETAccount(c *gin.Context) { ColorHex: InterpolateColorHSV(Green, Red, float64(t.Total.Used)/float64(t.Total.Max)).ToHTML(), } case StorageResource: - avail, prefix := common.FormatNumber(t.Total.Avail*t.Multiplier, t.Base) + avail, prefix := paas.FormatNumber(paas.SafeUint64(t.Total.Avail*t.Multiplier), t.Base) pools[poolname].Resources[category].(map[string]any)[resource] = ResourceChart{ Type: t.Type, Display: t.Display, diff --git a/app/routes/backups.go b/app/routes/backups.go index 2bb737f..910326a 100644 --- a/app/routes/backups.go +++ b/app/routes/backups.go @@ -96,7 +96,7 @@ func GetInstanceBackups(vm paas.InstancePath, auth paas.Auth) ([]InstanceBackup, } for i := range backups { - size, prefix := common.FormatNumber(backups[i].Size, 1024) + size, prefix := paas.FormatNumber(paas.SafeUint64(backups[i].Size), paas.Base1024) backups[i].SizeFormatted = fmt.Sprintf("%s %sB", size, prefix) t := time.Unix(backups[i].CTime, 0) diff --git a/proxmoxaas-common-lib b/proxmoxaas-common-lib index ad6b821..24904dd 160000 --- a/proxmoxaas-common-lib +++ b/proxmoxaas-common-lib @@ -1 +1 @@ -Subproject commit ad6b8211b371439204878fd47b429a4daf36dc1b +Subproject commit 24904dde666ce92c346c71ffbe7eed2430db6b6f