aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2018-10-10 16:55:44 +0300
committerRoy Ben-Shabat <Roy@Twine-s.com>2018-10-10 16:55:44 +0300
commit79eb19cbd10785a7dbc972bc0b26817932237419 (patch)
treee36176fc94ce6f26efc89b006d7e6faf7e4398cb /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs
parentdf9197240ba5a643ce1599f36b7e3dd34aad6a60 (diff)
downloadTango-79eb19cbd10785a7dbc972bc0b26817932237419.tar.gz
Tango-79eb19cbd10785a7dbc972bc0b26817932237419.zip
Sign-out works !
Fixed issue where color conversion was busy while not in research module but research module in job view. Added new RealTimeGraphX !
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Technician/ViewModels/MachineTechViewVM.cs121
1 files changed, 76 insertions, 45 deletions
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 2ca5aa43b..1e1638928 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
@@ -35,6 +35,9 @@ using Tango.MachineStudio.Technician.Helpers;
using Tango.MachineStudio.Technician.Models;
using Tango.Logging;
using Microsoft.WindowsAPICodePack.Dialogs;
+using RealTimeGraphX;
+using RealTimeGraphX.WPF.DataSeries;
+using RealTimeGraphX.DataPoints;
namespace Tango.MachineStudio.Technician.ViewModels
{
@@ -47,8 +50,8 @@ namespace Tango.MachineStudio.Technician.ViewModels
{
private List<PropertyInfo> _diagnoticsMonitorsDataProperties;
private IDiagnosticsFrameProvider _diagnosticsFrameProvider;
- private Dictionary<SingleGraphItem, GraphController> _singleControllers;
- private Dictionary<MultiGraphItem, GraphMultiController> _multiControllers;
+ private Dictionary<SingleGraphItem, TechGraphController> _singleControllers;
+ private Dictionary<MultiGraphItem, TechGraphController> _multiControllers;
private static object _elementsLock = new object();
private String _lastTechProjectFile;
private INotificationProvider _notification;
@@ -62,6 +65,8 @@ namespace Tango.MachineStudio.Technician.ViewModels
private List<SingleTechRecordingData> _single_monitors_recordings;
private List<MultiTechRecordingData> _multi_monitors_recordings;
+ private DateTime _start_time = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0);
+ private DateTime _last_time = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0);
#region Properties
@@ -290,8 +295,8 @@ namespace Tango.MachineStudio.Technician.ViewModels
_notification = notificationProvider;
_eventLogger = eventLogger;
- _singleControllers = new Dictionary<SingleGraphItem, GraphController>();
- _multiControllers = new Dictionary<MultiGraphItem, GraphMultiController>();
+ _singleControllers = new Dictionary<SingleGraphItem, TechGraphController>();
+ _multiControllers = new Dictionary<MultiGraphItem, TechGraphController>();
AvailableTechItems = TechItem.GetAvailableTechItems().ToObservableCollection();
SelectedTechItem = AvailableTechItems.FirstOrDefault();
_diagnoticsMonitorsDataProperties = typeof(DiagnosticsMonitors).GetProperties(BindingFlags.Public | BindingFlags.Instance).ToList();
@@ -376,6 +381,10 @@ namespace Tango.MachineStudio.Technician.ViewModels
/// <param name="data">The data.</param>
private void PopulateDiagnosticsData(StartDiagnosticsResponse data)
{
+ TimeSpan delta_base = DateTime.Now - _start_time;
+ double delta_mili = (DateTime.Now - _last_time).TotalMilliseconds;
+ _last_time = DateTime.Now;
+
if (DateTime.Now > _lastDiagnosticsResponseUpdate.AddMilliseconds(MIN_DIAGNOSTICS_UPDATE_MILI))
{
CurrentDiagnosticsResponse = data;
@@ -451,20 +460,21 @@ namespace Tango.MachineStudio.Technician.ViewModels
if (prop != null)
{
- GraphController controller = null;
+ TechGraphController controller = null;
if (_singleControllers.TryGetValue(graphItem, out controller))
{
var points = GetDataArray(graphItem.TechMonitor, prop.GetValue(data.Monitors));
- int maxPoints = (int)(_diagnosticsFrameProvider.FrameRate * GraphsDurationSeconds * points.Count);
+ List<TimeSpanDataPoint> times = new List<TimeSpanDataPoint>();
+ var dPoints = points.Select(x => new DoubleDataPoint(x)).ToList();
- InvokeUI(() =>
+ for (int i = 0; i < points.Count; i++)
{
- graphItem.Editor.InnerGraph.InnerGraph.MaxPoints = maxPoints;
- });
+ times.Add(delta_base.Add(TimeSpan.FromMilliseconds((delta_mili / points.Count) * i)));
+ }
- controller.PushData(points);
+ controller.PushData(times, dPoints);
var _graph_recording = _single_graphs_recordings.SingleOrDefault(x => x.Tag == graphItem);
if (_graph_recording != null)
@@ -482,7 +492,7 @@ namespace Tango.MachineStudio.Technician.ViewModels
if (prop != null)
{
- GraphMultiController controller = null;
+ TechGraphController controller = null;
if (_multiControllers.TryGetValue(graphItem, out controller))
{
@@ -490,15 +500,23 @@ namespace Tango.MachineStudio.Technician.ViewModels
if (points.Count > 0)
{
- int maxPoints = (int)(_diagnosticsFrameProvider.FrameRate * GraphsDurationSeconds * points[0].Count);
+ List<TimeSpanDataPoint> times = new List<TimeSpanDataPoint>();
+ var dPoints = points.Select(x => new List<DoubleDataPoint>(x.Select(y => new DoubleDataPoint(y)))).ToList();
- InvokeUI(() =>
+ for (int i = 0; i < points[0].Count; i++)
{
- graphItem.Editor.InnerGraph.InnerGraph.MaxPoints = maxPoints;
- });
- }
+ times.Add(delta_base.Add(TimeSpan.FromMilliseconds((delta_mili / points[0].Count) * i)));
+ }
+
+ List<List<TimeSpanDataPoint>> timesMat = new List<List<TimeSpanDataPoint>>();
- controller.PushData(points);
+ for (int i = 0; i < controller.DataSeriesCollection.Count; i++)
+ {
+ timesMat.Add(times);
+ }
+
+ controller.PushData(timesMat, dPoints);
+ }
var _graph_recording = _multi_graph_recordings.SingleOrDefault(x => x.Tag == graphItem);
if (_graph_recording != null)
@@ -624,15 +642,15 @@ namespace Tango.MachineStudio.Technician.ViewModels
/// </summary>
protected virtual void OnDisableRenderingChanged()
{
- foreach (var controller in _singleControllers)
- {
- controller.Value.ChangeRenderMode(!DisableRendering);
- }
+ //foreach (var controller in _singleControllers)
+ //{
+ // controller.Value.ChangeRenderMode(!DisableRendering);
+ //}
- foreach (var controller in _multiControllers)
- {
- controller.Value.ChangeRenderMode(!DisableRendering);
- }
+ //foreach (var controller in _multiControllers)
+ //{
+ // controller.Value.ChangeRenderMode(!DisableRendering);
+ //}
}
#endregion
@@ -956,36 +974,38 @@ namespace Tango.MachineStudio.Technician.ViewModels
{
var graphItem = element.HostedElement as SingleGraphItem;
var editor = element as SingleGraphElementEditor;
- graphItem.Editor = editor;
- editor.InnerGraph.InnerGraph.MaxPoints = GraphsHelper.GetMaxPoints(graphItem.TechMonitor.PointsPerFrame);
- GraphController controller = new GraphController();
+ TechGraphController controller = new TechGraphController();
+ controller.AddDataSeries(new WpfDataSeries()
+ {
+ Stroke = Colors.DodgerBlue,
+ });
editor.InnerGraph.Controller = controller;
+ graphItem.Editor = editor;
+
_singleControllers.Add(graphItem, controller);
}
else if (element is MultiGraphElementEditor)
{
var graphItem = element.HostedElement as MultiGraphItem;
var editor = element as MultiGraphElementEditor;
- editor.InnerGraph.InnerGraph.MaxPoints = GraphsHelper.GetMaxPoints(graphItem.TechMonitor.PointsPerFrame);
- graphItem.Editor = editor;
-
- GraphMultiController controller = new GraphMultiController();
+ TechGraphController controller = new TechGraphController(500);
for (int i = 0; i < graphItem.TechMonitor.ChannelCount; i++)
{
- controller.AddSeries(new RealTimeGraphEx.DataSeries.DataYSeries()
+ controller.AddDataSeries(new WpfDataSeries()
{
- UseFillAndStroke = true,
+ Stroke = ColorHelper.GetRandomColor(),
Name = graphItem.TechMonitor.Name.First() + (i + 1).ToString(),
- Stroke = new SolidColorBrush(ColorHelper.GetRandomColor()),
});
}
editor.InnerGraph.Controller = controller;
+ graphItem.Editor = editor;
+
_multiControllers.Add(graphItem, controller);
}
else if (element is MotorElementEditor)
@@ -1300,12 +1320,21 @@ namespace Tango.MachineStudio.Technician.ViewModels
/// <param name="editor">The editor.</param>
private void InitSingleGraphitem(SingleGraphItem item, SingleGraphElementEditor editor)
{
- editor.InnerGraph.InnerGraph.MaxPoints = GraphsHelper.GetMaxPoints(item.TechMonitor.PointsPerFrame);
- item.Editor = editor;
+ TechGraphController controller = new TechGraphController();
+ controller.Range.AutoY = true;
+ controller.Range.MinimumY = item.TechMonitor.Min;
+ controller.Range.MaximumY = item.TechMonitor.Max;
+ controller.Range.MaximumX = TimeSpan.FromSeconds(10);
+
+ controller.AddDataSeries(new WpfDataSeries()
+ {
+ Stroke = Colors.DodgerBlue,
+ });
- GraphController controller = new GraphController();
editor.InnerGraph.Controller = controller;
+ item.Editor = editor;
+
_singleControllers.Add(item, controller);
item.RecordingStarted += () =>
@@ -1350,23 +1379,25 @@ namespace Tango.MachineStudio.Technician.ViewModels
/// <param name="editor">The editor.</param>
private void InitMultiGraphItem(MultiGraphItem item, MultiGraphElementEditor editor)
{
- editor.InnerGraph.InnerGraph.MaxPoints = GraphsHelper.GetMaxPoints(item.TechMonitor.PointsPerFrame);
- item.Editor = editor;
-
- GraphMultiController controller = new GraphMultiController();
+ TechGraphController controller = new TechGraphController(500);
+ controller.Range.AutoY = true;
+ controller.Range.MinimumY = item.TechMonitor.Min;
+ controller.Range.MaximumY = item.TechMonitor.Max;
+ controller.Range.MaximumX = TimeSpan.FromSeconds(10);
for (int i = 0; i < item.TechMonitor.ChannelCount; i++)
{
- controller.AddSeries(new RealTimeGraphEx.DataSeries.DataYSeries()
+ controller.AddDataSeries(new WpfDataSeries()
{
- UseFillAndStroke = true,
+ Stroke = ColorHelper.GetRandomColor(),
Name = item.TechMonitor.Name.First() + (i + 1).ToString(),
- Stroke = new SolidColorBrush(ColorHelper.GetRandomColor()),
});
}
editor.InnerGraph.Controller = controller;
+ item.Editor = editor;
+
_multiControllers.Add(item, controller);
item.RecordingStarted += () =>