diff options
| author | Victoria Plitt <Victoria.Plitt@twine-s.com> | 2019-09-18 12:07:19 +0300 |
|---|---|---|
| committer | Victoria Plitt <Victoria.Plitt@twine-s.com> | 2019-09-18 12:07:19 +0300 |
| commit | 439029c0228ec639013502d4094361f80f836c5d (patch) | |
| tree | 3e46b93913f61edb49c1b3a31e2caf9c910ce5f1 /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels | |
| parent | b674a2e7751daa80c0d74207968bf8e3d18d7faf (diff) | |
| download | Tango-439029c0228ec639013502d4094361f80f836c5d.tar.gz Tango-439029c0228ec639013502d4094361f80f836c5d.zip | |
Dropped dependencies of ColorLab module.
Implemented ColorConversion view and view model.
Refactored Machine Designer "Color Calibration" Tab.
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels')
2 files changed, 243 insertions, 14 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/ColorCalibrationViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/ColorCalibrationViewVM.cs new file mode 100644 index 000000000..b75fe7e03 --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/ColorCalibrationViewVM.cs @@ -0,0 +1,208 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.BL; +using Tango.BL.Builders; +using Tango.BL.Entities; +using Tango.MachineStudio.Common.Notifications; +using Tango.MachineStudio.RML.Models; +using Tango.MachineStudio.RML.ViewModels; +using Tango.PMR.ColorLab; +using Tango.Settings; +using Tango.SharedUI; + +namespace Tango.MachineStudio.MachineDesigner.ViewModels +{ + public class ColorCalibrationViewVM : ViewModel + { + private INotificationProvider _notification; + private ObservablesContext _dbContext; + + #region Properties + + private ColorConversionViewVM _colorConversionViewVM; + public ColorConversionViewVM ColorConversionViewVM + { + get { return _colorConversionViewVM; } + set { _colorConversionViewVM = value; RaisePropertyChangedAuto(); } + } + + private CalibrationDataViewVM _calibrationDataViewVM; + public CalibrationDataViewVM CalibrationDataViewVM + { + get { return _calibrationDataViewVM; } + set + { + _calibrationDataViewVM = value; + RaisePropertyChangedAuto(); + OnChangeCalibrationDataViewVM(); + } + } + + private ObservableCollection<LiquidTypesRml> _liquidTypesRmls; + public ObservableCollection<LiquidTypesRml> LiquidTypesRmls + { + get { return _liquidTypesRmls; } + set + { + _liquidTypesRmls = value; + RaisePropertyChangedAuto(); + } + } + + private ObservableCollection<Rml> _rmls; + /// <summary> + /// Gets or sets the RMLS. + /// </summary> + public ObservableCollection<Rml> Rmls + { + get { return _rmls; } + set { _rmls = value; RaisePropertyChangedAuto(); } + } + + private Rml _selectedRML; + /// <summary> + /// Gets or sets the selected RML. + /// </summary> + public Rml SelectedRML + { + get { return _selectedRML; } + set + { + _selectedRML = value; + RaisePropertyChangedAuto(); + OnChangeSelectedRML(); + } + } + + private Machine _machine; + public Machine Machine + { + get { return _machine; } + set { _machine = value; RaisePropertyChangedAuto(); } + } + + #endregion + + public ColorCalibrationViewVM(INotificationProvider notification, Machine machine, ObservablesContext context) + { + _notification = notification; + _machine = machine; + _dbContext = context; + } + + private void OnChangeCalibrationDataViewVM() + { + + } + + private void OnChangeSelectedRML() + { + Invalidate(); + } + + #region RML + + public async void Invalidate() + { + if (SelectedRML != null && Machine != null) + { + IsFree = false; + + await Task.Factory.StartNew(() => + { + using (_notification.PushTaskItem("Loading RML data...")) + { + _selectedRML = new RmlBuilder(_dbContext) + .Set(_selectedRML.Guid) + .WithActiveParametersGroup() + .WithCAT(Machine.Guid) + .WithCCT() + .WithLiquidFactors().Build(); + + LiquidTypesRmls = SelectedRML.LiquidTypesRmls; + } + }); + + InvalidateCalibrationDataAndColorConversion(); + + IsFree = true; + } + } + + public void InvalidateCalibrationDataAndColorConversion() + { + if (SelectedRML != null) + { + var liquidsCalibrationData = new ObservableCollection<CalibrationDataVM>(); + CalibrationDataViewVM = new CalibrationDataViewVM(_notification, liquidsCalibrationData); + liquidsCalibrationData.EnableCrossThreadOperations(); + + foreach (var liquidTypeRml in SelectedRML.LiquidTypesRmls) + { + var idsPack = Machine.Configuration.GetSupportedIdsPacks(_selectedRML).FirstOrDefault(x => x.LiquidType == liquidTypeRml.LiquidType); + + if (idsPack != null) + { + CalibrationDataVM vm = new CalibrationDataVM(idsPack); + + var cat = idsPack.LiquidType.Cats.FirstOrDefault(x => x.Machine == Machine && x.Rml == SelectedRML); + + if (cat != null) + { + var calData = cat.GetCalibrationData(); + vm.CalibrationPoints = calData.CalibrationPoints.Select(x => new CalibrationDataPointVM(x)).ToObservableCollection(); + } + + liquidsCalibrationData.Add(vm); + } + } + + ColorConversionViewVM = new ColorConversionViewVM(_notification) + { + RML = SelectedRML, + CCT = new CctModel() + { + Data = SelectedRML.Cct?.Data, + }, + LiquidsCalibrationData = CalibrationDataViewVM.LiquidsCalibrationData, + LiquidTypesRmls = LiquidTypesRmls, + }; + } + } + + #endregion + + #region Save + + public void Save() + { + foreach (var calDataVM in ColorConversionViewVM.LiquidsCalibrationData) + { + var cat = calDataVM.IdsPack.LiquidType.Cats.FirstOrDefault(x => x.Machine == Machine && x.Rml == SelectedRML); + + if (cat == null) + { + cat = new Cat(); + cat.Name = "untitled"; + _dbContext.Cats.Add(cat); + } + + cat.Rml = SelectedRML; + cat.Machine = Machine; + cat.LiquidType = calDataVM.IdsPack.LiquidType; + + CalibrationData calData = new CalibrationData(); + calData.LiquidType = (PMR.ColorLab.LiquidType)cat.LiquidType.Code; + calData.CalibrationPoints.AddRange(calDataVM.CalibrationPoints.Select(x => new CalibrationPoint() { X = x.X, Y = x.Y })); + + cat.PutCalibrationData(calData); + } + } + + #endregion + } +} 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 935cfe5ee..eaca7cd6a 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 @@ -22,6 +22,9 @@ using Tango.BL.Builders; using Tango.MachineStudio.MachineDesigner.Contracts; using System.Windows.Threading; using Tango.Core.Threading; +using Tango.MachineStudio.RML.ViewModels; +using Tango.Settings; +using Tango.MachineStudio.RML.Models; namespace Tango.MachineStudio.MachineDesigner.ViewModels { @@ -112,11 +115,11 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels set { _selectedSpool = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); } } - private ColorLab.ViewModels.MainViewVM _colorLabVM; - public ColorLab.ViewModels.MainViewVM ColorLabVM + private ColorCalibrationViewVM _colorCalibrationViewVM; + public ColorCalibrationViewVM ColorCalibrationViewVM { - get { return _colorLabVM; } - set { _colorLabVM = value; RaisePropertyChangedAuto(); } + get { return _colorCalibrationViewVM; } + set { _colorCalibrationViewVM = value; RaisePropertyChangedAuto(); } } #endregion @@ -210,7 +213,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels public override async void OnApplicationReady() { MachinesAdapter.MachineVersions = (await MachinesAdapter.Context.MachineVersions.ToListAsync()).ToObservableCollection(); - ColorLabVM = new ColorLab.ViewModels.MainViewVM(_notification) { IsHosted = true }; + } #endregion @@ -239,7 +242,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels public void DropIdsPack(IdsPack idsPack1, IdsPack idsPack2) { ActiveMachine.Configuration.IdsPacks.Swap(idsPack1, idsPack2); - ColorLabVM.InvalidateLiquidFactorsCalibrationData(); + ColorCalibrationViewVM.InvalidateCalibrationDataAndColorConversion(); } /// <summary> @@ -334,7 +337,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels { idsPack.LiquidType = liquidType; idsPack.LiquidTypeGuid = liquidType.Guid; - ColorLabVM.InvalidateLiquidFactorsCalibrationData(); + ColorCalibrationViewVM.InvalidateCalibrationDataAndColorConversion(); } /// <summary> @@ -360,7 +363,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels { ActiveMachineAdapter.Context.IdsPacks.Remove(SelectedIds); SelectedIds = null; - ColorLabVM.InvalidateLiquidFactorsCalibrationData(); + ColorCalibrationViewVM.InvalidateCalibrationDataAndColorConversion(); } /// <summary> @@ -432,7 +435,12 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels } } - ColorLabVM.InitHost(ActiveMachineAdapter.Context, ActiveMachine, ActiveMachineAdapter.Rmls, ActiveMachineAdapter.Rmls.FirstOrDefault()); + ColorCalibrationViewVM = new ColorCalibrationViewVM(_notification, ActiveMachine, _activeMachineAdapter.Context) + { + Rmls = ActiveMachineAdapter.Rmls, + LiquidTypesRmls = ActiveMachineAdapter.Rmls.FirstOrDefault().LiquidTypesRmls, + SelectedRML = ActiveMachineAdapter.Rmls.FirstOrDefault(), + }; View.NavigateTo(MachineDesignerNavigationView.MachineDetailsView); } @@ -574,14 +582,17 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels ActiveMachine.ConfigurationGuid = ActiveMachine.Configuration.Guid; ActiveMachine.LastUpdated = DateTime.UtcNow; ActiveMachine.ProductionDate = DateTime.UtcNow; - await ActiveMachineAdapter.Context.SaveChangesAsync(); - await ColorLabVM.SaveChanges(); + ColorCalibrationViewVM.Save(); + + await ActiveMachineAdapter.Context.SaveChangesAsync(); if (SelectedMachine != null) { await SelectedMachine.Reload(MachinesAdapter.Context); } + + ColorCalibrationViewVM.Invalidate(); } } catch (Exception ex) @@ -669,9 +680,19 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels { Task.Factory.StartNew(() => { - IsFree = false; - MachinesAdapter.Machines = MachinesAdapter.Context.Machines.Where(x => x.SerialNumber.StartsWith(Filter)).Include(x => x.Organization).Include(x => x.MachineVersion).ToSynchronizedObservableCollection(); - IsFree = true; + try + { + IsFree = false; + MachinesAdapter.Machines = MachinesAdapter.Context.Machines.Where(x => x.SerialNumber.StartsWith(Filter)).Include(x => x.Organization).Include(x => x.MachineVersion).ToSynchronizedObservableCollection(); + } + catch + { + + } + finally + { + IsFree = true; + } }); }); } |
