TimeSpan?getAccumulatedTime(RaceRun rr, RunResultWithPosition resWp) { Race race = rr.GetRace(); TimeSpan?ts = new TimeSpan(); for (int i = 0; i < race.GetMaxRun(); i++) { RaceRun r = race.GetRun(i); if (r.Run <= rr.Run) { TimeSpan?t = r.GetRunResult(resWp.Participant)?.Runtime; if (t != null && ts != null) { ts = ts + (TimeSpan)t; } else { ts = null; } } } return(ts); }
string getRemainingStartersList(RaceRun raceRun, string grouping, int limit) { string output = ""; Application.Current.Dispatcher.Invoke(() => { ViewConfigurator viewConfigurator = new ViewConfigurator(raceRun.GetRace()); var vp = viewConfigurator.GetRemainingStartersViewProvider(raceRun); if (grouping != null) { vp.ChangeGrouping(grouping); } List <object> remaingStarters = new List <object>(); int c = 0; foreach (var item in vp.GetView()) { if (limit >= 0 && c >= limit) { break; } remaingStarters.Add(item); c++; } output = JsonConversion.ConvertOnStartList(remaingStarters); }); return(output); }
public void UpdateInFinish(RaceRun raceRun, RaceParticipant rp) { SetActiveRaceRun(raceRun); var results = ViewUtilities.ViewToList <RaceResultItem>(raceRun.GetRace().GetTotalResultView()); var rri4Participant = results.FirstOrDefault(rri => rri.Participant == rp); scheduleTransfer(new LTTransfer(getXmlEventResult(raceRun, rri4Participant))); }
public StartListViewProvider GetStartlistViewProvider(RaceRun rr, string context = null) { ViewFactory factory = Singleton <ViewFactory> .Instance; StartListViewProvider slVP; // First Run if (1 == rr.Run) { FirstRunStartListViewProvider frslVP = factory.Create <FirstRunStartListViewProvider>(_config.Run1_StartistView); // Backup if nothing has been created if (frslVP == null) { frslVP = new FirstRunStartListViewProvider(); } frslVP.SetDefaultGrouping(_config.Run1_StartistViewGrouping); frslVP.Init(rr.GetRace().GetParticipants()); slVP = frslVP; } else // Second or later run { // Figure out previous run RaceRun rrPrevious = rr.GetRace().GetRuns().Where(r => r.Run == (rr.Run - 1U)).First(); SecondRunStartListViewProvider srslVP = factory.Create <SecondRunStartListViewProvider>(_config.Run2_StartistView); if (srslVP == null) { srslVP = new SimpleSecondRunStartListViewProvider(StartListEntryComparer.Direction.Ascending); } srslVP.SetDefaultGrouping(_config.Run2_StartistViewGrouping); srslVP.Init(rrPrevious); slVP = srslVP; } return(slVP); }
string getResultList(RaceRun raceRun, string grouping) { string output = ""; Application.Current.Dispatcher.Invoke(() => { ViewConfigurator viewConfigurator = new ViewConfigurator(raceRun.GetRace()); RaceRunResultViewProvider vp = viewConfigurator.GetRaceRunResultViewProvider(raceRun); if (grouping != null) { vp.ChangeGrouping(grouping); } output = JsonConversion.ConvertRunResults(vp.GetView()); }); return(output); }
private void OnTimedEvent(object sender, System.Timers.ElapsedEventArgs e) { var onTrack = _raceRun.GetOnTrackList().ToArray(); foreach (var lr in onTrack) { if (lr.GetStartTime() != null) { TimeSpan startTime = (TimeSpan)lr.GetStartTime(); TimeSpan curTime = _raceRun.GetRace().GetDataModel().GetCurrentDayTime(); TimeSpan timeSinceStart = curTime - startTime; if (timeSinceStart.TotalSeconds > _secondsTillAutoNiZ) { setToNiZ(lr.Participant); } } } }
private void CmbRaceRun_SelectionChanged(object sender, SelectionChangedEventArgs e) { CBItem selected = (sender as ComboBox).SelectedValue as CBItem; RaceRun selectedRaceRun = selected?.Value as RaceRun; if (_currentRaceRun != selectedRaceRun) { // Stop any helper if (_liveTimingAutoNiZ != null) { _liveTimingAutoNiZ.Dispose(); } _liveTimingAutoNiZ = null; if (_liveTimingAutoNaS != null) { _liveTimingAutoNaS.Dispose(); } _liveTimingAutoNaS = null; // Remember new race run _currentRaceRun = selectedRaceRun; if (_currentRaceRun != null) { if (_dataModel.GetCurrentRace() == _currentRaceRun.GetRace()) { _dataModel.SetCurrentRaceRun(_currentRaceRun); } } ConnectUiToRaceRun(_currentRaceRun); ConfigureTimingHelper(); } }
public DiqualifyVM(RaceRun raceRun) { _raceRun = raceRun; _disqualifyList = new CopyObservableCollection <RunResultProxy, RaceParticipant>(_raceRun.GetRace().GetParticipants(), (p) => { return(new RunResultProxy(p, _raceRun)); }, false); }
void writeRunData(RaceRun raceRun, AdditionalRaceProperties.RaceRunProperties raceRunProperties) { _writer.WriteStartElement("rundata"); _writer.WriteAttributeString("runnumber", raceRun.Run.ToString()); { _writer.WriteStartElement("coursedata"); if (string.IsNullOrEmpty(raceRun.GetRace().AdditionalProperties?.CoarseName)) { throw new DSVExportException("missing coarsename"); } _writer.WriteStartElement("coursename"); _writer.WriteValue(raceRun.GetRace().AdditionalProperties?.CoarseName); _writer.WriteEndElement(); if (!string.IsNullOrEmpty(raceRun.GetRace().AdditionalProperties?.CoarseHomologNo)) { _writer.WriteStartElement("homologationnumber"); _writer.WriteValue(raceRun.GetRace().AdditionalProperties.CoarseHomologNo); _writer.WriteEndElement(); } if (raceRunProperties.Gates <= 0) { throw new DSVExportException("missing number_of_gates"); } _writer.WriteStartElement("number_of_gates"); _writer.WriteValue(raceRunProperties.Gates.ToString()); _writer.WriteEndElement(); if (raceRunProperties.Turns <= 0) { throw new DSVExportException("missing number_of_turninggates"); } _writer.WriteStartElement("number_of_turninggates"); _writer.WriteValue(raceRunProperties.Turns.ToString()); _writer.WriteEndElement(); if (raceRun.GetRace().AdditionalProperties?.StartHeight <= 0) { throw new DSVExportException("missing startaltitude"); } _writer.WriteStartElement("startaltitude"); _writer.WriteValue(raceRun.GetRace().AdditionalProperties?.StartHeight.ToString()); _writer.WriteEndElement(); if (raceRun.GetRace().AdditionalProperties?.FinishHeight <= 0) { throw new DSVExportException("missing finishaltitude"); } _writer.WriteStartElement("finishaltitude"); _writer.WriteValue(raceRun.GetRace().AdditionalProperties?.FinishHeight.ToString()); _writer.WriteEndElement(); if (raceRun.GetRace().AdditionalProperties?.CoarseLength <= 0) { throw new DSVExportException("missing courselength"); } _writer.WriteStartElement("courselength"); _writer.WriteValue(raceRun.GetRace().AdditionalProperties.CoarseLength.ToString()); _writer.WriteEndElement(); writeCourseSetterPerson(_writer, raceRunProperties.CoarseSetter); if (!string.IsNullOrWhiteSpace(raceRunProperties.Forerunner1.Name)) { writeForeRunnerPerson(_writer, 1, raceRunProperties.Forerunner1); } else { throw new DSVExportException("missing forerunner"); } if (!string.IsNullOrWhiteSpace(raceRunProperties.Forerunner2.Name)) { writeForeRunnerPerson(_writer, 2, raceRunProperties.Forerunner2); } if (!string.IsNullOrWhiteSpace(raceRunProperties.Forerunner3.Name)) { writeForeRunnerPerson(_writer, 3, raceRunProperties.Forerunner3); } _writer.WriteEndElement(); } if (!string.IsNullOrEmpty(raceRun.GetRace().AdditionalProperties.Weather) || !string.IsNullOrEmpty(raceRun.GetRace().AdditionalProperties.Snow) || !string.IsNullOrEmpty(raceRun.GetRace().AdditionalProperties.TempStart) || !string.IsNullOrEmpty(raceRun.GetRace().AdditionalProperties.TempFinish)) { _writer.WriteStartElement("meteodata"); if (!string.IsNullOrEmpty(raceRun.GetRace().AdditionalProperties.Weather)) { _writer.WriteStartElement("weather"); _writer.WriteValue(raceRun.GetRace().AdditionalProperties.Weather); _writer.WriteEndElement(); } if (!string.IsNullOrEmpty(raceRun.GetRace().AdditionalProperties.Snow)) { _writer.WriteStartElement("snowtexture"); _writer.WriteValue(raceRun.GetRace().AdditionalProperties.Snow); _writer.WriteEndElement(); } if (!string.IsNullOrEmpty(raceRun.GetRace().AdditionalProperties.TempStart)) { _writer.WriteStartElement("temperature_startaltitude"); _writer.WriteValue(raceRun.GetRace().AdditionalProperties.TempStart); _writer.WriteEndElement(); } if (!string.IsNullOrEmpty(raceRun.GetRace().AdditionalProperties.TempFinish)) { _writer.WriteStartElement("temperature_finishaltitude"); _writer.WriteValue(raceRun.GetRace().AdditionalProperties.TempFinish); _writer.WriteEndElement(); } _writer.WriteEndElement(); } { _writer.WriteStartElement("starttime"); _writer.WriteValue(raceRunProperties.StartTime); // TODO: Ensure "HH:MM" 24h _writer.WriteEndElement(); } _writer.WriteEndElement(); }
internal string getXmlRaceInfo(RaceRun raceRun) { using (var sw = new Utf8StringWriter()) { using (var xw = XmlWriter.Create(sw, _xmlSettings)) { xw.WriteStartDocument(); xmlWriteStartElementLivetiming(xw); xw.WriteStartElement("raceinfo"); xw.WriteElementString("event", raceRun.GetRace().Description); xw.WriteElementString("slope", raceRun.GetRace().AdditionalProperties.CoarseName); xw.WriteElementString("discipline", getDisciplin(raceRun.GetRace())); xw.WriteElementString("gender", getGender(raceRun.GetRace())); xw.WriteElementString("category", _fisCategory); xw.WriteElementString("place", raceRun.GetRace().AdditionalProperties.Location); xw.WriteElementString("tempunit", "c"); xw.WriteElementString("longunit", "m"); xw.WriteElementString("speedunit", "Kmh"); xw.WriteStartElement("run"); xw.WriteAttributeString("no", raceRun.Run.ToString()); xw.WriteElementString("discipline", getDisciplin(raceRun.GetRace())); if (raceRun.GetRace().AdditionalProperties?.StartHeight > 0) { xw.WriteElementString("start", raceRun.GetRace().AdditionalProperties?.StartHeight.ToString()); } if (raceRun.GetRace().AdditionalProperties?.FinishHeight > 0) { xw.WriteElementString("finish", raceRun.GetRace().AdditionalProperties?.FinishHeight.ToString()); } if (raceRun.GetRace().AdditionalProperties?.StartHeight > 0 && raceRun.GetRace().AdditionalProperties?.FinishHeight > 0) { xw.WriteElementString("height", (raceRun.GetRace().AdditionalProperties?.StartHeight - raceRun.GetRace().AdditionalProperties?.FinishHeight).ToString()); } AdditionalRaceProperties.RaceRunProperties raceRunProperties = null; if (raceRun.Run == 1) { raceRunProperties = raceRun.GetRace().AdditionalProperties?.RaceRun1; } else if (raceRun.Run >= 2) { raceRunProperties = raceRun.GetRace().AdditionalProperties?.RaceRun2; } if (raceRunProperties != null) { if (raceRunProperties.Gates > 0) { xw.WriteElementString("gates", raceRunProperties.Gates.ToString()); } if (raceRunProperties.Turns > 0) { xw.WriteElementString("turninggates", raceRunProperties.Turns.ToString()); } if (raceRunProperties.StartTime != null && raceRunProperties.StartTime.Contains(":") && raceRunProperties.StartTime.Length == 5) { xw.WriteElementString("hour", raceRunProperties.StartTime.Substring(0, 2)); xw.WriteElementString("minute", raceRunProperties.StartTime.Substring(3, 2)); } } if (raceRun.GetRace().AdditionalProperties?.DateResultList != null) { xw.WriteElementString("day", ((DateTime)raceRun.GetRace().AdditionalProperties?.DateResultList).Day.ToString()); xw.WriteElementString("month", ((DateTime)raceRun.GetRace().AdditionalProperties?.DateResultList).Month.ToString()); xw.WriteElementString("year", ((DateTime)raceRun.GetRace().AdditionalProperties?.DateResultList).Year.ToString()); } xw.WriteStartElement("racedef"); xw.WriteEndElement(); xw.WriteEndElement(); // run xw.WriteEndElement(); // raceinfo xw.WriteEndElement(); // Livetiming xw.WriteEndDocument(); } return(sw.ToString()); } }