public void MatchDriversList(List <DriverTiming> drivers) { if (!Application.Current.Dispatcher.CheckAccess()) { Application.Current.Dispatcher.Invoke(() => MatchDriversList(drivers)); return; } PitBoardViewModel.Reset(); lock (_lockObject) { List <DriverTiming> driversToRemove = _driverNameTimingMap.Values.Where(x => drivers.FirstOrDefault(y => y.Name == x.Name) == null).ToList(); List <DriverTiming> driversToAdd = drivers.Where(x => !_driverNameTimingMap.ContainsKey(x.Name)).ToList(); List <DriverTiming> driversToRebind = drivers.Where(x => _driverNameTimingMap.ContainsKey(x.Name)).ToList(); foreach (DriverTiming driverToRebind in driversToRebind) { _driverNameTimingMap[driverToRebind.Name] = driverToRebind; RebindViewModel(DriversViewModels.First(x => x.Name == driverToRebind.Name), driverToRebind); } int i = 0; for (i = 0; i < driversToAdd.Count && i < driversToRemove.Count; i++) { _driverNameTimingMap.Remove(driversToRemove[i].Name); _driverNameTimingMap.Add(driversToAdd[i].Name, driversToAdd[i]); RebindViewModel(DriversViewModels.First(x => x.Name == driversToRemove[i].Name), driversToAdd[i]); } driversToRemove.Skip(i).ForEach(RemoveDriver); AddDrivers(driversToAdd.Skip(i)); } }
public void UpdateProperties(SimulatorDataSet dataSet) { if (_loadIndex > 0) { return; } lock (_lockObject) { List <DriverTiming> orderedTimings = (DriversOrdering == DisplayModeEnum.Absolute ? _driverNameTimingMap.Values.OrderBy(x => x.Position) : _driverNameTimingMap.Values.OrderBy(x => x.DistanceToPlayer)).ToList(); for (int i = 0; i < orderedTimings.Count; i++) { RebindViewModel(DriversViewModels[i], orderedTimings[i]); if (DriversViewModels[i].IsPlayer) { PlayerViewModel = DriversViewModels[i]; } } DriversViewModels.ForEach(x => x.RefreshProperties()); if (_refreshGapWatch.ElapsedMilliseconds < 500) { return; } UpdateGapsSize(dataSet); _refreshGapWatch.Restart(); } }
/*private void RemoveAllDrivers() * { * if (!Application.Current.Dispatcher.CheckAccess()) * { * Application.Current.Dispatcher.Invoke(RemoveAllDrivers); * return; * } * * lock (_lockObject) * { * _driverNameTimingMap.Clear(); * DriversViewModels.Clear(); * }; * }*/ public void AddDriver(DriverTiming driver) { if (!Application.Current.Dispatcher.CheckAccess()) { Application.Current.Dispatcher.Invoke(() => AddDriver(driver)); return; } DriverTimingViewModel newViewModel = new DriverTimingViewModel(driver) { ClassIndicationBrush = GetClassColor(driver.DriverInfo) }; lock (_lockObject) { //If possible, rebind - do not create new if (_driverNameTimingMap.ContainsKey(driver.Name)) { _driverNameTimingMap[driver.Name] = driver; RebindViewModel(DriversViewModels.First(x => x.Name == driver.Name), driver); return; } _driverNameTimingMap[driver.Name] = driver; newViewModel.OutLineColor = GetDriverOutline(driver.Name); DriversViewModels.Add(newViewModel); } }
private void RemoveAllDrivers() { if (!Application.Current.Dispatcher.CheckAccess()) { Application.Current.Dispatcher.Invoke(RemoveAllDrivers); return; } lock (_lockObject) { _driverNameTimingMap.Clear(); DriversViewModels.Clear(); }; }
public bool TryGetCustomOutline(IDriverInfo driverInfo, out ColorDto outlineColor) { if (driverInfo?.DriverName == null) { outlineColor = null; return(false); } DriverTimingViewModel viewModel; lock (DriversViewModels) { viewModel = DriversViewModels.FirstOrDefault(x => x.Name == driverInfo.DriverName); } outlineColor = viewModel?.OutLineColor; return(viewModel?.HasCustomOutline ?? false); }
// GET: Drivers cała lista kierowców public ActionResult Index() { DatabaseControler dc = new DatabaseControler(); var userName = User.Identity.Name; ApplicationUserManager userManager = HttpContext.GetOwinContext().GetUserManager <ApplicationUserManager>(); var user = userManager.FindByName(userName); if (!IsAdministrator(user.Id)) { RedirectToAction("Index", "Home"); } var drivers = dc.GetAllUsers(user); DriversViewModels model = new DriversViewModels(); model.Drivers = drivers; model.IsSetCompany = dc.IsSetCompany(user.Id); return(View(model)); }
public void RemoveDriver(DriverTiming driver) { if (!Application.Current.Dispatcher.CheckAccess()) { Application.Current.Dispatcher.Invoke(() => RemoveDriver(driver)); return; } lock (_lockObject) { DriverTimingViewModel toRemove = DriversViewModels.FirstOrDefault(x => x.DriverTiming == driver); if (toRemove == null) { return; } _driverNameTimingMap.Remove(driver.Name); DriversViewModels.Remove(toRemove); } }
private void AddDrivers(IEnumerable <DriverTiming> drivers) { if (!Application.Current.Dispatcher.CheckAccess()) { Application.Current.Dispatcher.Invoke(() => AddDrivers(drivers)); return; } try { _loadIndex++; Logger.Info("Add Drivers Called"); List <DriverTimingViewModel> newViewModels = drivers.Select(x => new DriverTimingViewModel(x) { ClassIndicationBrush = GetClassColor(x.DriverInfo), OutLineColor = GetDriverOutline(x.Name) }).ToList(); foreach (DriverTimingViewModel driverTimingViewModel in newViewModels) { lock (_lockObject) { if (_driverNameTimingMap.ContainsKey(driverTimingViewModel.Name)) { continue; } _driverNameTimingMap[driverTimingViewModel.Name] = driverTimingViewModel.DriverTiming; DriversViewModels.Add(driverTimingViewModel); } } _loadIndex--; } catch (Exception ex) { Logger.Error(ex); } Logger.Info("Add Drivers Completed"); }
public async Task UpdateAndShowPitBoard() { if (!_displaySettingsViewModel.PitBoardSettingsViewModel.IsEnabled) { return; } PitBoardViewModel.UpdatePitBoard(DriversViewModels.ToArray()); if (_pitBoardTask != null) { try { _cancellationTokenSource.Cancel(); await _pitBoardTask; } catch (TaskCanceledException) { } } _cancellationTokenSource = new CancellationTokenSource(); _pitBoardTask = PitBoardViewModel.ShowPitBoard(TimeSpan.FromSeconds(_displaySettingsViewModel.PitBoardSettingsViewModel.DisplaySeconds), _cancellationTokenSource.Token); }
public void MatchDriversList(List <DriverTiming> drivers) { if (!Application.Current.Dispatcher.CheckAccess()) { Application.Current.Dispatcher.Invoke(() => MatchDriversList(drivers)); return; } lock (_lockObject) { IEnumerable <DriverTiming> driversToRemove = _driverNameTimingMap.Values.Where(x => drivers.FirstOrDefault(y => y.Name == x.Name) == null).ToList(); IEnumerable <DriverTiming> driversToAdd = drivers.Where(x => !_driverNameTimingMap.ContainsKey(x.Name)).ToList(); IEnumerable <DriverTiming> driversToRebind = drivers.Where(x => _driverNameTimingMap.ContainsKey(x.Name)).ToList(); driversToRemove.ForEach(RemoveDriver); AddDrivers(driversToAdd); foreach (DriverTiming driverToRebind in driversToRebind) { _driverNameTimingMap[driverToRebind.Name] = driverToRebind; RebindViewModel(DriversViewModels.First(x => x.Name == driverToRebind.Name), driverToRebind); } } }
private void DriverPresentationsManagerOnDriverCustomColorEnabledChanged(object sender, DriverCustomColorEnabledArgs e) { ColorDto colorToSet = e.IsCustomOutlineEnabled ? e.DriverColor : null; DriversViewModels.Where(x => x.Name == e.DriverName).ForEach(x => x.OutLineColor = colorToSet); }