go/trains/cmd/train2livesplit: fix
This commit is contained in:
parent
9cb68e94d3
commit
1f34692907
1 changed files with 18 additions and 8 deletions
|
@ -106,13 +106,16 @@ func fetchTrainOnce(ctx context.Context, id int) (*webapi.ServiceData, error) {
|
|||
func generateLiveSplitScriptData(sd *webapi.ServiceData) (*templateVars, error) {
|
||||
asf := new(strings.Builder)
|
||||
currentSplit := -1
|
||||
usingTime := func(td *webapi.TimingData) time.Time {
|
||||
usingTime := func(td *webapi.TimingData) (time.Time, error) {
|
||||
if td.PublicScheduled != nil {
|
||||
return *td.PublicScheduled
|
||||
return td.PublicScheduled.ToTime()
|
||||
}
|
||||
return *td.WorkingScheduled
|
||||
return td.WorkingScheduled.ToTime()
|
||||
}
|
||||
timetableDepartureTime, err := usingTime(sd.Locations[0].DepartureTiming)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("parsing departure time: %w", err)
|
||||
}
|
||||
timetableDepartureTime := usingTime(sd.Locations[0].DepartureTiming)
|
||||
var lastHadActual bool
|
||||
for n, l := range sd.Locations {
|
||||
var usingData *webapi.TimingData
|
||||
|
@ -124,7 +127,10 @@ func generateLiveSplitScriptData(sd *webapi.ServiceData) (*templateVars, error)
|
|||
case l.ArrivalTiming != nil:
|
||||
usingData = l.ArrivalTiming
|
||||
}
|
||||
usingTimetableTime := usingTime(usingData)
|
||||
usingTimetableTime, err := usingTime(usingData)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("parsing time for %q: %w", l.Location.Name, err)
|
||||
}
|
||||
|
||||
var secondsOnTimetable, secondsActual int
|
||||
secondsOnTimetable = int((usingTimetableTime.Sub(timetableDepartureTime)) / time.Second)
|
||||
|
@ -135,7 +141,11 @@ func generateLiveSplitScriptData(sd *webapi.ServiceData) (*templateVars, error)
|
|||
lastHadActual = false
|
||||
}
|
||||
if usingData.Actual != nil {
|
||||
secondsActual = int((usingData.Actual.Sub(timetableDepartureTime)) / time.Second)
|
||||
timeActual, err := usingData.Actual.ToTime()
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("parsing actual time for %q: %w", l.Location.Name, err)
|
||||
}
|
||||
secondsActual = int((timeActual.Sub(timetableDepartureTime)) / time.Second)
|
||||
lastHadActual = true
|
||||
}
|
||||
|
||||
|
@ -159,8 +169,8 @@ this["state"].CurrentSplitIndex = %d;
|
|||
|
||||
return &templateVars{
|
||||
Service: sd,
|
||||
FirstLocation: &sd.Locations[0],
|
||||
LastLocation: &sd.Locations[len(sd.Locations)-1],
|
||||
FirstLocation: sd.Locations[0],
|
||||
LastLocation: sd.Locations[len(sd.Locations)-1],
|
||||
AddSplitFunctions: asf.String(),
|
||||
}, nil
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue