Пример #1
0
        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));
            }
        }
Пример #2
0
        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();
            }
        }
Пример #3
0
        /*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);
            }
        }
Пример #4
0
        private void RemoveAllDrivers()
        {
            if (!Application.Current.Dispatcher.CheckAccess())
            {
                Application.Current.Dispatcher.Invoke(RemoveAllDrivers);
                return;
            }

            lock (_lockObject)
            {
                _driverNameTimingMap.Clear();
                DriversViewModels.Clear();
            };
        }
Пример #5
0
        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);
        }
Пример #6
0
        // 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));
        }
Пример #7
0
        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);
            }
        }
Пример #8
0
        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");
        }
Пример #9
0
        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);
        }
Пример #10
0
        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);
                }
            }
        }
Пример #11
0
        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);
        }