diff options
| author | Teddy Wing | 2017-06-03 17:25:26 +0200 | 
|---|---|---|
| committer | Teddy Wing | 2017-06-03 17:25:26 +0200 | 
| commit | e8bee60ed342ab4df93bf2fb582706ad7fd42546 (patch) | |
| tree | b0115143781eb18d71b2496c04e0bfb1b28432b6 | |
| parent | 341e22ef6b8290bba8ba43ecddb9f1175b3cafb9 (diff) | |
| download | timetasker-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.
| -rw-r--r-- | main.go | 2 | ||||
| -rw-r--r-- | timetask/http.go | 5 | ||||
| -rw-r--r-- | timetask/time_entry.go | 4 | 
3 files changed, 7 insertions, 4 deletions
| @@ -40,7 +40,7 @@ func main() {  	time_spent := kingpin.Flag("time", "Time spent working on project.").  		Short('t').  		Default("7"). -		Int() +		Float()  	date_str := kingpin.Flag("date", "Date when work was done (e.g. 2017-01-31)").  		Short('d').  		String() 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{ | 
