public DataViewControlFactory(ViewModelBase vm) { if (vm == null) { throw new ArgumentNullException("vm"); } param = vm as PsaParameterDataViewModel; veh = vm as ExportableVehicleViewModel; pset = vm as IPsaParametersSetViewModel; trace = vm as ExportablePsaTraceViewModel; }
private void BackgroundJob(object sender, DoWorkEventArgs e) { IsWaitingMode = true; DiagnosticSystemConnector[] connectors = e.Argument as DiagnosticSystemConnector[]; foreach (DiagnosticSystemConnector cnctr in connectors) { try { HashSet <string> vins = new HashSet <string>(); foreach (PsaTraceInfo info in cnctr.GetAllTraces()) { var viewModel = new ExportablePsaTraceViewModel(info); traces.Add(viewModel); if (vins.All(vin => vin != viewModel.Vin)) { ExportableVehicleViewModel veh = new ExportableVehicleViewModel( viewModel.Vin, viewModel.Manufacturer, viewModel.Mileage, viewModel.VehicleModelName); veh.Add(viewModel); vins.Add(viewModel.Vin); dispatcher. BeginInvoke(DispatcherPriority.Normal, new AddToByVehiclesDelegate(AddTraceToByVehicles), veh); } else { dispatcher. BeginInvoke(DispatcherPriority.Normal, new AddToExistingByVehicleDelegate(AddTraceToExistingByVehicle), viewModel); } } e.Result = connectors; } catch (Exception exc) { Log.Error(exc, exc.Message); } } }
private void CheckTracesForAlreadyDisplayedAndDisplayNew(PortableData data) { // Select those traces that are not yet displayed. IList <PsaTrace> tracesToDisplay = data.PsaTraces.Where(t => !IsAlreadyDisplayed(t)).ToList(); // Display traces that are ready to be displayed (possibly creating Vehicles for them). foreach (PsaTrace trace in tracesToDisplay) { if (!ByVehicles.Any(v => v.Vin.Equals(trace.Vin, StringComparison.OrdinalIgnoreCase))) { // add vehicle, add trace to vehicle ExportableVehicleViewModel newVehicle = new ExportableVehicleViewModel( trace.Vin, trace.Manufacturer, trace.Mileage, trace.VehicleModelName); ExportablePsaTraceViewModel traceViewModel = new ExportablePsaTraceViewModel(new PsaTraceInfo(trace, new PsaTraceMetadata())); newVehicle.Traces.Add(traceViewModel); traces.Add(traceViewModel); ByVehicles.Add(newVehicle); } else { // add trace to vehicle ExportablePsaTraceViewModel traceViewModel = new ExportablePsaTraceViewModel(new PsaTraceInfo(trace, new PsaTraceMetadata())); ByVehicles.First(v => v.Vin.Equals(trace.Vin, StringComparison.OrdinalIgnoreCase)). Traces.Add(traceViewModel); traces.Add(traceViewModel); } } if (tracesToDisplay.Count != 0) { synchronizer.StartSynchronizationAsync(traces.Select(t => t.ModelTraceInfo).ToList()); } }
private void AddTraceToExistingByVehicle(ExportablePsaTraceViewModel vm) { byVehicles.First(v => v.Vin == vm.Vin).Add(vm); }
public void Add(ExportablePsaTraceViewModel trace) { Traces.Add(trace); SortTracesByDate(); RegisterExportableChild(trace); }