aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/FSE/Modules
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2020-05-14 08:45:03 +0300
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2020-05-14 08:45:03 +0300
commitbec7c8a5c429bb3dc7ca8b6874db8fce6ed6bdce (patch)
treea9240422fc1d6c6233bcc635996cc86ab81e7fd0 /Software/Visual_Studio/FSE/Modules
parent4b660ec84e2b0527d67d5146031c7be7cac8bd17 (diff)
downloadTango-bec7c8a5c429bb3dc7ca8b6874db8fce6ed6bdce.tar.gz
Tango-bec7c8a5c429bb3dc7ca8b6874db8fce6ed6bdce.zip
Diagnostics User Settings Merging !
Diffstat (limited to 'Software/Visual_Studio/FSE/Modules')
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/DiagnosticsPackage.cs19
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/Project/DiagnosticsConfigurableWidget.cs39
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/Project/DiagnosticsProject.cs5
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/Project/DiagnosticsUserSettingsCollection.cs100
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/Project/DiagnosticsUserSettingsManager.cs66
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/Project/DiagnosticsUserWidgetSettings.cs14
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/Tango.FSE.Diagnostics.csproj3
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/ViewModels/DiagnosticsViewVM.cs57
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/diagnostics.json128
9 files changed, 383 insertions, 48 deletions
diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/DiagnosticsPackage.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/DiagnosticsPackage.cs
index 2a41b2efe..70720676f 100644
--- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/DiagnosticsPackage.cs
+++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/DiagnosticsPackage.cs
@@ -13,6 +13,8 @@ namespace Tango.FSE.Diagnostics
{
public class DiagnosticsPackage
{
+ private static Dictionary<String, PropertyInfo> _monitorsProperties;
+
/// <summary>
/// Gets or sets the frame.
/// </summary>
@@ -21,14 +23,27 @@ namespace Tango.FSE.Diagnostics
/// <summary>
/// Gets or sets the monitors properties.
/// </summary>
- public Dictionary<String, PropertyInfo> MonitorsProperties { get; set; }
+ public Dictionary<String, PropertyInfo> MonitorsProperties { get; private set; }
+
+ /// <summary>
+ /// Initializes the <see cref="DiagnosticsPackage"/> class.
+ /// </summary>
+ static DiagnosticsPackage()
+ {
+ _monitorsProperties = new Dictionary<string, PropertyInfo>();
+
+ foreach (var prop in typeof(DiagnosticsMonitors).GetProperties(BindingFlags.Public | BindingFlags.Instance).ToList())
+ {
+ _monitorsProperties.Add(prop.Name, prop);
+ }
+ }
/// <summary>
/// Initializes a new instance of the <see cref="DiagnosticsPackage"/> class.
/// </summary>
public DiagnosticsPackage()
{
- MonitorsProperties = new Dictionary<string, PropertyInfo>();
+ MonitorsProperties = _monitorsProperties;
}
/// <summary>
diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/Project/DiagnosticsConfigurableWidget.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/Project/DiagnosticsConfigurableWidget.cs
index ac1d29847..90ad17055 100644
--- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/Project/DiagnosticsConfigurableWidget.cs
+++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/Project/DiagnosticsConfigurableWidget.cs
@@ -8,34 +8,21 @@ namespace Tango.FSE.Diagnostics.Project
{
public abstract class DiagnosticsConfigurableWidget : DiagnosticsWidget
{
- public DiagnosticsWidgetSettings Settings { get; set; }
- }
-
- public abstract class DiagnosticsConfigurableWidget<T> : DiagnosticsConfigurableWidget where T : DiagnosticsWidgetSettings, new()
- {
- private T _settings;
- public new T Settings
+ private DiagnosticsWidgetSettings _settings;
+ public DiagnosticsWidgetSettings Settings
{
get { return _settings; }
set
{
_settings = value;
- RaisePropertyChangedAuto();
-
- if (_settings != null)
+ if (value != null)
{
- base.Settings = value;
OnSettingsChanged();
- _settings.PropertyChanged += _settings_PropertyChanged;
+ value.PropertyChanged += _settings_PropertyChanged;
}
}
}
- public DiagnosticsConfigurableWidget() : base()
- {
- Settings = new T();
- }
-
private void _settings_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
OnSettingsChanged();
@@ -46,4 +33,22 @@ namespace Tango.FSE.Diagnostics.Project
}
}
+
+ public abstract class DiagnosticsConfigurableWidget<T> : DiagnosticsConfigurableWidget where T : DiagnosticsWidgetSettings, new()
+ {
+ public new T Settings
+ {
+ get { return base.Settings as T; }
+ set
+ {
+ base.Settings = value;
+ RaisePropertyChangedAuto();
+ }
+ }
+
+ public DiagnosticsConfigurableWidget() : base()
+ {
+ Settings = new T();
+ }
+ }
}
diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/Project/DiagnosticsProject.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/Project/DiagnosticsProject.cs
index bc93f4101..2a6bb5888 100644
--- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/Project/DiagnosticsProject.cs
+++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/Project/DiagnosticsProject.cs
@@ -17,6 +17,11 @@ namespace Tango.FSE.Diagnostics.Project
public String Name { get; set; }
public ObservableCollection<DiagnosticsProjectTab> Tabs { get; set; }
+ public List<DiagnosticsWidget> FlattenWidgets()
+ {
+ return Tabs.SelectMany(x => x.Widgets).ToList();
+ }
+
static DiagnosticsProject()
{
_settings = new JsonSerializerSettings()
diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/Project/DiagnosticsUserSettingsCollection.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/Project/DiagnosticsUserSettingsCollection.cs
new file mode 100644
index 000000000..35bc164b9
--- /dev/null
+++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/Project/DiagnosticsUserSettingsCollection.cs
@@ -0,0 +1,100 @@
+using Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.Core.ExtensionMethods;
+
+namespace Tango.FSE.Diagnostics.Project
+{
+ public class DiagnosticsUserSettingsCollection
+ {
+ private static JsonSerializerSettings _settings;
+
+ public List<DiagnosticsUserWidgetSettings> Widgets { get; set; }
+
+ public T GetWidgetSettings<T>(DiagnosticsConfigurableWidget widget) where T : DiagnosticsWidgetSettings
+ {
+ return GetWidgetSettings(widget) as T;
+ }
+
+ public DiagnosticsWidgetSettings GetWidgetSettings(DiagnosticsConfigurableWidget widget)
+ {
+ var record = Widgets.FirstOrDefault(x => x.WidgetID == widget.ID);
+ if (record != null)
+ {
+ return record.Settings;
+ }
+
+ return null;
+ }
+
+ public void ApplyWidgetSettings(DiagnosticsConfigurableWidget widget)
+ {
+ var record = Widgets.FirstOrDefault(x => x.WidgetID == widget.ID);
+ if (record != null)
+ {
+ if (widget.Settings == null)
+ {
+ widget.Settings = record.Settings;
+ }
+ else
+ {
+ record.Settings.MapPropertiesTo(widget.Settings, MappingFlags.All, (prop) => prop.GetCustomAttribute<JsonIgnoreAttribute>() == null);
+ }
+ }
+ }
+
+ public void SetWidgetSettings(DiagnosticsConfigurableWidget widget)
+ {
+ var record = Widgets.FirstOrDefault(x => x.WidgetID == widget.ID);
+ if (record == null)
+ {
+ record = new DiagnosticsUserWidgetSettings()
+ {
+ WidgetID = widget.ID,
+ };
+ Widgets.Add(record);
+ }
+
+ record.Settings = widget.Settings;
+ }
+
+ static DiagnosticsUserSettingsCollection()
+ {
+ _settings = new JsonSerializerSettings()
+ {
+ TypeNameHandling = TypeNameHandling.Auto,
+ Formatting = Formatting.Indented
+ };
+ }
+
+ public DiagnosticsUserSettingsCollection()
+ {
+ Widgets = new List<DiagnosticsUserWidgetSettings>();
+ }
+
+ public String ToJson()
+ {
+ return JsonConvert.SerializeObject(this, _settings);
+ }
+
+ public static DiagnosticsUserSettingsCollection FromJson(String json)
+ {
+ return JsonConvert.DeserializeObject<DiagnosticsUserSettingsCollection>(json, _settings);
+ }
+
+ public void ToFile(String fileName)
+ {
+ File.WriteAllText(fileName, ToJson());
+ }
+
+ public static DiagnosticsUserSettingsCollection FromFile(String fileName)
+ {
+ return FromJson(File.ReadAllText(fileName));
+ }
+ }
+}
diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/Project/DiagnosticsUserSettingsManager.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/Project/DiagnosticsUserSettingsManager.cs
new file mode 100644
index 000000000..1e3684733
--- /dev/null
+++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/Project/DiagnosticsUserSettingsManager.cs
@@ -0,0 +1,66 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.Core;
+
+namespace Tango.FSE.Diagnostics.Project
+{
+ public class DiagnosticsUserSettingsManager : ExtendedObject
+ {
+ private static object _syncLock = new object();
+
+ private static DiagnosticsUserSettingsManager _default;
+ public static DiagnosticsUserSettingsManager Default
+ {
+ get
+ {
+ if (_default == null)
+ {
+ _default = new DiagnosticsUserSettingsManager();
+ }
+
+ return _default;
+ }
+ }
+
+ public String FilePath { get; protected set; }
+
+ public DiagnosticsUserSettingsCollection Settings { get; set; }
+
+ private DiagnosticsUserSettingsManager()
+ {
+ Settings = new DiagnosticsUserSettingsCollection();
+ FilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Twine", "Tango", "Diagnostics", Path.GetFileNameWithoutExtension(AppDomain.CurrentDomain.FriendlyName) + ".User.json");
+ Reload();
+ }
+
+ public void Reload()
+ {
+ try
+ {
+ Settings = DiagnosticsUserSettingsCollection.FromFile(FilePath);
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error loading diagnostics user settings.");
+ }
+ }
+
+ public void ClearGhostRecords(List<DiagnosticsConfigurableWidget> widgets)
+ {
+ Settings.Widgets.RemoveAll(x => !widgets.Exists(y => y.ID == x.WidgetID));
+ }
+
+ public void Save()
+ {
+ lock (_syncLock)
+ {
+ Directory.CreateDirectory(Path.GetDirectoryName(FilePath));
+ Settings.ToFile(FilePath);
+ }
+ }
+ }
+}
diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/Project/DiagnosticsUserWidgetSettings.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/Project/DiagnosticsUserWidgetSettings.cs
new file mode 100644
index 000000000..855bd31f9
--- /dev/null
+++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/Project/DiagnosticsUserWidgetSettings.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Tango.FSE.Diagnostics.Project
+{
+ public class DiagnosticsUserWidgetSettings
+ {
+ public String WidgetID { get; set; }
+ public DiagnosticsWidgetSettings Settings { get; set; }
+ }
+}
diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/Tango.FSE.Diagnostics.csproj b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/Tango.FSE.Diagnostics.csproj
index c6a3efbeb..69c89e265 100644
--- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/Tango.FSE.Diagnostics.csproj
+++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/Tango.FSE.Diagnostics.csproj
@@ -102,6 +102,9 @@
<Compile Include="Project\DiagnosticsProjectTab.cs" />
<Compile Include="Project\DiagnosticsProjectTabColumnDefinition.cs" />
<Compile Include="Project\DiagnosticsProjectTabRowDefinition.cs" />
+ <Compile Include="Project\DiagnosticsUserSettingsCollection.cs" />
+ <Compile Include="Project\DiagnosticsUserSettingsManager.cs" />
+ <Compile Include="Project\DiagnosticsUserWidgetSettings.cs" />
<Compile Include="Project\DiagnosticsWidget.cs" />
<Compile Include="Project\DiagnosticsWidgetSettings.cs" />
<Compile Include="Project\Widgets\Dispenser\DispenserWidget.cs" />
diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/ViewModels/DiagnosticsViewVM.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/ViewModels/DiagnosticsViewVM.cs
index d8d22dd70..955562472 100644
--- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/ViewModels/DiagnosticsViewVM.cs
+++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/ViewModels/DiagnosticsViewVM.cs
@@ -16,7 +16,6 @@ namespace Tango.FSE.Diagnostics.ViewModels
{
public class DiagnosticsViewVM : FSEViewModel
{
- private Dictionary<String, PropertyInfo> _monitorsProperties;
private bool _isLoaded;
private string _diagnosticsProjectFile;
private FileSystemWatcher _diagnosticsProjectFileWatcher;
@@ -53,13 +52,6 @@ namespace Tango.FSE.Diagnostics.ViewModels
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();
@@ -115,19 +107,24 @@ namespace Tango.FSE.Diagnostics.ViewModels
private async Task LoadProject()
{
- Project = DiagnosticsProject.FromFile(_diagnosticsProjectFile);
-
try
{
IsLoadingProject = true;
_isLoaded = false;
+ Project = DiagnosticsProject.FromFile(_diagnosticsProjectFile);
+
await Services.TechComponentsService.Preload();
foreach (var widget in Project.Tabs.SelectMany(x => x.Widgets))
{
try
{
+ if (widget is DiagnosticsConfigurableWidget)
+ {
+ DiagnosticsUserSettingsManager.Default.Settings.ApplyWidgetSettings(widget as DiagnosticsConfigurableWidget);
+ }
+
await widget.Init();
}
catch (Exception ex)
@@ -171,7 +168,6 @@ namespace Tango.FSE.Diagnostics.ViewModels
tab.PopulateDiagnosticsData(new DiagnosticsPackage()
{
Frame = frame,
- MonitorsProperties = _monitorsProperties
});
}
}
@@ -186,6 +182,7 @@ namespace Tango.FSE.Diagnostics.ViewModels
try
{
Project.ToFile(result.SelectedItem);
+ SaveUserSettings();
await NotificationProvider.ShowSuccess("Diagnostics project exported successfully.");
}
catch (Exception ex)
@@ -195,5 +192,43 @@ namespace Tango.FSE.Diagnostics.ViewModels
}
}
}
+
+ public override void OnApplicationShuttingDown()
+ {
+ base.OnApplicationShuttingDown();
+
+ SaveUserSettings();
+ }
+
+ private void SaveUserSettings()
+ {
+ try
+ {
+ foreach (var widget in Project.FlattenWidgets())
+ {
+ try
+ {
+ if (widget is DiagnosticsConfigurableWidget)
+ {
+ DiagnosticsUserSettingsManager.Default.Settings.SetWidgetSettings(widget as DiagnosticsConfigurableWidget);
+ }
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, $"Error saving widget user settings for widget '{widget.DisplayName}'.");
+ }
+ }
+
+ //If you are going to work with different projects in the future you need to remote this.
+ //Because it will erase any settings other than for the current project.
+ DiagnosticsUserSettingsManager.Default.ClearGhostRecords(Project.FlattenWidgets().OfType<DiagnosticsConfigurableWidget>().ToList());
+
+ DiagnosticsUserSettingsManager.Default.Save();
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error saving diagnostics user settings collection.");
+ }
+ }
}
}
diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/diagnostics.json b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/diagnostics.json
index a2d9286b5..4c68e4075 100644
--- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/diagnostics.json
+++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Diagnostics/diagnostics.json
@@ -82,86 +82,167 @@
"Widgets": [
{
"$type": "Tango.FSE.Diagnostics.Project.Widgets.RealTimeGraph.RealTimeGraphWidget, Tango.FSE.Diagnostics",
- "Monitor": "Dancer2Angle",
"Column": 0,
"Row": 0,
"ColumnSpan": 3,
- "RowSpan": 3
+ "RowSpan": 3,
+ "Width": 100.0,
+ "Height": 100.0,
+ "Settings": {
+ "Duration": "00:10:00",
+ "DecimalPlaces": 0,
+ "Min": 0.0,
+ "Max": 1000.0,
+ "AutoRange": true,
+ "Color": "#FF1E90FF"
+ },
+ "Monitor": "Dancer2Angle",
+ "ID": "632ba431-4875-46f9-b9d6-39cbef3de2e5"
},
{
"$type": "Tango.FSE.Diagnostics.Project.Widgets.RealTimeGraph.RealTimeGraphWidget, Tango.FSE.Diagnostics",
- "Monitor": "Dancer2Angle",
"Column": 3,
"Row": 0,
"ColumnSpan": 3,
- "RowSpan": 3
+ "RowSpan": 3,
+ "Width": 100.0,
+ "Height": 100.0,
+ "Settings": {
+ "Duration": "00:10:00",
+ "DecimalPlaces": 0,
+ "Min": 0.0,
+ "Max": 1000.0,
+ "AutoRange": true,
+ "Color": "#FF1E90FF"
+ },
+ "Monitor": "Dancer2Angle",
+ "ID": "3e8ab666-ab5d-4f14-979c-bcad02007802"
},
{
"$type": "Tango.FSE.Diagnostics.Project.Widgets.RealTimeGraph.RealTimeGraphWidget, Tango.FSE.Diagnostics",
- "Monitor": "Dancer2Angle",
"Column": 6,
"Row": 0,
"ColumnSpan": 3,
- "RowSpan": 3
+ "RowSpan": 3,
+ "Width": 100.0,
+ "Height": 100.0,
+ "Settings": {
+ "Duration": "00:10:00",
+ "DecimalPlaces": 0,
+ "Min": 0.0,
+ "Max": 1000.0,
+ "AutoRange": true,
+ "Color": "#FF1E90FF"
+ },
+ "Monitor": "Dancer2Angle",
+ "ID": "1b6580fb-ef48-42f6-a340-775b5f586dad"
},
{
"$type": "Tango.FSE.Diagnostics.Project.Widgets.RealTimeGraph.RealTimeGraphWidget, Tango.FSE.Diagnostics",
- "Monitor": "Dancer2Angle",
"Column": 9,
"Row": 0,
"ColumnSpan": 3,
- "RowSpan": 3
+ "RowSpan": 3,
+ "Width": 100.0,
+ "Height": 100.0,
+ "Settings": {
+ "Duration": "00:10:00",
+ "DecimalPlaces": 0,
+ "Min": 0.0,
+ "Max": 1000.0,
+ "AutoRange": true,
+ "Color": "#FF1E90FF"
+ },
+ "Monitor": "Dancer2Angle",
+ "ID": "4f22da27-4b60-4ea1-871b-73b091cecdb9"
},
{
"$type": "Tango.FSE.Diagnostics.Project.Widgets.RealTimeGraphMultiChannel.RealTimeGraphMultiChannelWidget, Tango.FSE.Diagnostics",
- "Monitor": "DispensersMotorsFrequency",
"Column": 0,
"Row": 3,
"ColumnSpan": 3,
- "RowSpan": 3
+ "RowSpan": 3,
+ "Width": 100.0,
+ "Height": 100.0,
+ "Settings": {
+ "Duration": "00:10:00",
+ "DecimalPlaces": 0,
+ "Min": 0.0,
+ "Max": 1000.0,
+ "AutoRange": true,
+ "Color": "#FF1E90FF"
+ },
+ "Monitor": "DispensersMotorsFrequency",
+ "ID": "a72aa86c-ae39-42cc-8ca8-340abd4dd7f2"
},
{
"$type": "Tango.FSE.Diagnostics.Project.Widgets.Monitor.MonitorWidget, Tango.FSE.Diagnostics",
"Monitor": "Dancer2Angle",
+ "Settings": {
+ "DecimalPlaces": 0,
+ "Color": "#FFDCDCDC"
+ },
+ "ID": "90899668-6cce-4f51-a401-3039fb2226b8",
"Column": 0,
"Row": 6,
"ColumnSpan": 3,
"RowSpan": 2,
- "Width": 50
+ "Width": 50.0,
+ "Height": 100.0
},
{
"$type": "Tango.FSE.Diagnostics.Project.Widgets.Input.InputWidget, Tango.FSE.Diagnostics",
"IO": "LS_DH_CLEAN_DOWN",
+ "ID": "3010722d-ef21-4c86-ad23-19956108169b",
"Column": 1,
"Row": 8,
"ColumnSpan": 1,
- "RowSpan": 1
+ "RowSpan": 1,
+ "Width": 100.0,
+ "Height": 100.0
},
{
"$type": "Tango.FSE.Diagnostics.Project.Widgets.Motor.MotorWidget, Tango.FSE.Diagnostics",
"Motor": "MOTO_DH_CLEANHEAD",
+ "Settings": {
+ "Speed": 400,
+ "Color": "#FF79FF00"
+ },
+ "ID": "625be286-0670-4784-b1ef-d78f854c4072",
"Column": 3,
"Row": 8,
"ColumnSpan": 4,
- "RowSpan": 3
+ "RowSpan": 3,
+ "Width": 100.0,
+ "Height": 100.0
},
{
"$type": "Tango.FSE.Diagnostics.Project.Widgets.Dispenser.DispenserWidget, Tango.FSE.Diagnostics",
"Dispenser": "Dispenser2",
+ "Settings": {
+ "Speed": 400,
+ "Color": "#FF141414"
+ },
+ "ID": "86e5683c-a9dc-46f4-a88b-087bff6f8432",
"Column": 8,
"Row": 8,
"ColumnSpan": 4,
- "RowSpan": 3
+ "RowSpan": 3,
+ "Width": 100.0,
+ "Height": 100.0
},
{
"$type": "Tango.FSE.Diagnostics.Project.Widgets.Valve.ValveWidget, Tango.FSE.Diagnostics",
"Valve": "DispenserValve2",
+ "Settings": {},
+ "ID": "4829f0da-e128-42f9-a4af-621e895df3ef",
"Column": 3,
"Row": 3,
"ColumnSpan": 3,
- "RowSpan": 2
+ "RowSpan": 2,
+ "Width": 100.0,
+ "Height": 100.0
}
-
]
},
{
@@ -245,11 +326,22 @@
"Widgets": [
{
"$type": "Tango.FSE.Diagnostics.Project.Widgets.RealTimeGraph.RealTimeGraphWidget, Tango.FSE.Diagnostics",
- "Monitor": "Dancer2Angle",
"Column": 2,
"Row": 2,
"ColumnSpan": 6,
- "RowSpan": 6
+ "RowSpan": 6,
+ "Width": 100.0,
+ "Height": 100.0,
+ "Settings": {
+ "Duration": "00:10:00",
+ "DecimalPlaces": 0,
+ "Min": 0.0,
+ "Max": 1000.0,
+ "AutoRange": true,
+ "Color": "#FF1E90FF"
+ },
+ "Monitor": "Dancer2Angle",
+ "ID": "e1da6427-d164-42f7-a4a8-44f804dd51df"
}
]
}