blob: 9c5ebaa66654b496061074f2e0dd36c8348d8874 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using Tango.FSE.Common;
using Tango.FSE.Common.Diagnostics;
using Tango.FSE.Diagnostics.Project;
using Tango.PMR.Diagnostics;
namespace Tango.FSE.Diagnostics.ViewModels
{
public class DiagnosticsViewVM : FSEViewModel
{
private Dictionary<String, PropertyInfo> _monitorsProperties;
private bool _isLoaded;
private DiagnosticsProject _project;
public DiagnosticsProject Project
{
get { return _project; }
set { _project = value; RaisePropertyChangedAuto(); }
}
private ObservableCollection<DiagnosticsTabViewVM> _tabs;
public ObservableCollection<DiagnosticsTabViewVM> Tabs
{
get { return _tabs; }
set { _tabs = value; RaisePropertyChangedAuto(); }
}
private DiagnosticsTabViewVM _selectedTab;
public DiagnosticsTabViewVM SelectedTab
{
get { return _selectedTab; }
set { _selectedTab = value; RaisePropertyChangedAuto(); OnSelectedTabChanged(); }
}
public DiagnosticsViewVM()
{
_monitorsProperties = new Dictionary<string, PropertyInfo>();
foreach (var prop in typeof(DiagnosticsMonitors).GetProperties(BindingFlags.Public | BindingFlags.Instance).ToList())
{
_monitorsProperties.Add(prop.Name, prop);
}
Tabs = new ObservableCollection<DiagnosticsTabViewVM>();
Project = new DiagnosticsProject();
}
public override void OnApplicationStarted()
{
base.OnApplicationStarted();
DiagnosticsProvider.FrameReceived += DiagnosticsProvider_FrameReceived;
}
private void DiagnosticsProvider_FrameReceived(object sender, DiagnosticsFrameReceivedEventArgs e)
{
PopulateDiagnosticsData(e.Frame);
}
public override void OnApplicationReady()
{
base.OnApplicationReady();
if (!_isLoaded)
{
LoadProject();
}
}
private async void LoadProject()
{
Project = DiagnosticsProject.FromFile(Path.Combine(ApplicationManager.StartPath, "diagnostics.json"));
try
{
await Services.TechComponentsService.Preload();
foreach (var widget in Project.Tabs.SelectMany(x => x.Widgets))
{
try
{
await widget.Init();
}
catch (Exception ex)
{
NotificationProvider.PushErrorReportingSnackbar(ex, "Diagnostics Module Error", "Error initializing diagnostics widget.");
}
}
Tabs = new ObservableCollection<DiagnosticsTabViewVM>();
foreach (var tab in Project.Tabs)
{
Tabs.Add(new DiagnosticsTabViewVM() { Tab = tab });
}
SelectedTab = Tabs.FirstOrDefault();
_isLoaded = true;
}
catch (Exception ex)
{
NotificationProvider.PushErrorReportingSnackbar(ex, "Diagnostics Module Error", "Error initializing diagnostics module.");
return;
}
}
private void OnSelectedTabChanged()
{
//if (SelectedTab != null)
//{
// Tabs.Where(x => x != SelectedTab).SelectMany(x => x.Tab.Widgets).ToList().ForEach(x => x.IsVisible = false);
// SelectedTab.Tab.Widgets.ToList().ForEach(x => x.IsVisible = true);
//}
}
private void PopulateDiagnosticsData(DiagnosticsFrame frame)
{
if (_isLoaded)
{
foreach (var tab in Tabs.ToList())
{
tab.PopulateDiagnosticsData(new DiagnosticsPackage()
{
Frame = frame,
MonitorsProperties = _monitorsProperties
});
}
}
}
}
}
|