From 05fca4fe321600c4a9c0698b1e4c161e3ed79c9f Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Thu, 2 Aug 2018 15:05:44 +0300 Subject: Added Tango.CSV project! Implemented Single/Multi graph recording to CSV! --- .../ViewModels/MachineTechViewVM.cs | 121 ++++++++++++++++++--- 1 file changed, 107 insertions(+), 14 deletions(-) (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs') diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs index 3dff65fbc..cd7582fe9 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs @@ -32,6 +32,7 @@ using Tango.MachineStudio.Common.EventLogging; using Tango.MachineStudio.Common; using Tango.Core.Commands; using Tango.MachineStudio.Technician.Helpers; +using Tango.MachineStudio.Technician.Models; namespace Tango.MachineStudio.Technician.ViewModels { @@ -54,6 +55,9 @@ namespace Tango.MachineStudio.Technician.ViewModels private const int MIN_DIAGNOSTICS_UPDATE_MILI = 500; private TechnicianModuleSettings _settings; + private List> _single_graphs_recordings; + private List> _multi_graph_recordings; + #region Properties @@ -221,6 +225,9 @@ namespace Tango.MachineStudio.Technician.ViewModels { _settings = SettingsManager.Default.GetOrCreate(); + _single_graphs_recordings = new List>(); + _multi_graph_recordings = new List>(); + GraphsDurationSeconds = _settings.GraphsDuration; TempGraphsDurationSeconds = GraphsDurationSeconds; @@ -261,7 +268,7 @@ namespace Tango.MachineStudio.Technician.ViewModels UploadHardwareConfigurationCommand = new RelayCommand(UploadHardwareConfiguration); SyncHardwareConfigurationCommand = new RelayCommand(SyncHardwareConfiguration); ResetHardwareConfigurationCommand = new RelayCommand(() => ResetHardwareConfiguration()); - UpdateGraphsDurationCommand = new RelayCommand(() => + UpdateGraphsDurationCommand = new RelayCommand(() => { GraphsDurationSeconds = TempGraphsDurationSeconds; _settings.GraphsDuration = GraphsDurationSeconds; @@ -372,6 +379,12 @@ namespace Tango.MachineStudio.Technician.ViewModels }); controller.PushData(points); + + var _graph_recording = _single_graphs_recordings.SingleOrDefault(x => x.TechItem == graphItem); + if (_graph_recording != null) + { + _graph_recording.PushData(points); + } } } } @@ -400,6 +413,12 @@ namespace Tango.MachineStudio.Technician.ViewModels } controller.PushData(points); + + var _graph_recording = _multi_graph_recordings.SingleOrDefault(x => x.TechItem == graphItem); + if (_graph_recording != null) + { + _graph_recording.PushData(points); + } } } } @@ -745,19 +764,27 @@ namespace Tango.MachineStudio.Technician.ViewModels /// The elements. public void OnElementsRemoved(List elements) { - //foreach (var element in elements) - //{ - // if (element.HostedElement is SingleGraphItem) - // { - // _singleControllers.Remove(element.HostedElement as SingleGraphItem); - // (element.HostedElement as SingleGraphItem).Editor.InnerGraph.InnerGraph.Dispose(); - // } - // else if (element.HostedElement is MultiGraphItem) - // { - // _multiControllers.Remove(element.HostedElement as MultiGraphItem); - // (element.HostedElement as MultiGraphItem).Editor.InnerGraph.InnerGraph.Dispose(); - // } - //} + foreach (var element in elements) + { + if (element.HostedElement is SingleGraphItem) + { + var _graph_recording = _single_graphs_recordings.SingleOrDefault(x => x.TechItem == element.HostedElement); + + if (_graph_recording != null) + { + _single_graphs_recordings.Remove(_graph_recording); + } + } + else if (element.HostedElement is MultiGraphItem) + { + var _graph_recording = _multi_graph_recordings.SingleOrDefault(x => x.TechItem == element.HostedElement); + + if (_graph_recording != null) + { + _multi_graph_recordings.Remove(_graph_recording); + } + } + } } /// @@ -1023,6 +1050,39 @@ namespace Tango.MachineStudio.Technician.ViewModels editor.InnerGraph.Controller = controller; _singleControllers.Add(item, controller); + + item.RecordingStarted += () => + { + _single_graphs_recordings.Add(new SingleTechRecordingData(item)); + }; + + item.RecordingStopped += () => + { + try + { + var graph_recording = _single_graphs_recordings.SingleOrDefault(x => x.TechItem == item); + + if (graph_recording != null) + { + _single_graphs_recordings.Remove(graph_recording); + + SaveFileDialog dlg = new SaveFileDialog(); + dlg.Title = "Save graph data as csv file"; + dlg.Filter = "CSV Files|*.csv"; + dlg.DefaultExt = ".csv"; + dlg.FileName = item.TechName; + if (dlg.ShowDialog().Value) + { + graph_recording.Save(dlg.FileName); + graph_recording.Dispose(); + } + } + } + catch (Exception ex) + { + _notification.ShowError(LogManager.Log(ex).Message); + } + }; } /// @@ -1050,6 +1110,39 @@ namespace Tango.MachineStudio.Technician.ViewModels editor.InnerGraph.Controller = controller; _multiControllers.Add(item, controller); + + item.RecordingStarted += () => + { + _multi_graph_recordings.Add(new MultiTechRecordingData(item, item.TechMonitor.ChannelCount)); + }; + + item.RecordingStopped += () => + { + try + { + var graph_recording = _multi_graph_recordings.SingleOrDefault(x => x.TechItem == item); + + if (graph_recording != null) + { + _multi_graph_recordings.Remove(graph_recording); + + SaveFileDialog dlg = new SaveFileDialog(); + dlg.Title = "Save graph data as csv file"; + dlg.Filter = "CSV Files|*.csv"; + dlg.DefaultExt = ".csv"; + dlg.FileName = item.TechName; + if (dlg.ShowDialog().Value) + { + graph_recording.Save(dlg.FileName); + graph_recording.Dispose(); + } + } + } + catch (Exception ex) + { + _notification.ShowError(LogManager.Log(ex).Message); + } + }; } /// -- cgit v1.3.1