diff options
author | René Schaar <rene@schaar.priv.at> | 2022-02-15 17:50:10 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-16 00:50:10 +0800 |
commit | 609c91665e5e4d6da50af0b2168d6cb46f9d6273 (patch) | |
tree | 974e777fbd7262162c4f3b237f3688178962e89c /modules | |
parent | 2be49dee71af997ed944c177a090aeb3e6d606e8 (diff) | |
download | gitea-609c91665e5e4d6da50af0b2168d6cb46f9d6273.tar.gz gitea-609c91665e5e4d6da50af0b2168d6cb46f9d6273.zip |
Fix display time of milestones (#18753)
* Fix display time of milestones
* Move the SecToTime function
From the models/issue_stopwatch.go file to the modules/util package
* Rename the sec_to_time file
* Updated formatting
* Include copyright notice in sec_to_time.go
* Apply PR review suggestions
- Update copyright notice dates to 2022
- Change `1 day 3h 5min 7s` to `1d 3h 5m 7s`
* Rename hrs var and combine conditions
* Update unit tests to match new time pattern
Changed `1min` to `1m`
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Diffstat (limited to 'modules')
-rw-r--r-- | modules/templates/helper.go | 4 | ||||
-rw-r--r-- | modules/util/sec_to_time.go | 44 | ||||
-rw-r--r-- | modules/util/sec_to_time_test.go | 20 |
3 files changed, 66 insertions, 2 deletions
diff --git a/modules/templates/helper.go b/modules/templates/helper.go index 255866e2ed..63c165bc8b 100644 --- a/modules/templates/helper.go +++ b/modules/templates/helper.go @@ -256,7 +256,7 @@ func NewFuncMap() []template.FuncMap { }, "Printf": fmt.Sprintf, "Escape": Escape, - "Sec2Time": models.SecToTime, + "Sec2Time": util.SecToTime, "ParseDeadline": func(deadline string) []string { return strings.Split(deadline, "|") }, @@ -447,7 +447,7 @@ func NewTextFuncMap() []texttmpl.FuncMap { }, "Printf": fmt.Sprintf, "Escape": Escape, - "Sec2Time": models.SecToTime, + "Sec2Time": util.SecToTime, "ParseDeadline": func(deadline string) []string { return strings.Split(deadline, "|") }, diff --git a/modules/util/sec_to_time.go b/modules/util/sec_to_time.go new file mode 100644 index 0000000000..657b30cddf --- /dev/null +++ b/modules/util/sec_to_time.go @@ -0,0 +1,44 @@ +// Copyright 2022 Gitea. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package util + +import "fmt" + +// SecToTime converts an amount of seconds to a human-readable string (example: 66s -> 1min 6s) +func SecToTime(duration int64) string { + seconds := duration % 60 + minutes := (duration / (60)) % 60 + hours := duration / (60 * 60) % 24 + days := duration / (60 * 60) / 24 + + var formattedTime string + + if days > 0 { + formattedTime = fmt.Sprintf("%dd", days) + } + if hours > 0 { + if formattedTime == "" { + formattedTime = fmt.Sprintf("%dh", hours) + } else { + formattedTime = fmt.Sprintf("%s %dh", formattedTime, hours) + } + } + if minutes > 0 { + if formattedTime == "" { + formattedTime = fmt.Sprintf("%dm", minutes) + } else { + formattedTime = fmt.Sprintf("%s %dm", formattedTime, minutes) + } + } + if seconds > 0 { + if formattedTime == "" { + formattedTime = fmt.Sprintf("%ds", seconds) + } else { + formattedTime = fmt.Sprintf("%s %ds", formattedTime, seconds) + } + } + + return formattedTime +} diff --git a/modules/util/sec_to_time_test.go b/modules/util/sec_to_time_test.go new file mode 100644 index 0000000000..915dcbf727 --- /dev/null +++ b/modules/util/sec_to_time_test.go @@ -0,0 +1,20 @@ +// Copyright 2022 Gitea. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package util + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestSecToTime(t *testing.T) { + assert.Equal(t, SecToTime(10), "10s") + assert.Equal(t, SecToTime(100), "1m 40s") + assert.Equal(t, SecToTime(1000), "16m 40s") + assert.Equal(t, SecToTime(10000), "2h 46m 40s") + assert.Equal(t, SecToTime(100000), "1d 3h 46m 40s") + assert.Equal(t, SecToTime(1000000), "11d 13h 46m 40s") +} |