aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2021-05-05 19:50:31 +0300
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2021-05-05 19:50:31 +0300
commit8594795f820e03b988c37b9e5d9771670889074d (patch)
treeb554463c0f91161e172a4384cf2b99c91ef7e6bc /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager
parent6e7818382734e9ef0b65552bb026c6b0a4f69e4b (diff)
downloadTango-8594795f820e03b988c37b9e5d9771670889074d.tar.gz
Tango-8594795f820e03b988c37b9e5d9771670889074d.zip
Machine Manager Improvements.
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager/Models/MachineModel.cs14
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager/ViewModels/MainViewVM.cs159
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager/Views/MainView.xaml6
3 files changed, 114 insertions, 65 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager/Models/MachineModel.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager/Models/MachineModel.cs
index 3923ae981..4b7e94b1e 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager/Models/MachineModel.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager/Models/MachineModel.cs
@@ -31,6 +31,20 @@ namespace Tango.MachineStudio.MachineManager.Models
public String HardwareVersionGuid { get; set; }
+ private String _applicationVersion;
+ public String ApplicationVersion
+ {
+ get { return _applicationVersion; }
+ set { _applicationVersion = value; RaisePropertyChangedAuto(); }
+ }
+
+ private String _firmwareVersion;
+ public String FirmwareVersion
+ {
+ get { return _firmwareVersion; }
+ set { _firmwareVersion = value; RaisePropertyChangedAuto(); }
+ }
+
private String _hardwareVersionName;
public String HardwareVersionName
{
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager/ViewModels/MainViewVM.cs
index 6acaa8423..7d8314860 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager/ViewModels/MainViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager/ViewModels/MainViewVM.cs
@@ -12,6 +12,7 @@ using Tango.Core.Commands;
using Tango.MachineStudio.Common.Notifications;
using Z.EntityFramework.Plus;
using System.ComponentModel;
+using Tango.BL.Enumerations;
namespace Tango.MachineStudio.MachineManager.ViewModels
{
@@ -109,81 +110,107 @@ namespace Tango.MachineStudio.MachineManager.ViewModels
{
try
{
- SelectAll = null;
-
- foreach (var machine in Machines.ToList())
+ using (_notification.PushTaskItem("Loading machines..."))
{
- machine.PropertyChanged -= Machine_PropertyChanged;
- }
+ SelectAll = null;
- using (ObservablesContext db = ObservablesContext.CreateDefault())
- {
- var sites = await db.Sites.ToListAsync();
+ foreach (var machine in Machines.ToList())
+ {
+ machine.PropertyChanged -= Machine_PropertyChanged;
+ }
+
+ using (ObservablesContext db = ObservablesContext.CreateDefault())
+ {
+ var sites = await db.Sites.ToListAsync();
- var machines = await db.Machines
- .Include(x => x.Organization.Name)
- .Include(x => x.Configuration.HardwareVersion.Name)
- .Include(x => x.Configuration.HardwareVersion.Version)
- .Include(x => x.Configuration.HardwareVersion.Guid)
- .Select(x => new
+ var machines = await db.Machines
+ .Include(x => x.Organization.Name)
+ .Include(x => x.Configuration.HardwareVersion.Name)
+ .Include(x => x.Configuration.HardwareVersion.Version)
+ .Include(x => x.Configuration.HardwareVersion.Guid)
+ .Select(x => new
+ {
+ x.Guid,
+ x.SerialNumber,
+ x.Name,
+ x.SuspendVersionUpdate,
+ x.SetupFirmware,
+ x.SetupFpga,
+ x.ConfigurationGuid,
+ HardwareVersionGuid = x.Configuration.HardwareVersion.Guid,
+ HardwareVersionName = x.Configuration.HardwareVersion.Name,
+ HardwareVersionVersion = x.Configuration.HardwareVersion.Version,
+ OrganizationName = x.Organization.Name,
+ x.SiteGuid
+ }).ToListAsync();
+
+ var models = new List<MachineModel>();
+
+ foreach (var machine in machines)
{
- x.Guid,
- x.SerialNumber,
- x.Name,
- x.SuspendVersionUpdate,
- x.SetupFirmware,
- x.SetupFpga,
- x.ConfigurationGuid,
- HardwareVersionGuid = x.Configuration.HardwareVersion.Guid,
- HardwareVersionName = x.Configuration.HardwareVersion.Name,
- HardwareVersionVersion = x.Configuration.HardwareVersion.Version,
- OrganizationName = x.Organization.Name,
- x.SiteGuid
- }).ToListAsync();
+ MachineModel model = new MachineModel();
+ model.Guid = machine.Guid;
+ model.SerialNumber = machine.SerialNumber;
+ model.Name = machine.Name;
+ model.EnableFirmwareUpgrade = machine.SetupFirmware;
+ model.EnableSoftwareUpdate = !machine.SuspendVersionUpdate;
+ model.ConfigurationGuid = machine.ConfigurationGuid;
+ model.HardwareVersionGuid = machine.HardwareVersionGuid;
+ model.HardwareVersionName = machine.HardwareVersionName;
+ model.HardwareVersionVersion = machine.HardwareVersionVersion;
+ model.OrganizationName = machine.OrganizationName;
+ model.Site = sites.FirstOrDefault(x => x.Guid == machine.SiteGuid)?.Name;
+ models.Add(model);
+ }
- var models = new List<MachineModel>();
+ if (Filter.IsNotNullOrEmpty())
+ {
+ var filter = Filter.ToLower();
- foreach (var machine in machines)
- {
- MachineModel model = new MachineModel();
- model.Guid = machine.Guid;
- model.SerialNumber = machine.SerialNumber;
- model.Name = machine.Name;
- model.EnableFirmwareUpgrade = machine.SetupFirmware;
- model.EnableSoftwareUpdate = !machine.SuspendVersionUpdate;
- model.ConfigurationGuid = machine.ConfigurationGuid;
- model.HardwareVersionGuid = machine.HardwareVersionGuid;
- model.HardwareVersionName = machine.HardwareVersionName;
- model.HardwareVersionVersion = machine.HardwareVersionVersion;
- model.OrganizationName = machine.OrganizationName;
- model.Site = sites.FirstOrDefault(x => x.Guid == machine.SiteGuid)?.Name;
+ models = models.Where(x =>
+ x.SerialNumber.ToLower().StartsWith(filter) ||
+ x.Name.ToLower().StartsWith(filter) ||
+ x.OrganizationName.ToLower().StartsWith(filter) ||
+ x.Site.ToStringOrEmpty().ToLower().StartsWith(filter)
+ ).ToList();
+ }
- models.Add(model);
- }
+ foreach (var model in models)
+ {
+ var lastUpdate = await db.TangoUpdates.Where(
- if (Filter.IsNotNullOrEmpty())
- {
- var filter = Filter.ToLower();
+ x => x.MachineGuid == model.Guid &&
+ (x.Status == (int)TangoUpdateStatuses.SetupCompleted ||
+ x.Status == (int)TangoUpdateStatuses.UpdateCompleted ||
+ x.Status == (int)TangoUpdateStatuses.OfflineUpdateCompleted ||
+ x.Status == (int)TangoUpdateStatuses.OfflineFirmwareUpgradeCompleted))
+ .OrderByDescending(x => x.LastUpdated)
+ .Select(x => new
+ {
+ x.ApplicationVersion,
+ x.FirmwareVersion
+ })
+ .FirstOrDefaultAsync();
- models = models.Where(x =>
- x.SerialNumber.ToLower().StartsWith(filter) ||
- x.Name.ToLower().StartsWith(filter) ||
- x.OrganizationName.ToLower().StartsWith(filter) ||
- x.Site.ToStringOrEmpty().ToLower().StartsWith(filter)
- ).ToList();
- }
+ if (lastUpdate != null)
+ {
+ model.ApplicationVersion = lastUpdate.ApplicationVersion;
+ model.FirmwareVersion = lastUpdate.FirmwareVersion;
+ }
+ }
- HardwareVersions = (await db.HardwareVersions.ToListAsync()).OrderByDescending(x => x.Version).ToList();
+ HardwareVersions = (await db.HardwareVersions.ToListAsync()).OrderByDescending(x => x.Version).ToList();
- SelectedHardwareVersion = null;
- EnableSoftwareUpdate = null;
- EnableFirmwareUpgrade = null;
+ SelectedHardwareVersion = null;
+ EnableSoftwareUpdate = null;
+ EnableFirmwareUpgrade = null;
- Machines = models;
+ Machines = models;
- foreach (var machine in Machines.ToList())
- {
- machine.PropertyChanged += Machine_PropertyChanged;
+ foreach (var machine in Machines.ToList())
+ {
+ machine.PropertyChanged += Machine_PropertyChanged;
+ }
}
}
}
@@ -277,6 +304,8 @@ namespace Tango.MachineStudio.MachineManager.ViewModels
try
{
+ IsFree = false;
+
using (_notification.PushTaskItem("Applying changes..."))
{
if (Machines == null || Machines.Count(x => x.IsSelected) == 0)
@@ -322,7 +351,7 @@ namespace Tango.MachineStudio.MachineManager.ViewModels
}
}
- await LoadMachines();
+ await LoadMachines();
}
}
catch (Exception ex)
@@ -330,6 +359,10 @@ namespace Tango.MachineStudio.MachineManager.ViewModels
LogManager.Log(ex, "Error applying changes.");
_notification.ShowError($"Error applying changes.\n{ex.FlattenMessage()}");
}
+ finally
+ {
+ IsFree = true;
+ }
}
}
}
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager/Views/MainView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager/Views/MainView.xaml
index 3af1ba9dd..cf2fee188 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager/Views/MainView.xaml
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager/Views/MainView.xaml
@@ -17,7 +17,7 @@
<TextBlock FontSize="40">Machine Manager</TextBlock>
<StackPanel Orientation="Horizontal" VerticalAlignment="Bottom" Margin="0 40 0 0">
- <materialDesign:PackIcon VerticalAlignment="Center" Kind="BarcodeScan" Width="32" Height="32" />
+ <materialDesign:PackIcon VerticalAlignment="Center" Kind="Magnify" Width="32" Height="32" />
<TextBox Width="500" FontSize="20" Margin="10 0 0 0" materialDesign:HintAssist.Hint="Organization / Serial Number / Name / Site" Text="{Binding Filter,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged,Delay=500}"></TextBox>
</StackPanel>
</StackPanel>
@@ -57,6 +57,8 @@
<DataGridTextColumn Header="ORGANIZATION" Binding="{Binding OrganizationName}" Width="Auto" IsReadOnly="True" />
<DataGridTextColumn Header="SITE" Binding="{Binding Site}" Width="Auto" IsReadOnly="True" />
<DataGridTextColumn Header="HW" Binding="{Binding HardwareVersion}" Width="Auto" IsReadOnly="True" />
+ <DataGridTextColumn Header="APPLICATION" Binding="{Binding ApplicationVersion}" Width="Auto" IsReadOnly="True" />
+ <DataGridTextColumn Header="FIRMWARE" Binding="{Binding FirmwareVersion}" Width="Auto" IsReadOnly="True" />
<DataGridTemplateColumn Header="UPDATE SOFTWARE" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
@@ -77,7 +79,7 @@
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
- <DataGridTemplateColumn Header="FIRMWARE UPDATE" IsReadOnly="True">
+ <DataGridTemplateColumn Header="UPDATE FIRMWARE" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<materialDesign:PackIcon HorizontalAlignment="Center">