diff options
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.cs | 181 |
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); + } } } |
