aboutsummaryrefslogtreecommitdiffstats
path: root/timetask
diff options
context:
space:
mode:
authorTeddy Wing2017-06-03 17:25:26 +0200
committerTeddy Wing2017-06-03 17:25:26 +0200
commite8bee60ed342ab4df93bf2fb582706ad7fd42546 (patch)
treeb0115143781eb18d71b2496c04e0bfb1b28432b6 /timetask
parent341e22ef6b8290bba8ba43ecddb9f1175b3cafb9 (diff)
downloadtimetasker-e8bee60ed342ab4df93bf2fb582706ad7fd42546.tar.bz2
Change `TimeEntry.Time` to a `float64`
I had forgotten that time spent can be a decimal. Make this field a float and change related code accordingly: * --time flag * `NewTimeEntry()` `time` argument * `buildSubmissionParams()` can't use `strconv.Itoa` as that's an integer function. Instead we use `FormatFloat`. Truncate time parsing to two decimal places because to me that seems like enough. Who's going to say they spent `0.324` hours on something? Also, in order to be able to properly submit values to TimeTask (at least on the edition I use), the times must be written in European/French format, with commas (`,`) as decimal separators. Do a string replace to get this, as the float formatter will give us a period (`.`) separator.
Diffstat (limited to 'timetask')
-rw-r--r--timetask/http.go5
-rw-r--r--timetask/time_entry.go4
2 files changed, 6 insertions, 3 deletions
diff --git a/timetask/http.go b/timetask/http.go
index 6e73276..f236665 100644
--- a/timetask/http.go
+++ b/timetask/http.go
@@ -5,6 +5,7 @@ import (
"net/http/cookiejar"
"net/url"
"strconv"
+ "strings"
"golang.org/x/net/publicsuffix"
)
@@ -97,9 +98,11 @@ func buildSubmissionParams(time_entry TimeEntry) url.Values {
time_entry.Date.Format("02/01/06"), // day/month/year
)
+ time_str := strconv.FormatFloat(time_entry.Time, 'f', 2, 64)
+ time_european_format := strings.Replace(time_str, ".", ",", 0)
v.Set(
"f_time0",
- strconv.Itoa(time_entry.Time),
+ time_european_format,
)
var billable string
diff --git a/timetask/time_entry.go b/timetask/time_entry.go
index ff0ad1f..bb7a741 100644
--- a/timetask/time_entry.go
+++ b/timetask/time_entry.go
@@ -10,7 +10,7 @@ type TimeEntry struct {
Task int
WorkType int
Date time.Time
- Time int
+ Time float64
Billable bool
Description string
}
@@ -19,7 +19,7 @@ func NewTimeEntry(
profile Profile,
project Project,
date time.Time,
- time int,
+ time float64,
description string,
) TimeEntry {
return TimeEntry{