aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs47
1 files changed, 45 insertions, 2 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 cad54c848..75dcdbfe4 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
@@ -36,6 +36,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
{
public class MainViewVM : StudioViewModel<IMainView>
{
+ private const int MAX_IDS_PACKS = 15;
private INotificationProvider _notification;
private IActionLogManager _actionLogManager;
private IAuthenticationProvider _authentication;
@@ -260,6 +261,8 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
public RelayCommand MakePrototypeCommand { get; set; }
public RelayCommand UpgradeToGen2Command { get; set; }
+
+ public RelayCommand CreateDispenserCommand { get; set; }
#endregion
#region Constructors
@@ -283,7 +286,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
_machines_action_timer = new ActionTimer(TimeSpan.FromMilliseconds(200));
_dispensers_action_timer = new ActionTimer(TimeSpan.FromMilliseconds(200));
- AddIdsCommand = new RelayCommand(AddIds, (x) => ActiveMachine != null && ActiveMachine.Configuration != null && ActiveMachine.Configuration.IdsPacks.Count < 10);
+ AddIdsCommand = new RelayCommand(AddIds, (x) => ActiveMachine != null && ActiveMachine.Configuration != null && ActiveMachine.Configuration.IdsPacks.Count < MAX_IDS_PACKS);
RemoveIdsCommand = new RelayCommand(RemoveIds, (x) => SelectedIds != null);
EditMachineCommand = new RelayCommand(() => LoadSelectedMachine(), () => SelectedMachine != null);
BackToMachinesCommand = new RelayCommand(() => View.NavigateTo(MachineDesignerNavigationView.MachinesView));
@@ -300,6 +303,8 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
TupViewVM = new TupViewVM(_notification);
UpgradeToGen2Command = new RelayCommand(UpgradeToGEN2);
+
+ CreateDispenserCommand = new RelayCommand(CreateDispenser);
}
#endregion
@@ -317,7 +322,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
{
Task.Factory.StartNew(() =>
{
- ActiveMachineAdapter.Dispensers = ActiveMachineAdapter.Context.Dispensers.Where(x => x.SerialNumber.ToLower().StartsWith(DispensersFilter.ToLower())).OrderBy(x => x.SerialNumber).ToSynchronizedObservableCollection();
+ ActiveMachineAdapter.Dispensers = ActiveMachineAdapter.Context.Dispensers.Where(x => x.SerialNumber.ToLower().StartsWith(DispensersFilter.ToLower())).OrderBy(x => x.SerialNumber).ToSynchronizedObservableCollection().OrderByAlphaNumeric(x => x.SerialNumber).ToSynchronizedObservableCollection();
});
});
}
@@ -393,6 +398,18 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
/// <param name="idsPack">The ids pack.</param>
public void DropDispenser(Dispenser dispenser, IdsPack idsPack)
{
+ if (ActiveMachine.Configuration.IdsPacks.Any(x => x.DispenserGuid == dispenser.Guid))
+ {
+ _notification.ShowError("The selected dispenser is already installed on this machine.");
+ return;
+ }
+
+ if (ActiveMachineAdapter.Context.IdsPacks.Any(x => x.DispenserGuid == dispenser.Guid))
+ {
+ _notification.ShowError("The selected dispenser is already installed on another machine.");
+ return;
+ }
+
idsPack.Dispenser = dispenser;
idsPack.DispenserGuid = dispenser.Guid;
}
@@ -965,6 +982,32 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
}
}
+ private async void CreateDispenser()
+ {
+ String serialNumber = _notification.ShowTextInput("Please enter new serial number", "Serial Number", ActiveMachine.SerialNumber + "_D" + (ActiveMachine.Configuration.IdsPacks.Where(x => x.Dispenser != null).Count() + 1).ToString());
+ if (serialNumber.IsNullOrWhiteSpace()) return;
+
+ if (ActiveMachineAdapter.Context.Dispensers.Any(x => x.SerialNumber == serialNumber))
+ {
+ _notification.ShowError($"Dispenser '{serialNumber}' already exists. Please enter a different serial number.");
+ return;
+ }
+
+ using (_notification.PushTaskItem("Creating new dispenser..."))
+ {
+ using (var db = ObservablesContext.CreateDefault())
+ {
+ Dispenser dispenser = new Dispenser();
+ dispenser.SerialNumber = serialNumber;
+ dispenser.DispenserTypeGuid = ActiveMachineAdapter.Context.DispenserTypes.First(x => x.Code == (int)DispenserTypes.StandardDispenser).Guid;
+ dispenser.NlPerPulse = 2.34;
+ db.Dispensers.Add(dispenser);
+ await db.SaveChangesAsync();
+ DispensersFilter = serialNumber;
+ }
+ }
+ }
+
#endregion
private void CloneMachine()