Allow the time formatting function return errors
parent
79a1693942
commit
02ac39af65
|
@ -3,6 +3,7 @@ package statusscreen
|
|||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/olekukonko/tablewriter"
|
||||
"io/ioutil"
|
||||
|
@ -71,10 +72,12 @@ func (sl *SL) GetOutput() string {
|
|||
}
|
||||
|
||||
for _, v := range sl.lastResponse.ResponseData.Metros {
|
||||
formattedTime, _ := sl.formatDisplayTime(v.ExpectedDateTime)
|
||||
|
||||
table.Append([]string{
|
||||
v.LineNumber,
|
||||
v.Destination,
|
||||
sl.formatDisplayTime(v.ExpectedDateTime),
|
||||
formattedTime,
|
||||
v.TimeTabledDateTime[11:], // Remove YYYY-MM-DDT from the beginning of the string
|
||||
v.ExpectedDateTime[11:], // Remove YYYY-MM-DDT from the beginning of the string
|
||||
})
|
||||
|
@ -117,7 +120,7 @@ func (sl *SL) getTimeTable() (SLResponse, error) {
|
|||
return parsedResponse, nil
|
||||
}
|
||||
|
||||
func (sl *SL) formatDisplayTime(expected string) string {
|
||||
func (sl *SL) formatDisplayTime(expected string) (string, error) {
|
||||
myTimeZone, _ := time.Now().Zone()
|
||||
|
||||
then, err := time.Parse("2006-01-02T15:04:05 MST", expected+" "+myTimeZone)
|
||||
|
@ -127,13 +130,21 @@ func (sl *SL) formatDisplayTime(expected string) string {
|
|||
|
||||
timeLeft := time.Since(then).Seconds() * -1
|
||||
|
||||
// If time is less than zero
|
||||
if timeLeft < 0 {
|
||||
return "undefined", errors.New("Train is gone already")
|
||||
}
|
||||
|
||||
// If time is less than one minute, show seconds
|
||||
if timeLeft <= 60 && timeLeft > 0 {
|
||||
return fmt.Sprintf("%d sec", int(timeLeft))
|
||||
return fmt.Sprintf("%d sec", int(timeLeft)), nil
|
||||
}
|
||||
|
||||
// If time is less than one hour, show minutes
|
||||
if timeLeft <= 3600 && timeLeft > 0 {
|
||||
return fmt.Sprintf("%d min", int(timeLeft)/60)
|
||||
return fmt.Sprintf("%d min", int(timeLeft)/60), nil
|
||||
}
|
||||
|
||||
return fmt.Sprintf("%02d:%02d:%02d", then.Hour(), then.Minute(), then.Second())
|
||||
// Otherwise, just return a timestamp: HH:MM:SS
|
||||
return fmt.Sprintf("%02d:%02d:%02d", then.Hour(), then.Minute(), then.Second()), nil
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue