public DatabaseDelegatorRaceRun(Race race, RaceRun rr, IAppDataModelDataBase db) { _db = db; _race = race; _rr = rr; rr.GetResultList().ItemChanged += OnItemChanged; rr.GetResultList().CollectionChanged += OnCollectionChanged; }
private void ObserveRaceRun(RaceRun previousRaceRun, RaceRun raceRun) { // Only the list of the current run is allowed to be sent. // => Startlist needs to be send in following cases: // a) Start list itself changes // b) The previous run completed so that the next run needs to be send ItemsChangedNotifier startListNotifier = new ItemsChangedNotifier(raceRun.GetStartListProvider().GetViewList()); startListNotifier.CollectionChanged += (o, e) => { updateStartList(previousRaceRun, raceRun); }; updateStartList(previousRaceRun, raceRun); // Initial update _notifier.Add(startListNotifier); if (previousRaceRun != null) { IsCompleteObserver completeObserver = new IsCompleteObserver(previousRaceRun, raceRun, updateStartList); _notifier.Add(completeObserver); } // Results ItemsChangedNotifier resultsNotifier = new ItemsChangedNotifier(raceRun.GetResultList()); resultsNotifier.ItemChanged += (o, e) => { _liveTiming.UpdateResults(raceRun); }; _liveTiming.UpdateResults(raceRun); // Initial update _notifier.Add(resultsNotifier); }
private void TxtStartNumber_TextChanged(object sender, TextChangedEventArgs e) { uint startNumber = 0U; try { startNumber = uint.Parse(txtStartNumber.Text); } catch (Exception) { } RaceParticipant participant = _race.GetParticipant(startNumber); if (participant != null) { txtParticipant.Text = participant.Fullname; RunResult rr = _currentRaceRun.GetResultList().FirstOrDefault(r => r.Participant == participant); if (rr != null) { cmbDisqualifyReason.Text = rr.GetDisqualifyText(); txtDisqualify.Text = rr.GetDisqualifyGoal(); cmbDisqualify.SelectedValue = rr.ResultCode; } else { txtDisqualify.Text = ""; cmbDisqualify.SelectedValue = null; } } else { txtParticipant.Text = ""; } }
public RunResultProxy(RaceParticipant rp, RaceRun raceRun) : base(rp) { _raceRun = raceRun; _raceRun.GetResultList().CollectionChanged += runResults_CollectionChanged; runResults_CollectionChanged(null, null); }
private void runResults_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) { // Look for RunResult for current participant and update this var rr = _raceRun.GetResultList().FirstOrDefault(r => r.Participant == this.Participant); if (rr != _rrMaster) { if (_rrMaster != null) { _rrMaster.PropertyChanged -= rr_PropertyChanged; } _rrMaster = rr; if (_rrMaster != null) { _rrMaster.PropertyChanged += rr_PropertyChanged; } UpdateRunResult(rr); } }
public HandTimingVM GetHandTimingVM(Race race, RaceRun run, ETimeModus timeModus) { HandTimingVM vm; if (!_handTimingVM.TryGetValue(handTimingVMKey(race, run, timeModus), out vm)) { vm = new HandTimingVM(timeModus); _handTimingVM.Add(handTimingVMKey(race, run, timeModus), vm); } vm.AddRunResults(run.GetResultList()); return(vm); }
private void observeRaceRun(RaceRun previousRaceRun, RaceRun raceRun) { ItemsChangedNotifier startListNotifier = new ItemsChangedNotifier(raceRun.GetStartListProvider().GetViewList()); startListNotifier.CollectionChanged += (o, e) => { updateStartList(previousRaceRun, raceRun); }; updateStartList(previousRaceRun, raceRun); // Initial update _notifier.Add(startListNotifier); if (previousRaceRun != null) { IsCompleteObserver completeObserver = new IsCompleteObserver(previousRaceRun, raceRun, updateStartList); _notifier.Add(completeObserver); } // Results _liveTiming.UpdateResults(raceRun); // Initial update ItemsChangedNotifier resultsNotifier = new ItemsChangedNotifier(raceRun.GetResultList()); resultsNotifier.ItemChanged += (sender, e) => { if (sender is RunResult rr) { Task.Delay(new TimeSpan(0, 0, 0, 0, 200)).ContinueWith(o => { System.Windows.Application.Current.Dispatcher.Invoke(() => { _liveTiming.UpdateInFinish(raceRun, rr.Participant); updateNextStarter(raceRun); }); }); } }; _notifier.Add(resultsNotifier); raceRun.OnTrackChanged += raceRun_OnTrackChanged; }
private void TxtStartNumber_TextChanged(object sender, TextChangedEventArgs e) { uint startNumber = 0U; try { startNumber = uint.Parse(txtStartNumber.Text); } catch (Exception) { } RaceParticipant participant = _thisRace.GetParticipant(startNumber); if (participant != null) { txtParticipant.Text = participant.Fullname; RunResult rr = _currentRaceRun.GetResultList().FirstOrDefault(r => r.Participant == participant); if (rr != null) { txtStart.Text = rr.GetStartTime()?.ToString(@"hh\:mm\:ss\,ffff"); txtFinish.Text = rr.GetFinishTime()?.ToString(@"hh\:mm\:ss\,ffff"); txtRun.Text = rr.GetRunTime()?.ToString(@"mm\:ss\,ff"); } else { txtStart.Text = ""; txtFinish.Text = ""; txtRun.Text = ""; } } else { txtParticipant.Text = ""; txtStart.Text = ""; txtFinish.Text = ""; txtRun.Text = ""; } CheckTime(txtStart); CheckTime(txtFinish); CheckTime(txtRun); }
internal string getTimingData(RaceRun raceRun) { // iiiehhmmss,zh // iii Id des Teilnehmers(muss in Datei mit Teilnehmerdaten vorhanden sein) // e ErgCode: 0 = Läufer im Ziel Laufzeit = hhmmss,zh // 1 = Nicht am Start Laufzeit = 999999,99 // 2 = Nicht im Ziel Laufzeit = 999999,99 // 3 = Disqualifiziert Laufzeit = 999999,99 // 4 = Nicht qualifiziert Laufzeit = 999999,99 // 9 = Läufer auf der Strecke Laufzeit = 000000,01 // hhmmss,zh Laufzeit string result = ""; List <RunResult> results = raceRun.GetResultList().OrderBy(o => o.StartNumber).ToList(); foreach (var r in results) { string item, time; int eCode; if (r.ResultCode == RunResult.EResultCode.Normal) { if (r.Runtime != null) { time = r.Runtime?.ToString(@"hhmmss\,ff", System.Globalization.CultureInfo.InvariantCulture); eCode = 0; } else if (r.GetStartTime() != null) { time = "000000,01"; eCode = 9; } else { // No useful data => skip continue; } } else { time = "999999,99"; switch (r.ResultCode) { case RunResult.EResultCode.NaS: eCode = 1; break; case RunResult.EResultCode.NiZ: eCode = 2; break; case RunResult.EResultCode.DIS: eCode = 3; break; case RunResult.EResultCode.NQ: eCode = 4; break; default: // No useful data => skip continue; } } item = string.Format("{0,3}{1,1}{2}", r.Participant.Id, eCode, time); if (!string.IsNullOrEmpty(result)) { result += "\n"; } result += item; } return(result); }