public ViewModelCHB(string name, MainViewModel parent) { FileName = name; DisplayName = name; modelChb = new ModelCHB(); modelChb.PropertyChanged += modelChb_PropertyChanged; var Text = File.ReadAllLines(name); string primNum = string.Empty; string secNum = string.Empty; string volt = string.Empty; IsCanBild = false; try { modelChb.ClearAll(); AnData = Text.Where(txtItem => txtItem.Split('|').Any(strItem => strItem.Trim().Equals("").Equals(false))). Where(txtItem => txtItem.Split('|').ElementAt(5).Trim().Equals("").Equals(false)). Where(txtItem => txtItem.Split('|').Any(strItem => strItem.Trim().Equals("PrimNumb")).Equals(false)).Select(strItem => { string[] strArr = strItem.Split('|').Select(item => item.Trim()).ToArray(); if (!strArr[2].Equals("")) { primNum = !strArr[2].Equals("0000") ? strArr[2].TrimStart('0') : "0"; secNum = !strArr[3].Equals("0000") ? strArr[3].TrimStart('0') : "0"; volt = strArr[4]; } return(new AnalizerData() { Date = strArr[0], Time = strArr[1], PrimNumber = primNum, SecNumber = secNum, Voltage = volt, Frequency = strArr[5].Split('.').First(), ZValue = strArr[6], RValue = strArr[7], XValue = strArr[8], AValue = strArr[9] }); }).ToList(); } catch (Exception ex) { throw new Exception(ex.Message); } BatteryNums = AnData.Select(item => item.PrimNumber).Distinct().OrderBy(item => int.Parse(item)).ToList(); SelectedBattery = BatteryNums.FirstOrDefault(); IsCanBild = true; modelChb.GetRVData(); modelChb.GetAxisScale(); modelChb.GetModa(); modelChb.ViewChart(); }
/// <summary> /// Метод для очистки всех коллекций AnData, RVData, BatteryNums, FrequencyItems /// </summary> public void ClearAll() { try { AnData.Clear(); RVData.Clear(); BatteryNums.Clear(); FrequencyItems.Clear(); SelectedFrequency = null; LLPoint.Clear(); ChartTitle = Thread.CurrentThread.CurrentUICulture.ToString().Contains("en") ? "Battery Parameters" : "Параметры АКБ"; } catch (Exception ex) { MessageBox.Show(ex.Message); } }
/// <summary> /// Метод для получения набора значений параметров R и U, а также для составления /// списка номеров батарей и частот тестового сигнала /// </summary> public void GetRVData() { try { IsCanBild = false; var rvdata = new List <CellData>(); RVData.Clear(); var anDataBat = AnData.Where(item => item.PrimNumber.Equals(SelectedBattery)); FrequencyItems = anDataBat.Select(item => item.Frequency).Distinct().OrderBy(item => int.Parse(item)).ToList(); if (SelectedFrequency == null) { SelectedFrequency = FrequencyItems.LastOrDefault(); } var AnDataBatFreq = new List <AnalizerData>(anDataBat.Where(item => item.Frequency.Equals(SelectedFrequency))); switch (SelectedSortIndex) { case 0: AnDataBatFreq = !SortDirection?AnDataBatFreq.OrderBy(item => int.Parse(item.SecNumber, new CultureInfo("EN"))).ToList() : AnDataBatFreq.OrderByDescending(item => int.Parse(item.SecNumber, new CultureInfo("EN"))).ToList(); break; case 1: AnDataBatFreq = !SortDirection?AnDataBatFreq.OrderBy(item => double.Parse(item.ZValue, new CultureInfo("EN"))).ToList() : AnDataBatFreq.OrderByDescending(item => double.Parse(item.ZValue, new CultureInfo("EN"))).ToList(); break; case 2: AnDataBatFreq = !SortDirection?AnDataBatFreq.OrderBy(item => double.Parse(item.RValue, new CultureInfo("EN"))).ToList() : AnDataBatFreq.OrderByDescending(item => double.Parse(item.RValue, new CultureInfo("EN"))).ToList(); break; case 3: AnDataBatFreq = !SortDirection?AnDataBatFreq.OrderBy(item => double.Parse(item.XValue, new CultureInfo("EN"))).ToList() : AnDataBatFreq.OrderByDescending(item => double.Parse(item.XValue, new CultureInfo("EN"))).ToList(); break; case 4: AnDataBatFreq = !SortDirection?AnDataBatFreq.OrderBy(item => double.Parse(item.AValue, new CultureInfo("EN"))).ToList() : AnDataBatFreq.OrderByDescending(item => double.Parse(item.AValue, new CultureInfo("EN"))).ToList(); break; case 5: AnDataBatFreq = !SortDirection?AnDataBatFreq.OrderBy(item => double.Parse(item.Voltage, new CultureInfo("EN"))).ToList() : AnDataBatFreq.OrderByDescending(item => double.Parse(item.Voltage, new CultureInfo("EN"))).ToList(); break; } switch (SelectedParameterIndex) { case 0: rvdata = new List <CellData>(AnDataBatFreq.Select(item => new CellData(item.SecNumber, double.Parse(item.ZValue, new CultureInfo("EN")), double.Parse(item.Voltage, new CultureInfo("EN"))))); break; case 1: rvdata = new List <CellData>(AnDataBatFreq.Select(item => new CellData(item.SecNumber, double.Parse(item.RValue, new CultureInfo("EN")), double.Parse(item.Voltage, new CultureInfo("EN"))))); break; case 2: rvdata = new List <CellData>(AnDataBatFreq.Select(item => new CellData(item.SecNumber, double.Parse(item.XValue, new CultureInfo("EN")), double.Parse(item.Voltage, new CultureInfo("EN"))))); break; case 3: rvdata = new List <CellData>(AnDataBatFreq.Select(item => new CellData(item.SecNumber, double.Parse(item.AValue, new CultureInfo("EN")), double.Parse(item.Voltage, new CultureInfo("EN"))))); break; } RVData = new ObservableCollection <CellData>(rvdata); IsCanBild = true; ChartTitle = SelectedBattery; } catch (Exception ex) { throw new Exception(ex.Message); } }