aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels
diff options
context:
space:
mode:
authorRoy <roy.mail.net@gmail.com>2018-01-07 09:27:42 +0200
committerRoy <roy.mail.net@gmail.com>2018-01-07 09:27:42 +0200
commitdd18ae0c096a34048477297ba848a089a99eece1 (patch)
treebf036a7fac1b0d1f0439fb0e039e15c491e3881a /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels
parent6900c4dea48adb484efc9648e081b7b3f75bd60c (diff)
downloadTango-dd18ae0c096a34048477297ba848a089a99eece1.tar.gz
Tango-dd18ae0c096a34048477297ba848a089a99eece1.zip
Progress on machine designer...
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs181
1 files changed, 172 insertions, 9 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs
index 241297d85..22e350745 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs
@@ -1,9 +1,14 @@
using System;
using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
using System.Linq;
+using System.Reflection;
using System.Text;
using System.Threading.Tasks;
+using System.Windows.Data;
using Tango.Core.Commands;
+using Tango.Core.Helpers;
using Tango.DAL.Observables;
using Tango.MachineStudio.Common.Notifications;
using Tango.SharedUI;
@@ -32,7 +37,14 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
public Machine Machine
{
get { return _machine; }
- set { _machine = value; RaisePropertyChangedAuto(); OnMachineChanged(); }
+ set { _machine = value; RaisePropertyChangedAuto(); }
+ }
+
+ private Machine _selectedMachine;
+ public Machine SelectedMachine
+ {
+ get { return _selectedMachine; }
+ set { _selectedMachine = value; RaisePropertyChangedAuto(); OnSelectedMachineChanged(); }
}
private Configuration _configuration;
@@ -55,6 +67,33 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
set { _selectedIds = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); }
}
+ private ObservableCollection<Configuration> _history;
+
+ public ObservableCollection<Configuration> History
+ {
+ get { return _history; }
+ set { _history = value; RaisePropertyChangedAuto(); }
+ }
+
+
+ private Configuration _selectedHistoryConfiguration;
+ /// <summary>
+ /// Gets or sets the selected history configuration.
+ /// </summary>
+ public Configuration SelectedHistoryConfiguration
+ {
+ get { return _selectedHistoryConfiguration; }
+ set { _selectedHistoryConfiguration = value; RaisePropertyChangedAuto(); OnHistoryConfigurationSelected(); }
+ }
+
+ private String _filter;
+
+ public String Filter
+ {
+ get { return _filter; }
+ set { _filter = value; RaisePropertyChangedAuto(); OnFilterChanged(); }
+ }
+
public RelayCommand SaveCommand { get; set; }
public RelayCommand AddIdsCommand { get; set; }
@@ -71,21 +110,34 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
Adapter = ObservablesEntitiesAdapter.Instance;
Configuration = new Configuration();
Configuration.Name = "Untitled";
+ Machine = new Machine();
+ Machine.Configuration = Configuration;
+ Configuration.ApplicationFirmwareVersions = Adapter.ApplicationFirmwareVersions.First();
SaveCommand = new RelayCommand(Save, (x) => !_isSaving);
AddIdsCommand = new RelayCommand(AddIds, (x) => !_isSaving && Configuration.IdsPacks.Count < 8);
RemoveIdsCommand = new RelayCommand(RemoveIds, (x) => !_isSaving && SelectedIds != null);
}
- private void OnMachineChanged()
+ private void OnSelectedMachineChanged()
{
- if (Machine != null)
+ if (SelectedMachine != null)
{
- Configuration = Machine.Configuration;
+ Machine = SelectedMachine.CloneEntity();
+ Configuration = Machine.Configuration.CloneConfiguration();
+ History = SelectedMachine.MachinesConfigurations.Select(x => x.Configuration).ToObservableCollection();
}
else
{
- Configuration = new Configuration() { Name = "Untitled" };
+ History = new ObservableCollection<Configuration>();
+ }
+ }
+
+ private void OnHistoryConfigurationSelected()
+ {
+ if (SelectedHistoryConfiguration != null)
+ {
+ Configuration = SelectedHistoryConfiguration.CloneConfiguration();
}
}
@@ -101,6 +153,12 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
Configuration.ApplicationVersionGuid = applicationVersion.Guid;
}
+ public void DropHardwareVersion(HardwareVersion hardwareVersion)
+ {
+ Configuration.HardwareVersions = hardwareVersion;
+ Configuration.HardwareVersionGuid = hardwareVersion.Guid;
+ }
+
public void DropEmbeddedFirmware(EmbeddedFirmwareVersion embeddedFirmwareVersion)
{
Configuration.EmbeddedFirmwareVersions = embeddedFirmwareVersion;
@@ -113,6 +171,12 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
Configuration.EmbeddedSoftwareVersionGuid = embeddedSoftwareVersion.Guid;
}
+ public void DropApplicationOsVersion(ApplicationOsVersion applicationOsVersion)
+ {
+ Configuration.ApplicationOsVersions = applicationOsVersion;
+ Configuration.ApplicationVersionGuid = applicationOsVersion.Guid;
+ }
+
private void RemoveIds()
{
Configuration.IdsPacks.Remove(SelectedIds);
@@ -121,7 +185,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
private void AddIds()
{
- Configuration.IdsPacks.Add(new IdsPack());
+ Configuration.IdsPacks.Add(new IdsPack() { Configuration = Configuration });
InvalidateRelayCommands();
}
@@ -149,6 +213,42 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
idsPack.LiquidTypeGuid = liquidType.Guid;
}
+ private void OnFilterChanged()
+ {
+
+
+ List<ICollectionView> collections = new List<ICollectionView>();
+ collections.Add(Adapter.ApplicationDisplayPanelVersionsViewSource);
+ collections.Add(Adapter.ApplicationVersionsViewSource);
+ collections.Add(Adapter.EmbeddedSoftwareVersionsViewSource);
+ collections.Add(Adapter.EmbeddedFirmwareVersionsViewSource);
+ collections.Add(Adapter.ApplicationOsVersionsViewSource);
+ collections.Add(Adapter.ApplicationVersionsViewSource);
+ collections.Add(Adapter.DispensersViewSource);
+ collections.Add(Adapter.CartridgeTypesViewSource);
+ collections.Add(Adapter.LiquidTypesViewSource);
+ collections.Add(Adapter.MidTankTypesViewSource);
+ collections.Add(Adapter.HardwareVersionsViewSource);
+
+ foreach (var collection in collections)
+ {
+ collection.Filter = (x) =>
+ {
+ foreach (var prop in x.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(y => y.PropertyType == typeof(String)))
+ {
+ String value = prop.GetValue(x).ToStringSafe();
+
+ if (value != null)
+ {
+ return value.ToLower().Contains(Filter.ToLower());
+ }
+ }
+
+ return false;
+ };
+ }
+ }
+
private async void Save()
{
_isSaving = true;
@@ -156,10 +256,67 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
try
{
- using (_notification.PushTaskItem("Saving Configuration..."))
+ using (_notification.PushTaskItem("Saving Machine Configuration..."))
{
- await Configuration.SaveAsync();
- Configuration = Adapter.Configurations.SingleOrDefault(x => x.Guid == Configuration.Guid);
+ if (!Adapter.Machines.ToList().Exists(x => x.SerialNumber.ToLower() == Machine.SerialNumber.ToLower()))
+ {
+ if (!_notification.ShowQuestion("The specified machine serial number does not exist. Do you wish to create a new machine?"))
+ {
+ return;
+ }
+ else
+ {
+ Machine.Configuration = Configuration;
+ Configuration.CreationDate = DateTime.UtcNow;
+ Machine.ProductionDate = DateTime.UtcNow;
+ Machine.MachinesConfigurations.Add(new MachinesConfiguration()
+ {
+ Configuration = Configuration,
+ Machine = Machine,
+ });
+ await Machine.SaveAsync();
+
+ Machine = Adapter.Machines.SingleOrDefault(x => x.Guid == Machine.Guid);
+ Configuration = Machine.Configuration.CloneConfiguration();
+ }
+ }
+ else
+ {
+ foreach (var ids in Configuration.IdsPacks)
+ {
+ ids.Configuration = Configuration;
+ ids.ConfigurationGuid = Configuration.Guid;
+ }
+
+ var machine = Adapter.Machines.Single(x => x.SerialNumber.ToLower() == Machine.SerialNumber.ToLower());
+
+ //Set 'Real machine' parameters...
+
+ bool add_history = History.Count == 0 || History.First().Name != Configuration.Name;
+
+ machine.Name = Machine.Name;
+ machine.SerialNumber = Machine.SerialNumber;
+ machine.Configuration = Configuration;
+ machine.Organization = Machine.Organization;
+
+
+ if (add_history)
+ {
+ machine.MachinesConfigurations.Add(new MachinesConfiguration()
+ {
+ Configuration = Configuration,
+ Machine = machine
+ });
+ }
+
+ await machine.SaveAsync();
+
+ Machine = Adapter.Machines.SingleOrDefault(x => x.Guid == machine.Guid);
+ Configuration = Machine.Configuration.CloneConfiguration();
+ }
+
+ SetHistory(Machine);
+ Machine = Machine.CloneEntity();
}
}
catch (Exception ex)
@@ -172,5 +329,11 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
InvalidateRelayCommands();
}
}
+
+ private void SetHistory(Machine machine)
+ {
+ History = machine.MachinesConfigurations.Select(x => x.Configuration).ToObservableCollection();
+ History.Insert(0, machine.Configuration);
+ }
}
}