diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2020-09-14 11:52:07 +0300 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2020-09-14 11:52:07 +0300 |
| commit | cf2ff4168ce5da36f2353805bb09d2cd1dc5347f (patch) | |
| tree | f5cf89d5d5f11fd707d6a0f1f2f8f0a4b5ead658 /Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/ViewModels | |
| parent | d2341eb3059629ae98ef4d53f341bda6bc84e325 (diff) | |
| parent | 71f91b8aad2bde92eec659852a87dbb5a895d108 (diff) | |
| download | Tango-cf2ff4168ce5da36f2353805bb09d2cd1dc5347f.tar.gz Tango-cf2ff4168ce5da36f2353805bb09d2cd1dc5347f.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/_git/Tango
Diffstat (limited to 'Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/ViewModels')
| -rw-r--r-- | Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/ViewModels/MainWindowVM.cs | 143 | ||||
| -rw-r--r-- | Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/ViewModels/SettingsVM.cs | 115 |
2 files changed, 136 insertions, 122 deletions
diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/ViewModels/MainWindowVM.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/ViewModels/MainWindowVM.cs index 38f8dee81..48d426d23 100644 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/ViewModels/MainWindowVM.cs +++ b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/ViewModels/MainWindowVM.cs @@ -126,7 +126,24 @@ namespace Tango.DispenserAnalyzer.UI.ViewModels } } - + private string _titleAxisBottom; + + public string TitleAxisBottom + { + get { return _titleAxisBottom; } + set { _titleAxisBottom = value; RaisePropertyChangedAuto(); } + } + + private string _titleAxisLeft; + + public string TitleAxisLeft + { + get { return _titleAxisLeft; } + set { _titleAxisLeft = value; RaisePropertyChangedAuto(); } + } + + + private bool _isRunning; /// <summary> /// Gets or sets a value indicating whether this instance is running. @@ -162,7 +179,8 @@ namespace Tango.DispenserAnalyzer.UI.ViewModels XStep = 1; AnalyzerResults = new ObservableCollection<IAnalyzerResult>(); _isRunning = false; - + TitleAxisBottom = ""; + TitleAxisLeft = ""; this.Points = new List<DataPoint>(); } @@ -251,69 +269,38 @@ namespace Tango.DispenserAnalyzer.UI.ViewModels return; ResetSettings(); - IAnalyzer analyzer = AnalysisService.GetAnalyzer(OpenFilePath); + var analyzer = AnalysisService.GetAnalyzer(OpenFilePath); if (analyzer == null) return; IsRunning = true; - AnalyzerAttribute attribute = (AnalyzerAttribute)analyzer.GetType().GetCustomAttributes(typeof(AnalyzerAttribute), true).FirstOrDefault(); - - TestName = attribute.Name; - List<DispenserCsvRow> data = CsvFile.Read<DispenserCsvRow>(new CsvSource(OpenFilePath)).ToList(); - List<DispenserSample> samples = new List<DispenserSample>(); - - To = 0; - From = 0; - int index = 0; - int last_labelIndex = 0; - - - foreach (var item in data) + AnalyzerAttribute[] attr = analyzer.GetType().GetCustomAttributes(typeof(AnalyzerAttribute), true); + if (attr != null && attr.Count() > 0) { - double pressure = 0; - if(item.Label == "Label") - { - item.Pressure = "0"; - item.Command = "Label"; - if (last_labelIndex == 0 || last_labelIndex < (index + 5)) - { - last_labelIndex = index; - - OxyPlot.Wpf.LineAnnotation _line = new OxyPlot.Wpf.LineAnnotation() - { - StrokeThickness = 1, - Color = Color.FromRgb(255, 5, 5), - Type = LineAnnotationType.Vertical, - Text = index.ToString(), - X = index, - }; - PlotControl.Annotations.Add(_line); - - } - } - if (double.TryParse(item.Pressure, out pressure) || !String.IsNullOrWhiteSpace(item.Command)) - { - samples.Add(new DispenserSample() - { - Pressure = pressure, - Command = String.IsNullOrWhiteSpace(item.Command) ? null : item.Command, - Index = index - }); - index++; - } + TestName = attr[0].Name; + } + List<OxyPlot.Wpf.LineAnnotation> annotations = new List<OxyPlot.Wpf.LineAnnotation>(); + var samples = analyzer.Reader.ReadScvFile(OpenFilePath, annotations); + analyzer.GetPoints(samples, Points); + if (Points.Count == 0) + { + IsRunning = false; + return; } + annotations.ForEach(x => PlotControl.Annotations.Add(x)); + To = 0; + From = 0; + List<IAnalyzerResult> res = await analyzer.Process(samples, false); AnalyzerResults = new ObservableCollection<IAnalyzerResult>(res); - samples.ForEach(x => - { - if (x.Pressure != 0.0) - { Points.Add(new DataPoint(x.Index, x.Pressure)); } - }); _to = Points.Max(x => x.Y); _from = TestName.Contains("sealtest") ? Points.FirstOrDefault(x => x.X == 0).Y : Points.Min(x => x.Y); + List<string> titles = analyzer.Reader.GetTitles(OpenFilePath); + TitleAxisBottom = titles[0]; + TitleAxisLeft = titles[1]; - data.Clear(); + // data.Clear(); _to += 100; RaisePropertyChanged("To"); if (_from != 0) @@ -324,8 +311,10 @@ namespace Tango.DispenserAnalyzer.UI.ViewModels IsRunning = false; PlotControl.InvalidatePlot(true); - await PrintToXpsFile(); - + if(analyzer.Reader.PrintResultsToPDFFile()) + { + await PrintToXpsFile(); + } } /// <summary> @@ -338,44 +327,24 @@ namespace Tango.DispenserAnalyzer.UI.ViewModels if (false == File.Exists(OpenFilePath) || IsFileLocked(OpenFilePath)) return; - IAnalyzer analyzer = AnalysisService.GetAnalyzer(OpenFilePath); + var analyzer = AnalysisService.GetAnalyzer(OpenFilePath); if (analyzer == null) return; - - AnalyzerAttribute attribute = (AnalyzerAttribute)analyzer.GetType().GetCustomAttributes(typeof(AnalyzerAttribute), true).FirstOrDefault(); - - TestName = attribute.Name; - List<DispenserCsvRow> data = CsvFile.Read<DispenserCsvRow>(new CsvSource(OpenFilePath)).ToList(); - List<DispenserSample> samples = new List<DispenserSample>(); - - int index = 0; - int last_labelIndex = 0; + AnalyzerAttribute[] attr = analyzer.GetType().GetCustomAttributes(typeof(AnalyzerAttribute), true); + if (attr != null && attr.Count() > 0) + { + TestName = attr[0].Name; + } - foreach (var item in data) + List<OxyPlot.Wpf.LineAnnotation> annotations = new List<OxyPlot.Wpf.LineAnnotation>(); + var samples = analyzer.Reader.ReadScvFile(OpenFilePath, annotations); + analyzer.GetPoints(samples, Points); + if (Points.Count == 0) { - double pressure = 0; - if (item.Label == "Label") - { - item.Pressure = "0"; - item.Command = "Label"; - if (last_labelIndex == 0 || last_labelIndex < (index + 5)) - { - last_labelIndex = index; - } - } - if (double.TryParse(item.Pressure, out pressure) || !String.IsNullOrWhiteSpace(item.Command)) - { - samples.Add(new DispenserSample() - { - Pressure = pressure, - Command = String.IsNullOrWhiteSpace(item.Command) ? null : item.Command, - Index = index - }); - index++; - } + return; } - + List<IAnalyzerResult> res = await analyzer.Process(samples, true); AnalyzerResults = new ObservableCollection<IAnalyzerResult>(res); diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/ViewModels/SettingsVM.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/ViewModels/SettingsVM.cs index d5c54ab08..0f2b5a457 100644 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/ViewModels/SettingsVM.cs +++ b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/ViewModels/SettingsVM.cs @@ -9,79 +9,124 @@ using Tango.SharedUI; namespace Tango.DispenserAnalyzer.UI.ViewModels { - public class SettingsVM : ViewModel, IDisposable + public class SettingVM: ViewModel { - private ObservableCollection<SettingsModel> _PBUSettings; + private string _name; - public ObservableCollection<SettingsModel> PBUTestSettings + public string Name { - get { return _PBUSettings; } - set { _PBUSettings = value; RaisePropertyChangedAuto(); } + get { return _name; } + set { _name = value; } } - private ObservableCollection<SettingsModel> _flowTestSettings; + private ObservableCollection<SettingsModel> _settings; + + public ObservableCollection<SettingsModel> Settings + { + get { return _settings; } + set { _settings = value; RaisePropertyChangedAuto(); } + } - public ObservableCollection<SettingsModel> FlowTestSettings + public SettingVM(string name) { - get { return _flowTestSettings; } - set { _flowTestSettings = value; RaisePropertyChangedAuto(); } + _settings = new ObservableCollection<SettingsModel>(); + Name = name; } - private Dictionary<AnalyzerSettingsEnum, double> changedValues; + public void AddSettings(List<SettingsModel> settings) + { + settings.ForEach(x => Settings.Add(x)); + } + + + } + public class SettingsVM : ViewModel, IDisposable + { + public Dictionary<AnalyzerSettingsEnum, double> ChangedValues { get; set; } + + private ObservableCollection<SettingVM> _settings; + public ObservableCollection<SettingVM> Settings + { + get { return _settings; } + set { _settings = value; RaisePropertyChangedAuto(); } + } + public SettingsVM() { - _PBUSettings = new ObservableCollection<SettingsModel>(); + _settings = new ObservableCollection<SettingVM>(); + ChangedValues = new Dictionary<AnalyzerSettingsEnum, double>(); InitPBUTestSettings(); - _flowTestSettings = new ObservableCollection<SettingsModel>(); - changedValues = new Dictionary<AnalyzerSettingsEnum, double>(); + InitProcessSettings(); InitFlowTestSettings(); + } private void InitPBUTestSettings() { - var setting = new SettingsModel(AnalyzerSettingsEnum.PBUPassFail, "4.5 sec"); - setting.SettingValueEvent += new EventHandler(OnSettingValueChanged); - _PBUSettings.Add(setting); + SettingVM model = new SettingVM("Pressure build up"); + List<SettingsModel> list = new List<SettingsModel>(); + list.Add(new SettingsModel(AnalyzerSettingsEnum.PBUPassFail, "4.5 sec")); + model.AddSettings(list); + list.ForEach(x => x.SettingValueEvent += new EventHandler(OnSettingValueChanged)); + Settings.Add(model); } private void InitFlowTestSettings() { - _flowTestSettings.Add(new SettingsModel(AnalyzerSettingsEnum.FlowPBUPassFail, "4.5 sec")); - _flowTestSettings.Add(new SettingsModel(AnalyzerSettingsEnum.ExcludeAnalysis, "1800 reads")); - _flowTestSettings.Add(new SettingsModel(AnalyzerSettingsEnum.AvgMinValue, "1400-1850 [mbar]", true)); - _flowTestSettings.Add(new SettingsModel(AnalyzerSettingsEnum.MaxMinRange, "500 reads")); - _flowTestSettings.Add(new SettingsModel(AnalyzerSettingsEnum.MaxMinIntervals, "300 reads")); - _flowTestSettings.Add(new SettingsModel(AnalyzerSettingsEnum.MaxError, "1.5%")); - _flowTestSettings.Add(new SettingsModel(AnalyzerSettingsEnum.TakeOffMaxMin, "3")); - - _flowTestSettings.ToList().ForEach(x => x.SettingValueEvent += new EventHandler(OnSettingValueChanged)); + SettingVM model = new SettingVM("Flow test"); + List<SettingsModel> list = new List<SettingsModel>(); + + list.Add(new SettingsModel(AnalyzerSettingsEnum.FlowPBUPassFail, "4.5 sec")); + list.Add(new SettingsModel(AnalyzerSettingsEnum.ExcludeAnalysis, "1800 reads")); + list.Add(new SettingsModel(AnalyzerSettingsEnum.AvgMinValue, "1400-1850 [mbar]", true)); + list.Add(new SettingsModel(AnalyzerSettingsEnum.MaxMinRange, "500 reads")); + list.Add(new SettingsModel(AnalyzerSettingsEnum.MaxMinIntervals, "300 reads")); + list.Add(new SettingsModel(AnalyzerSettingsEnum.MaxError, "1.5%")); + list.Add(new SettingsModel(AnalyzerSettingsEnum.TakeOffMaxMin, "3")); + list.ForEach(x => x.SettingValueEvent += new EventHandler(OnSettingValueChanged)); + model.AddSettings(list); + Settings.Add(model); + } + + private void InitProcessSettings() + { + SettingVM model = new SettingVM("Process"); + List<SettingsModel> list = new List<SettingsModel>(); + list.Add(new SettingsModel(AnalyzerSettingsEnum.TimeInterval, "0.1 sec")); + list.Add(new SettingsModel(AnalyzerSettingsEnum.StartCalculation, "600 sec")); + list.Add(new SettingsModel(AnalyzerSettingsEnum.EndCalculation, "900 sec")); + list.Add(new SettingsModel(AnalyzerSettingsEnum.MovingAvg, "50 points")); + list.ForEach(x => x.SettingValueEvent += new EventHandler(OnSettingValueChanged)); + model.AddSettings(list); + Settings.Add(model); } private void OnSettingValueChanged(object sender, EventArgs e) { - if(sender is SettingsModel) + if (sender is SettingsModel) { SettingsModel settingModel = sender as SettingsModel; - if(settingModel.IsRangeVisible) + if (settingModel.IsRangeVisible) { - changedValues[AnalyzerSettingsEnum.AvgMinValue] = settingModel.MinRangeValue; - changedValues[AnalyzerSettingsEnum.AvgMaxValue] = settingModel.MaxRangeValue; + ChangedValues[AnalyzerSettingsEnum.AvgMinValue] = settingModel.MinRangeValue; + ChangedValues[AnalyzerSettingsEnum.AvgMaxValue] = settingModel.MaxRangeValue; } else - changedValues[settingModel._enumName] = settingModel.PropertyValue; + ChangedValues[settingModel._enumName] = settingModel.PropertyValue; } } - + public Dictionary<AnalyzerSettingsEnum, double> GetChanges() { - return changedValues; + return ChangedValues; } - + public void Dispose() { - _PBUSettings.ToList().ForEach(x => x.SettingValueEvent -= OnSettingValueChanged); - _flowTestSettings.ToList().ForEach(x => x.SettingValueEvent -= OnSettingValueChanged); + Settings.ToList().ForEach(x => { + x.Settings.ToList().ForEach(k => k.SettingValueEvent -= OnSettingValueChanged); + }); } } } |
