aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/MainViewVM.cs
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2020-03-18 10:03:11 +0200
committerShlomo Hecht <shlomo@twine-s.com>2020-03-18 10:03:11 +0200
commitada2ce25bd36b6f7b3c8aa01039cc9611b22e55c (patch)
tree0684b4e94a807188d2d92f46c33ed36b724692bc /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/MainViewVM.cs
parent2cd94c78ab9de58fc1f8525e69ab5fa563d0ff75 (diff)
parentcb7fff096f2fe6812184a286290eaad193c7c2df (diff)
downloadTango-ada2ce25bd36b6f7b3c8aa01039cc9611b22e55c.tar.gz
Tango-ada2ce25bd36b6f7b3c8aa01039cc9611b22e55c.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/MainViewVM.cs')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/MainViewVM.cs237
1 files changed, 161 insertions, 76 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/MainViewVM.cs
index 5c55892ba..1ceaf07df 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/MainViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/MainViewVM.cs
@@ -24,6 +24,7 @@ using Tango.Core.ExtensionMethods;
using Tango.MachineStudio.Common.Authentication;
using Tango.BL.ActionLogs;
using Tango.BL.DTO;
+using Tango.BL.Enumerations;
namespace Tango.MachineStudio.RML.ViewModels
{
@@ -86,6 +87,13 @@ namespace Tango.MachineStudio.RML.ViewModels
set { _fiberSynths = value; RaisePropertyChangedAuto(); }
}
+ private ObservableCollection<SpoolType> _spoolTypes;
+ public ObservableCollection<SpoolType> SpoolTypes
+ {
+ get { return _spoolTypes; }
+ set { _spoolTypes = value; RaisePropertyChangedAuto(); }
+ }
+
private Rml _selectedRML;
public Rml SelectedRML
{
@@ -149,6 +157,14 @@ namespace Tango.MachineStudio.RML.ViewModels
set { _colorConversionViewVM = value; RaisePropertyChangedAuto(); }
}
+ private RmlsSpool _selectedSpool;
+ public RmlsSpool SelectedSpool
+ {
+ get { return _selectedSpool; }
+ set { _selectedSpool = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); }
+ }
+
+
/// <summary>
/// Gets or sets the manage RML command.
/// </summary>
@@ -191,6 +207,16 @@ namespace Tango.MachineStudio.RML.ViewModels
public RelayCommand ImportRMLFileCommand { get; set; }
+ /// <summary>
+ /// Gets or sets the add spool command.
+ /// </summary>
+ public RelayCommand AddSpoolCommand { get; set; }
+
+ /// <summary>
+ /// Gets or sets the remove spool command.
+ /// </summary>
+ public RelayCommand RemoveSpoolCommand { get; set; }
+
public MainViewVM(INotificationProvider notificationProvider, IAuthenticationProvider authentication, IActionLogManager actionLogManager)
{
_notification = notificationProvider;
@@ -214,6 +240,9 @@ namespace Tango.MachineStudio.RML.ViewModels
ExportRMLFileCommand = new RelayCommand(ExportRmlFile, () => SelectedRML != null && IsFree);
ImportRMLFileCommand = new RelayCommand(ImportRmlFile, () => IsFree);
+
+ AddSpoolCommand = new RelayCommand(AddNewSpool);
+ RemoveSpoolCommand = new RelayCommand(RemoveSpool, () => SelectedSpool != null);
}
public override void OnApplicationReady()
@@ -254,101 +283,114 @@ namespace Tango.MachineStudio.RML.ViewModels
{
using (_notification.PushTaskItem("Loading RML..."))
{
- IsFree = false;
-
- if (_active_context != null)
+ try
{
- _active_context.Dispose();
- }
-
- _active_context = ObservablesContext.CreateDefault();
+ IsFree = false;
- CCTS = _active_context.Ccts
- .Select(x => new CctModel()
+ if (_active_context != null)
{
- Guid = x.Guid,
- FileName = x.FileName,
+ _active_context.Dispose();
+ }
- }).ToObservableCollection();
+ _active_context = ObservablesContext.CreateDefault();
- CCTS.Where(x => String.IsNullOrWhiteSpace(x.FileName)).ToList().ForEach(x => x.FileName = x.Guid);
+ CCTS = _active_context.Ccts
+ .Select(x => new CctModel()
+ {
+ Guid = x.Guid,
+ FileName = x.FileName,
- LoadRmlProperties();
+ }).ToObservableCollection();
- ActiveRML = await new RmlBuilder(_active_context)
- .Set(guid)
- .WithActiveParametersGroup()
- .WithLiquidFactors()
- .WithCCT()
- .BuildAsync();
+ CCTS.Where(x => String.IsNullOrWhiteSpace(x.FileName)).ToList().ForEach(x => x.FileName = x.Guid);
- if (ActiveRML.Cct != null)
- {
- SelectedCCT = CCTS.SingleOrDefault(x => x.Guid == ActiveRML.Cct.Guid);
- }
+ LoadRmlProperties();
- if (ActiveRML.ProcessParametersTablesGroups.ToList().Count == 0)
- {
- if (!_notification.ShowQuestion("Could not find any process group for the selected RML. Would you like to create one?"))
+ ActiveRML = await new RmlBuilder(_active_context)
+ .Set(guid)
+ .WithActiveParametersGroup()
+ .WithLiquidFactors()
+ .WithCCT()
+ .WithSpools()
+ .BuildAsync();
+
+ if (ActiveRML.Cct != null)
{
- _notification.ShowError("Cannot load an RML with no process group.");
- IsFree = true;
- return;
+ SelectedCCT = CCTS.SingleOrDefault(x => x.Guid == ActiveRML.Cct.Guid);
}
- else
+
+ if (ActiveRML.ProcessParametersTablesGroups.ToList().Count == 0)
{
- ProcessParametersTablesGroup group = new ProcessParametersTablesGroup();
- group.Name = "Active Group";
- group.Active = true;
- group.ProcessParametersTables.Add(new ProcessParametersTable()
+ if (!_notification.ShowQuestion("Could not find any process group for the selected RML. Would you like to create one?"))
{
- Name = "Process Table 1",
- });
+ _notification.ShowError("Cannot load an RML with no process group.");
+ IsFree = true;
+ return;
+ }
+ else
+ {
+ ProcessParametersTablesGroup group = new ProcessParametersTablesGroup();
+ group.Name = "Active Group";
+ group.Active = true;
+ group.ProcessParametersTables.Add(new ProcessParametersTable()
+ {
+ Name = "Process Table 1",
+ });
- group.Rml = ActiveRML;
+ group.Rml = ActiveRML;
- _active_context.ProcessParametersTablesGroups.Add(group);
- _active_context.ProcessParametersTables.Add(group.ProcessParametersTables[0]);
- await _active_context.SaveChangesAsync();
- LoadActiveRML(ActiveRML.Guid);
- return;
+ _active_context.ProcessParametersTablesGroups.Add(group);
+ _active_context.ProcessParametersTables.Add(group.ProcessParametersTables[0]);
+ await _active_context.SaveChangesAsync();
+ LoadActiveRML(ActiveRML.Guid);
+ return;
+ }
}
- }
-
- ActiveProcessParametersGroup = ActiveRML.ProcessParametersTablesGroups.ToList().FirstOrDefault();
- ActiveProcessParametersTableView = CollectionViewSource.GetDefaultView(ActiveProcessParametersGroup.ProcessParametersTables);
- ActiveProcessParametersTableView.SortDescriptions.Add(new SortDescription(nameof(ProcessParametersTable.TableIndex), ListSortDirection.Ascending));
- CalibrationDataViewVM = new CalibrationDataViewVM(_notification);
- LiquidTypesRmls = ActiveRML.LiquidTypesRmls;
+ ActiveProcessParametersGroup = ActiveRML.ProcessParametersTablesGroups.ToList().FirstOrDefault();
+ ActiveProcessParametersTableView = CollectionViewSource.GetDefaultView(ActiveProcessParametersGroup.ProcessParametersTables);
+ ActiveProcessParametersTableView.SortDescriptions.Add(new SortDescription(nameof(ProcessParametersTable.TableIndex), ListSortDirection.Ascending));
- foreach (var liquidTypeRml in LiquidTypesRmls)
- {
- CalibrationDataVM catVM = new CalibrationDataVM(liquidTypeRml.LiquidType);
+ CalibrationDataViewVM = new CalibrationDataViewVM(_notification);
+ LiquidTypesRmls = ActiveRML.LiquidTypesRmls;
- if (liquidTypeRml.DefaultCatData != null)
+ foreach (var liquidTypeRml in LiquidTypesRmls)
{
- catVM.CalibrationPoints = liquidTypeRml.GetCalibrationData().CalibrationPoints.Select(x => new CalibrationDataPointVM(x.X, x.Y)).ToObservableCollection();
- }
+ CalibrationDataVM catVM = new CalibrationDataVM(liquidTypeRml.LiquidType);
- CalibrationDataViewVM.LiquidsCalibrationData.Add(catVM);
- }
+ if (liquidTypeRml.DefaultCatData != null)
+ {
+ catVM.CalibrationPoints = liquidTypeRml.GetCalibrationData().CalibrationPoints.Select(x => new CalibrationDataPointVM(x.X, x.Y)).ToObservableCollection();
+ }
- ColorConversionViewVM = new ColorConversionViewVM(_notification)
- {
- RML = ActiveRML,
- CCT = SelectedCCT,
- LiquidsCalibrationData = CalibrationDataViewVM.LiquidsCalibrationData,
- LiquidTypesRmls = LiquidTypesRmls,
- };
+ CalibrationDataViewVM.LiquidsCalibrationData.Add(catVM);
+ }
- _rmlBeforeSave = RmlDTO.FromObservable(ActiveRML);
+ ColorConversionViewVM = new ColorConversionViewVM(_notification)
+ {
+ RML = ActiveRML,
+ CCT = SelectedCCT,
+ LiquidsCalibrationData = CalibrationDataViewVM.LiquidsCalibrationData,
+ LiquidTypesRmls = LiquidTypesRmls,
+ };
- View.NavigateTo(RmlNavigationView.RmlView);
+ _rmlBeforeSave = RmlDTO.FromObservable(ActiveRML);
- InvalidateRelayCommands();
+ View.NavigateTo(RmlNavigationView.RmlView);
- IsFree = true;
+ InvalidateRelayCommands();
+
+ IsFree = true;
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log($"Error loading RML '{ActiveRML.Name}'...");
+ _notification.ShowError($"Error loading the selected thread.\n{ex.FlattenMessage()}");
+ }
+ finally
+ {
+ IsFree = true;
+ }
}
}
@@ -381,6 +423,7 @@ namespace Tango.MachineStudio.RML.ViewModels
LinearMassDensityUnits = _active_context.LinearMassDensityUnits.ToObservableCollection();
FiberShapes = _active_context.FiberShapes.ToObservableCollection();
FiberSynths = _active_context.FiberSynths.ToObservableCollection();
+ SpoolTypes = _active_context.SpoolTypes.ToObservableCollection();
}
private async void AddNewRml()
@@ -410,6 +453,8 @@ namespace Tango.MachineStudio.RML.ViewModels
Rml rml = new Rml();
rml.Name = name;
+ rml.DisplayName = name;
+ rml.QualificationDate = DateTime.UtcNow;
rml.Manufacturer = "Twine";
rml.Code = Rmls.Max(x => x.Code) + 1;
rml.MediaMaterial = Materials.FirstOrDefault();
@@ -457,7 +502,7 @@ namespace Tango.MachineStudio.RML.ViewModels
if (rml_jobs.Count > 0)
{
- _notification.ShowError($"The following jobs must be removed or change thread type before the selected thread can be deleted:\n{String.Join("\n",rml_jobs.Select(x => $"{x.Machine.SerialNumber} => {x.Name}"))}");
+ _notification.ShowError($"The following jobs must be removed or change thread type before the selected thread can be deleted:\n{String.Join("\n", rml_jobs.Select(x => $"{x.Machine.SerialNumber} => {x.Name}"))}");
return;
}
@@ -492,7 +537,7 @@ namespace Tango.MachineStudio.RML.ViewModels
using (var context = ObservablesContext.CreateDefault())
{
- var rml = await new RmlBuilder(context).Set(SelectedRML.Guid).WithActiveParametersGroup().WithLiquidFactors().BuildAsync();
+ var rml = await new RmlBuilder(context).Set(SelectedRML.Guid).WithActiveParametersGroup().WithLiquidFactors().WithSpools().BuildAsync();
Rml cloned = new Rml();
rml.MapPropertiesTo(cloned, MappingFlags.NoReferenceTypes);
@@ -501,6 +546,9 @@ namespace Tango.MachineStudio.RML.ViewModels
cloned.Guid = Guid.NewGuid().ToString();
cloned.ID = 0;
cloned.Name = name;
+ cloned.DisplayName = name;
+ cloned.RmlQualificationLevel = RmlQualifications.Provisional;
+ cloned.QualificationDate = DateTime.UtcNow;
ProcessParametersTablesGroup group = new ProcessParametersTablesGroup();
group.Name = rml.GetActiveProcessGroup().Name;
@@ -526,6 +574,15 @@ namespace Tango.MachineStudio.RML.ViewModels
cloned.LiquidTypesRmls.Add(l);
}
+ foreach (var spool in rml.RmlsSpools)
+ {
+ RmlsSpool s = new RmlsSpool();
+ spool.MapPropertiesTo(s, MappingFlags.ValueTypesOnly);
+ s.RmlGuid = cloned.Guid;
+ s.SpoolTypeGuid = spool.SpoolTypeGuid;
+ cloned.RmlsSpools.Add(s);
+ }
+
context.Rmls.Add(cloned);
await context.SaveChangesAsync();
@@ -674,6 +731,11 @@ namespace Tango.MachineStudio.RML.ViewModels
ActiveRML.LastUpdated = DateTime.UtcNow;
+ if (_rmlBeforeSave.QualificationLevel != ActiveRML.QualificationLevel)
+ {
+ ActiveRML.QualificationDate = DateTime.UtcNow;
+ }
+
if (SelectedCCT != null)
{
if (SelectedCCT.IsNew)
@@ -698,17 +760,19 @@ namespace Tango.MachineStudio.RML.ViewModels
_actionLogManager.InsertLog(BL.Enumerations.ActionLogType.RmlSaved, _authentication.CurrentUser, _rmlBeforeSave.Name, _rmlBeforeSave, rmlAfter, "RML saved using Machine Studio.");
_rmlBeforeSave = rmlAfter;
+
+ LoadActiveRML(ActiveRML.Guid);
}
}
catch (Exception ex)
{
LogManager.Log(ex, $"Error saving RML {ActiveRML.Name}");
- _notification.ShowError($"An error occurred while trying to save the current RML.\n{ex.Message}");
+ _notification.ShowError($"An error occurred while trying to save the current RML.\n{ex.FlattenMessage()}");
+ }
+ finally
+ {
+ IsFree = true;
}
-
- LoadActiveRML(ActiveRML.Guid);
-
- IsFree = true;
}
private void BackToRmls()
@@ -894,5 +958,26 @@ namespace Tango.MachineStudio.RML.ViewModels
}
#endregion
+
+ #region Spools
+
+ private void AddNewSpool()
+ {
+ _active_context.RmlsSpools.Add(new RmlsSpool()
+ {
+ Rml = ActiveRML,
+ });
+ }
+
+ private void RemoveSpool()
+ {
+ if (SelectedSpool != null)
+ {
+ _active_context.RmlsSpools.Remove(SelectedSpool);
+ ActiveRML.RmlsSpools.Remove(SelectedSpool);
+ }
+ }
+
+ #endregion
}
}