aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2018-08-21 15:49:10 +0300
committerRoy Ben-Shabat <Roy@Twine-s.com>2018-08-21 15:49:10 +0300
commitf0588aa546e9497b0f6def56e8b3b1756d30fbfb (patch)
tree4a66d1f9333e9a09b50f94e1745b26a2542d9608 /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels
parent5c58e6499306b3087015758c1054497dccc407e6 (diff)
downloadTango-f0588aa546e9497b0f6def56e8b3b1756d30fbfb.tar.gz
Tango-f0588aa546e9497b0f6def56e8b3b1756d30fbfb.zip
Machine designer working good !
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MachineVersionDialogVM.cs4
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs272
2 files changed, 204 insertions, 72 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MachineVersionDialogVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MachineVersionDialogVM.cs
index 40358344d..b332ebc6b 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MachineVersionDialogVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MachineVersionDialogVM.cs
@@ -14,7 +14,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
{
public class MachineVersionDialogVM : DialogViewVM
{
- public ObservablesEntitiesAdapter Adapter { get; set; }
+ public ObservablesStaticCollections Adapter { get; set; }
public double Version { get; set; }
@@ -46,7 +46,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
public MachineVersionDialogVM()
{
- Adapter = ObservablesEntitiesAdapter.Instance;
+ Adapter = ObservablesStaticCollections.Instance;
AcceptCommand = new RelayCommand(() =>
{
Accept();
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 1f410d49c..a819a4d1a 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
@@ -16,27 +16,39 @@ using SimpleValidator.Extensions;
using Tango.MachineStudio.Common.StudioApplication;
using Tango.MachineStudio.Common;
using Tango.BL;
+using Tango.AutoComplete.Editors;
+using System.Data.Entity;
namespace Tango.MachineStudio.MachineDesigner.ViewModels
{
public class MainViewVM : StudioViewModel<MachineDesignerModule>
{
- private bool _isSaving;
private INotificationProvider _notification;
-
+ private ObservablesContext _db;
+ private Configuration _original_configuration;
#region Properties
- private ObservablesEntitiesAdapter _adapter;
+ private ObservablesStaticCollections _adapter;
/// <summary>
- /// Gets or sets the db adapter.
+ /// Gets or sets the db static adapter.
/// </summary>
- public ObservablesEntitiesAdapter Adapter
+ public ObservablesStaticCollections Adapter
{
get { return _adapter; }
set { _adapter = value; RaisePropertyChangedAuto(); }
}
+ private bool _canWork;
+ /// <summary>
+ /// Gets or sets a value indicating whether this instance can work.
+ /// </summary>
+ public bool CanWork
+ {
+ get { return _canWork; }
+ set { _canWork = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); }
+ }
+
private Machine _machine;
/// <summary>
/// Gets or sets the current editable machine.
@@ -54,7 +66,13 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
public Machine SelectedMachine
{
get { return _selectedMachine; }
- set { _selectedMachine = value; RaisePropertyChangedAuto(); OnSelectedMachineChanged(); }
+ set
+ {
+ if (_selectedMachine != value)
+ {
+ _selectedMachine = value; RaisePropertyChangedAuto(); OnSelectedMachineChanged();
+ }
+ }
}
private Configuration _configuration;
@@ -107,6 +125,16 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
set { _filter = value; RaisePropertyChangedAuto(); OnFilterChanged(); }
}
+ /// <summary>
+ /// Gets or sets the machines provider.
+ /// </summary>
+ public ISuggestionProvider MachinesProvider { get; set; }
+
+ /// <summary>
+ /// Gets or sets the versions provider.
+ /// </summary>
+ public ISuggestionProvider VersionsProvider { get; set; }
+
#endregion
#region Commands
@@ -136,6 +164,11 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
/// </summary>
public RelayCommand SetAsDefaultCommand { get; set; }
+ /// <summary>
+ /// Gets or sets the reset command.
+ /// </summary>
+ public RelayCommand ResetCommand { get; set; }
+
#endregion
#region Constructors
@@ -150,23 +183,89 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
/// </summary>
public MainViewVM(INotificationProvider notification)
{
+ CanWork = true;
+
_notification = notification;
- Adapter = ObservablesEntitiesAdapter.Instance;
Configuration = new Configuration();
Configuration.Name = "Untitled";
Machine = new Machine();
Machine.Configuration = Configuration;
- SaveCommand = new RelayCommand(Save, (x) => !_isSaving);
- AddIdsCommand = new RelayCommand(AddIds, (x) => !_isSaving && Configuration.IdsPacks.Count < 8);
- RemoveIdsCommand = new RelayCommand(RemoveIds, (x) => !_isSaving && SelectedIds != null);
- SetVersionConfigurationCommand = new RelayCommand(SetVersionConfiguration, (x) => !_isSaving);
- SetAsDefaultCommand = new RelayCommand(SetAsDefaultConfiguration, (x) => !_isSaving);
+ SaveCommand = new RelayCommand(Save, (x) => CanWork);
+ AddIdsCommand = new RelayCommand(AddIds, (x) => CanWork && Configuration.IdsPacks.Count < 8);
+ RemoveIdsCommand = new RelayCommand(RemoveIds, (x) => CanWork && SelectedIds != null);
+ SetVersionConfigurationCommand = new RelayCommand(SetVersionConfiguration, (x) => CanWork);
+ SetAsDefaultCommand = new RelayCommand(SetAsDefaultConfiguration, (x) => CanWork);
+ ResetCommand = new RelayCommand(Reset, () => CanWork);
+
+ MachinesProvider = new SuggestionProvider((filter) =>
+ {
+ return _db.Machines.Where(x => x.SerialNumber.StartsWith(filter)).ToList();
+ });
+
+ VersionsProvider = new SuggestionProvider((filter) =>
+ {
+ return _db.MachineVersions.Where(x => x.Version.ToString().StartsWith(filter) || x.Name.StartsWith(filter)).ToList();
+ });
+ }
+
+ #endregion
+
+ #region Application Ready
+
+ public async override void OnApplicationReady()
+ {
+ base.OnApplicationReady();
+
+ await InitCollections();
}
#endregion
+ private Task InitCollections()
+ {
+ return Task.Factory.StartNew(() =>
+ {
+ CanWork = false;
+
+ _db = ObservablesContext.CreateDefault();
+ _db.Configuration.LazyLoadingEnabled = false;
+
+ Adapter = new ObservablesStaticCollections();
+ Adapter.ApplicationDisplayPanelVersions = _db.ApplicationDisplayPanelVersions.ToObservableCollection();
+ Adapter.ApplicationFirmwareVersions = _db.ApplicationFirmwareVersions.ToObservableCollection();
+ Adapter.ApplicationOsVersions = _db.ApplicationOsVersions.ToObservableCollection();
+ Adapter.EmbeddedFirmwareVersions = _db.EmbeddedFirmwareVersions.ToObservableCollection();
+ Adapter.DispenserTypes = _db.DispenserTypes.ToObservableCollection();
+ Adapter.LiquidTypes = _db.LiquidTypes.ToObservableCollection();
+ Adapter.MidTankTypes = _db.MidTankTypes.ToObservableCollection();
+ Adapter.CartridgeTypes = _db.CartridgeTypes.ToObservableCollection();
+ Adapter.IdsPackFormulas = _db.IdsPackFormulas.ToObservableCollection();
+ Adapter.HardwareVersions = _db.HardwareVersions.ToObservableCollection();
+ Adapter.MachineVersions = _db.MachineVersions.ToObservableCollection();
+ Adapter.Organizations = _db.Organizations.ToObservableCollection();
+
+ Adapter.InitCollectionSources();
+
+ CanWork = true;
+ });
+ }
+
+ private void Reset()
+ {
+ using (_notification.PushTaskItem("Resetting designer..."))
+ {
+ SelectedMachine = null;
+ Machine = new Machine();
+ Configuration = new Configuration();
+ History = new ObservableCollection<Configuration>();
+ SelectedHistoryConfiguration = null;
+ Filter = String.Empty;
+ InitCollections();
+ }
+ }
+
#region Virtual Methods
/// <summary>
@@ -176,9 +275,23 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
{
if (SelectedMachine != null)
{
- Machine = SelectedMachine.Clone();
- Configuration = Machine.Configuration.Clone();
- History = SelectedMachine.MachinesConfigurations.Select(x => x.Configuration).ToObservableCollection();
+ CanWork = false;
+
+ using (_notification.PushTaskItem("Loading machine configuration..."))
+ {
+ Task.Factory.StartNew(() =>
+ {
+ InitCollections().Wait();
+ Machine = _db.Machines.Where(x => x.Guid == SelectedMachine.Guid).Include(x => x.Organization).SingleOrDefault(x => x.Guid == SelectedMachine.Guid);
+ Configuration = _db.LoadConfiguration(x => x.Guid == Machine.ConfigurationGuid);
+
+ SetHistory();
+
+ _original_configuration = Configuration.Clone();
+ });
+ }
+
+ CanWork = true;
}
else
{
@@ -191,9 +304,21 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
/// </summary>
protected virtual void OnHistoryConfigurationSelected()
{
- if (SelectedHistoryConfiguration != null)
+ if (SelectedHistoryConfiguration != null && CanWork)
{
- Configuration = SelectedHistoryConfiguration.Clone();
+ using (_notification.PushTaskItem("Loading Configuration..."))
+ {
+ Task.Factory.StartNew(() =>
+ {
+ CanWork = false;
+
+ SelectedHistoryConfiguration = _db.LoadConfiguration(x => x.Guid == SelectedHistoryConfiguration.Guid);
+ Configuration = SelectedHistoryConfiguration;
+ Machine.Configuration = Configuration;
+
+ CanWork = true;
+ });
+ }
}
}
@@ -202,8 +327,6 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
/// </summary>
protected virtual void OnFilterChanged()
{
-
-
List<ICollectionView> collections = new List<ICollectionView>();
collections.Add(Adapter.ApplicationFirmwareVersionsViewSource);
collections.Add(Adapter.ApplicationDisplayPanelVersionsViewSource);
@@ -223,7 +346,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
{
String value = prop.GetValue(x).ToStringSafe();
- if (value != null)
+ if (value != null && Filter != null)
{
if (value.ToLower().Contains(Filter.ToLower()))
{
@@ -366,7 +489,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
/// </summary>
private void RemoveIds()
{
- Configuration.IdsPacks.Remove(SelectedIds);
+ _db.IdsPacks.Remove(SelectedIds);
SelectedIds = null;
}
@@ -375,7 +498,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
/// </summary>
private void AddIds()
{
- Configuration.IdsPacks.Add(new IdsPack() { Configuration = Configuration });
+ _db.IdsPacks.Add(new IdsPack() { Configuration = Configuration });
InvalidateRelayCommands();
}
@@ -494,17 +617,17 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
//Validate
- _isSaving = true;
- InvalidateRelayCommands();
-
try
{
+ CanWork = false;
+
using (_notification.PushTaskItem("Saving Machine Configuration..."))
{
- if (!Adapter.Machines.ToList().Exists(x => x.SerialNumber.ToLower() == Machine.SerialNumber.ToLower()))
+ if (!_db.Machines.Any(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?"))
{
+ CanWork = true;
return;
}
else
@@ -512,53 +635,34 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
Machine.Configuration = Configuration;
Configuration.CreationDate = DateTime.UtcNow;
Machine.ProductionDate = DateTime.UtcNow;
- Machine.MachinesConfigurations.Add(new MachinesConfiguration()
+
+ _db.Machines.Add(Machine);
+ _db.MachinesConfigurations.Add(new MachinesConfiguration()
{
Configuration = Configuration,
Machine = Machine,
});
- await Machine.SaveAsync(Adapter.Context);
-
- Machine = Adapter.Machines.SingleOrDefault(x => x.Guid == Machine.Guid);
- Configuration = Machine.Configuration.Clone();
}
}
else
{
- 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.Organization = Machine.Organization;
-
+ bool add_history = History.Count == 0 || _original_configuration.Name != Configuration.Name;
if (add_history)
{
- machine.MachinesConfigurations.Add(new MachinesConfiguration()
+ _db.Configurations.Add(_original_configuration);
+
+ _db.MachinesConfigurations.Add(new MachinesConfiguration()
{
- Configuration = Configuration,
- Machine = machine
+ Configuration = _original_configuration,
+ Machine = Machine
});
}
- else
- {
- machine.Configuration.DefferedDelete(Adapter.Context);
- }
-
- machine.Configuration = Configuration;
-
- await machine.SaveAsync(Adapter.Context);
-
- Machine = Adapter.Machines.SingleOrDefault(x => x.Guid == machine.Guid);
- Configuration = Machine.Configuration.Clone();
}
- SetHistory(Machine);
- Machine = Machine.Clone();
+ await _db.SaveChangesAsync();
+ OnSelectedMachineChanged();
+
}
}
catch (Exception ex)
@@ -567,7 +671,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
}
finally
{
- _isSaving = false;
+ CanWork = true;
InvalidateRelayCommands();
}
}
@@ -576,20 +680,33 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
/// Sets the specified machine history.
/// </summary>
/// <param name="machine">The machine.</param>
- private void SetHistory(Machine machine)
+ private void SetHistory()
{
- History = machine.MachinesConfigurations.Select(x => x.Configuration).ToObservableCollection();
- History.Insert(0, machine.Configuration);
+ History = _db.MachinesConfigurations.Where(x => x.MachineGuid == Machine.Guid).Select(x => x.Configuration).ToObservableCollection();
+ //History.Insert(0, Machine.Configuration);
}
/// <summary>
/// Sets the current configuration to the selected machine version default configuration.
/// </summary>
- private void SetVersionConfiguration()
+ private async void SetVersionConfiguration()
{
if (Machine.MachineVersion != null)
{
- Configuration = Machine.MachineVersion.DefaultConfiguration.Clone();
+ using (_notification.PushTaskItem("Applying default configuration..."))
+ {
+ CanWork = false;
+
+ await Task.Factory.StartNew(() =>
+ {
+ var version = _db.MachineVersions.Where(x => x.Guid == Machine.MachineVersion.Guid).Include(x => x.DefaultConfiguration).FirstOrDefault();
+ var version_config = _db.LoadConfiguration(x => x.Guid == version.DefaultConfiguration.Guid);
+ Configuration = version_config.Clone();
+ Machine.Configuration = Configuration;
+ });
+
+ CanWork = true;
+ }
}
else
{
@@ -604,15 +721,23 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
{
_notification.ShowModalDialog<MachineVersionDialogVM>(async (vm) =>
{
+ CanWork = false;
+
try
{
using (_notification.PushTaskItem("Saving Default Configuration..."))
{
if (vm.SelectedVersion != null)
{
- vm.SelectedVersion.DefaultConfiguration = Configuration.Clone();
- vm.SelectedVersion.DefaultConfigurationGuid = vm.SelectedVersion.DefaultConfiguration.Guid;
- await vm.SelectedVersion.SaveAsync(Adapter.Context);
+ var version = _db.MachineVersions.Where(x => x.Guid == vm.SelectedVersion.Guid).Include(x => x.DefaultConfiguration).SingleOrDefault(x => x.Guid == vm.SelectedVersion.Guid);
+
+ _db.Configurations.Remove(version.DefaultConfiguration);
+
+ var cloned = Configuration.Clone();
+ _db.Configurations.Add(cloned);
+ version.DefaultConfiguration = cloned;
+
+ await _db.SaveChangesAsync();
}
else
{
@@ -620,9 +745,12 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
newVersion.Version = vm.Version;
newVersion.Name = vm.VersionName;
- newVersion.DefaultConfiguration = Configuration.Clone();
- newVersion.DefaultConfigurationGuid = newVersion.DefaultConfiguration.Guid;
- await newVersion.SaveAsync(Adapter.Context);
+ var cloned = Configuration.Clone();
+
+ _db.Configurations.Add(cloned);
+ newVersion.DefaultConfiguration = cloned;
+ _db.MachineVersions.Add(newVersion);
+ await _db.SaveChangesAsync();
}
}
}
@@ -630,6 +758,10 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
{
_notification.ShowError(ex.Message);
}
+ finally
+ {
+ CanWork = true;
+ }
}, () =>
{
@@ -643,7 +775,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
public override void OnModuleRequest(params object[] args)
{
- SelectedMachine = Adapter.Machines.SingleOrDefault(x => x.Guid == (args[0] as Machine).Guid);
+ //SelectedMachine = Adapter.Machines.SingleOrDefault(x => x.Guid == (args[0] as Machine).Guid);
}
#endregion