Hard to re-run bad heat
We ran our derby this weekend using DerbyNet for the first time. It worked great except for 1 hiccup.
We had 1 heat register 0.0 for times.
We use FastTrack with the fasttrack-automatic-gate-release flag.
I think what happened, was car was slow or did not make it to the end and the starter reset the gate before times got sent.
This registered the 0.0 for the time. That was user error, but in the software it was not obvious what was wrong. The heat would not run, but in the Race Dashboard it did not show the times or let us re-run the heat.
My guess, is in the software there is check for falsy times to display this because you should never get a 0 for a time.
Latter, we had a heat that a car crashed into another and that we were able to re-run no problem, so I think it is the edge case with 0 times.
To fix this, we ran all the heats. Then:
- Paused racing
- Pulled up the Timer Test screen - re-ran the heat by hand.
- Copied the times from the Timer Test Screen.
- Scrolled back to the bad heat
- Set results manually
Here is the data, we got out of the export.
I think this will fix it:
if (json.racers[i]['finishtime'] != null || json.racers[i]['finishplace'] > 0) {
results = true;
}
https://github.com/jeffpiazza/derbynet/blob/master/website/js/coordinator-poll.js#L116
I think you want && not ||. You want the results to be not null AND you want the place to be > 0. Right?
I think what happened, was car was slow or did not make it to the end and the starter reset the gate before times got sent. This registered the 0.0 for the time.
This seems like plausible path to getting 0.0 times. Once the timer is reset, the times no longer exist, so if they weren't already captured, they're gone for good. FastTrack timers don't report their times until all the racers have crossed the finish, so i don't think there's way to have gotten the times earlier.
That was user error, but in the software it was not obvious what was wrong. The heat would not run, but in the Race Dashboard it did not show the times or let us re-run the heat.
After times were recorded for all the lanes, even though they were all zeroes, racing should have (and presumably did) advance to the next heat. In the Race Dashboard, there's a button specifically for "Re-Run Last Heat" which would have allowed you to discard the previously-recorded (zeroes) results and tee up the just-finished heat to run again.
If a problem in a heat's results is discovered a little later, it's sill possible to use the controls on the race dashboard to step back to the heat in question and set it up to be re-run. Switching to timer test mode should not have been necessary. I'm assuming you just didn't see/weren't familiar with the re-run heat controls?
To the point about not accepting zero times in the first place, that wouldn't obviate the need for manual intervention. (There's no point telling the timer you don't like the results it's reporting.) If anything, it'd likely provoke a situation in which the timer is satisfied that it sent the heat's results, while the server is stuck waiting for results it would consider acceptable.
As an aside: the code snippet in https://github.com/jeffpiazza/derbynet/issues/383#issuecomment-2679360359 controls only the label on the "Re-Run This Heat"/"Re-Run Last Heat" button, so by itself that wouldn't be enough to effect the sort of change you're talking about.
Re https://github.com/jeffpiazza/derbynet/issues/383#issuecomment-2764800477: || is correct, it's quite possible to get a finish time without a place, or a place without a finish time. Either counts as a result for the lane.