diff options
| author | Victoria Plitt <Victoria.Plitt@twine-s.com> | 2022-01-13 14:40:35 +0200 |
|---|---|---|
| committer | Victoria Plitt <Victoria.Plitt@twine-s.com> | 2022-01-13 14:40:35 +0200 |
| commit | 85597e05c8e3d5bd8662e89885b6fec27cbf0fc7 (patch) | |
| tree | 2030b4421c8d7be68107fd4cbdea991d745753b6 /Software/Visual_Studio/MachineStudio | |
| parent | ea64974107129b33a1e739ffadf2e8f939cb48ac (diff) | |
| download | Tango-85597e05c8e3d5bd8662e89885b6fec27cbf0fc7.tar.gz Tango-85597e05c8e3d5bd8662e89885b6fec27cbf0fc7.zip | |
#5821 Save all changes in DB and loading data.
Diffstat (limited to 'Software/Visual_Studio/MachineStudio')
7 files changed, 349 insertions, 238 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/Models/CalibrationPlotModel.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/Models/CalibrationPlotModel.cs index d6a7212c0..0f844097d 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/Models/CalibrationPlotModel.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/Models/CalibrationPlotModel.cs @@ -157,18 +157,14 @@ namespace Tango.MachineStudio.ThreadExtensions.Models public void InitDataGraph(List<ColorLinearizationModel.LinearizationDataItem> items) { - if (DataPlotControl == null) - { - Debug.WriteLine("ERROR!!! CreateGraph. Plot Control is NULL."); - return; - } - if (items == null || items.Count == 0) return; ClearResults(); - DataPlotControl.InvalidatePlot(true); - LinearizationPlotControl.InvalidatePlot(true); + if (DataPlotControl != null) + DataPlotControl.InvalidatePlot(true); + if (LinearizationPlotControl != null) + LinearizationPlotControl.InvalidatePlot(true); foreach (var labItem in items) { @@ -181,16 +177,17 @@ namespace Tango.MachineStudio.ThreadExtensions.Models MinY = Math.Min(0, items.Min(x => Math.Min(x.L, Math.Min(x.A, x.B)))); MaxY = Math.Max( 100, items.Max(x => Math.Max(x.L, Math.Max(x.A, x.B)))); - - DataPlotControl.InvalidatePlot(true); + + if (DataPlotControl != null) + DataPlotControl.InvalidatePlot(true); } public void InitLinearizationGraph(List<ColorLinearizationModel.LinearizationDataItem> items, List<double> outputPoints) { - if (outputPoints == null) return; + LinearizationPoints.Clear(); foreach (var nw in items.Zip(outputPoints, Tuple.Create)) { LinearizationPoints.Add(new DataPoint(nw.Item1.InkPercentage, nw.Item2)); @@ -199,7 +196,10 @@ namespace Tango.MachineStudio.ThreadExtensions.Models LinearizationMaxX = Math.Max(100, LinearizationPoints.Max(x => x.X)); LinearizationMaxY = Math.Max(100, LinearizationPoints.Max(x => x.Y)); - LinearizationPlotControl.InvalidatePlot(true); + if (LinearizationPlotControl != null) + { + LinearizationPlotControl.InvalidatePlot(true); + } } } } diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/Models/ColorLinearizationModel.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/Models/ColorLinearizationModel.cs index 39774f7d8..148f0f416 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/Models/ColorLinearizationModel.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/Models/ColorLinearizationModel.cs @@ -37,7 +37,6 @@ namespace Tango.MachineStudio.ThreadExtensions.Models { errors = ex.Message; } - } } } diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/ViewModels/ColorCalibrationTabVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/ViewModels/ColorCalibrationTabVM.cs index 103052b52..eed8d41d4 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/ViewModels/ColorCalibrationTabVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/ViewModels/ColorCalibrationTabVM.cs @@ -12,6 +12,8 @@ using Tango.MachineStudio.Common.Notifications; using Tango.PMR.ColorLab; using Tango.ColorCalibration; using Tango.BL.ActionLogs; +using Tango.BL.Entities; +using Tango.Core; namespace Tango.MachineStudio.ThreadExtensions.ViewModels { @@ -20,7 +22,8 @@ namespace Tango.MachineStudio.ThreadExtensions.ViewModels private INotificationProvider _notification; private IActionLogManager _actionLogManager; private ILinearizationMeasurements _linearizationMeasurementscalibrator; - + private List<BL.Entities.LiquidType> _liquids; + #region Properties private string _name; @@ -33,6 +36,8 @@ namespace Tango.MachineStudio.ThreadExtensions.ViewModels set { _name = value; + if(RmlExtensionColorCalibrationsTest != null) + RmlExtensionColorCalibrationsTest.Name = _name; RaisePropertyChangedAuto(); } } @@ -42,7 +47,9 @@ namespace Tango.MachineStudio.ThreadExtensions.ViewModels public int TabIndex { get { return _tabIndex; } - set { _tabIndex = value; } + set { _tabIndex = value; + RaisePropertyChangedAuto(); + } } @@ -55,75 +62,43 @@ namespace Tango.MachineStudio.ThreadExtensions.ViewModels get { return _isSelected; } set { _isSelected = value; RaisePropertyChangedAuto(); } } + + public CalibrationPlotModel CyanPlot { get; set; } + + public CalibrationPlotModel MagentaPlot { get; set; } + + public CalibrationPlotModel YellowPlot { get; set; } + + public CalibrationPlotModel BlackPlot { get; set; } + + public CalibrationDataVM CyanCalibrationData { get; set; } + + public CalibrationDataVM MagentaCalibrationData { get; set; } + + public CalibrationDataVM YellowCalibrationData { get; set; } + + public CalibrationDataVM BlackCalibrationData { get; set; } + + private RmlExtensionColorCalibrationsTest _rmlExtensionColorCalibrationsTest; - private CalibrationPlotModel _cyanPlot; - - public CalibrationPlotModel CyanPlot + public RmlExtensionColorCalibrationsTest RmlExtensionColorCalibrationsTest { - get { return _cyanPlot; } - set - { - _cyanPlot = value; - RaisePropertyChangedAuto(); + get { return _rmlExtensionColorCalibrationsTest; } + set { _rmlExtensionColorCalibrationsTest = value; + OnRmlExtensionColorCalibrationsTestChanged(); } } - private CalibrationPlotModel _magentaPlot; - - public CalibrationPlotModel MagentaPlot - { - get { return _magentaPlot; } - set { _magentaPlot = value; } - } - - private CalibrationPlotModel _yellowPlot; - - public CalibrationPlotModel YellowPlot - { - get { return _yellowPlot; } - set { _yellowPlot = value; } - } - - private CalibrationPlotModel _blackPlot; - - public CalibrationPlotModel BlackPlot - { - get { return _blackPlot; } - set { _blackPlot = value; } - } - - private CalibrationDataVM _cyanCalibrationData; - - public CalibrationDataVM CyanCalibrationData - { - get { return _cyanCalibrationData; } - set { _cyanCalibrationData = value; } - } - - private CalibrationDataVM _magentaCalibrationData; - - public CalibrationDataVM MagentaCalibrationData - { - get { return _magentaCalibrationData; } - set { _magentaCalibrationData = value; } - } - - private CalibrationDataVM _yellowCalibrationData; - - public CalibrationDataVM YellowCalibrationData - { - get { return _yellowCalibrationData; } - set { _yellowCalibrationData = value; } - } - - private CalibrationDataVM _blackCalibrationData; - - public CalibrationDataVM BlackCalibrationData - { - get { return _blackCalibrationData; } - set { _blackCalibrationData = value; RaisePropertyChangedAuto(); } - } - + /// <summary> + /// Gets or sets last points before save. Used in Save to remove points before save new. + /// </summary> + /// <value> + /// The removed points. + /// </value> + public Dictionary<LiquidTypes, List<RmlExtensionColorCalibrationsTestsLiquidDataPoint>> RemovedPoints { get; set; } + + public bool IsTabLoaded { get; set; } + #endregion @@ -136,11 +111,14 @@ namespace Tango.MachineStudio.ThreadExtensions.ViewModels #endregion - public ColorCalibrationTabVM(INotificationProvider notification, IActionLogManager actionLogManager) + public ColorCalibrationTabVM(INotificationProvider notification, IActionLogManager actionLogManager, List<BL.Entities.LiquidType> liquids) { _notification = notification; _actionLogManager = actionLogManager; _linearizationMeasurementscalibrator = new DefaultColorCalibrator(); + _liquids = liquids; + RemovedPoints = new Dictionary<LiquidTypes, List<RmlExtensionColorCalibrationsTestsLiquidDataPoint>>(); + IsTabLoaded = false; CyanPlot = new CalibrationPlotModel(FactorColors.CYAN, "Cyan"); YellowPlot = new CalibrationPlotModel(FactorColors.YELLOW, "Yellow"); @@ -156,105 +134,92 @@ namespace Tango.MachineStudio.ThreadExtensions.ViewModels ImportMagentaDataCommand = new RelayCommand(ImportMagentaData); ImportYellowDataCommand = new RelayCommand(ImportYellowData); ImportBlackDataCommand = new RelayCommand(ImportBlackData); + } #region Methods - private async void ImportCyanData(object obj) + private void ImportCyanData(object obj) { - List<ColorLinearizationModel.LinearizationDataItem> items; if (ImportDataFromFile(out items) && items.Count > 0) { - CyanPlot.InitDataGraph(items); - - List<double> outputPoints = new List<double>(); - - await Task.Factory.StartNew(() => + CreatePlots(PMR.ColorLab.LiquidType.Cyan, CyanPlot, items, CyanCalibrationData); + SynchronizedObservableCollection<RmlExtensionColorCalibrationsTestsLiquidData> data = RmlExtensionColorCalibrationsTest.RmlExtensionColorCalibrationsTestsLiquidData; + var liquidtype = _liquids.Where(l => l.Type == LiquidTypes.Cyan).FirstOrDefault(); + var cyanliquidData = RmlExtensionColorCalibrationsTest.RmlExtensionColorCalibrationsTestsLiquidData.Where(x => x.LiquidTypeGuid == liquidtype.Guid).FirstOrDefault(); + if(cyanliquidData != null) { - outputPoints = GetLinearizationMeasurements(items, PMR.ColorLab.LiquidType.Cyan); - }); - - CyanPlot.InitLinearizationGraph(items, outputPoints); - CyanCalibrationData.CalibrationPoints.Clear(); - var index = 1; - foreach (var nw in items.Zip(outputPoints, Tuple.Create)) - { - CyanCalibrationData.CalibrationPoints.Add(new CalibrationDataPointVM() { Index = index++, X = nw.Item1.InkPercentage, Y = nw.Item2 }); + if(!RemovedPoints.ContainsKey(LiquidTypes.Cyan)) + { + RemovedPoints[LiquidTypes.Cyan] = new List<RmlExtensionColorCalibrationsTestsLiquidDataPoint>(cyanliquidData.RmlExtensionColorCalibrationsTestsLiquidDataPoints.ToList()); + } + cyanliquidData.RmlExtensionColorCalibrationsTestsLiquidDataPoints.Clear(); + items.ForEach(x => cyanliquidData.RmlExtensionColorCalibrationsTestsLiquidDataPoints.Add(new RmlExtensionColorCalibrationsTestsLiquidDataPoint() { Ink = x.InkPercentage, L = x.L, A = x.A, B = x.B })); } } } - private async void ImportMagentaData(object obj) + private void ImportMagentaData(object obj) { - List<ColorLinearizationModel.LinearizationDataItem> items; if (ImportDataFromFile(out items) && items.Count > 0) { - MagentaPlot.InitDataGraph(items); - - List<double> outputPoints = new List<double>(); - - await Task.Factory.StartNew(() => + CreatePlots(PMR.ColorLab.LiquidType.Magenta, MagentaPlot, items, MagentaCalibrationData); + SynchronizedObservableCollection<RmlExtensionColorCalibrationsTestsLiquidData> data = RmlExtensionColorCalibrationsTest.RmlExtensionColorCalibrationsTestsLiquidData; + var liquidtype = _liquids.Where(l => l.Type == LiquidTypes.Magenta).FirstOrDefault(); + var magentaliquidData = RmlExtensionColorCalibrationsTest.RmlExtensionColorCalibrationsTestsLiquidData.Where(x => x.LiquidTypeGuid == liquidtype.Guid).FirstOrDefault(); + if (magentaliquidData != null) { - outputPoints = GetLinearizationMeasurements(items, PMR.ColorLab.LiquidType.Magenta); - }); - - MagentaPlot.InitLinearizationGraph(items, outputPoints); - MagentaCalibrationData.CalibrationPoints.Clear(); - var index = 1; - foreach (var nw in items.Zip(outputPoints, Tuple.Create)) - { - MagentaCalibrationData.CalibrationPoints.Add(new CalibrationDataPointVM() { Index = index++, X = nw.Item1.InkPercentage, Y = nw.Item2}); - } + if (!RemovedPoints.ContainsKey(LiquidTypes.Magenta)) + { + RemovedPoints[LiquidTypes.Magenta] = new List<RmlExtensionColorCalibrationsTestsLiquidDataPoint>(magentaliquidData.RmlExtensionColorCalibrationsTestsLiquidDataPoints.ToList()); + } + magentaliquidData.RmlExtensionColorCalibrationsTestsLiquidDataPoints.Clear(); + items.ForEach(x => magentaliquidData.RmlExtensionColorCalibrationsTestsLiquidDataPoints.Add(new RmlExtensionColorCalibrationsTestsLiquidDataPoint() { Ink = x.InkPercentage, L = x.L, A = x.A, B = x.B })); + } } } - private async void ImportYellowData(object obj) + private void ImportYellowData(object obj) { - List<ColorLinearizationModel.LinearizationDataItem> items; if (ImportDataFromFile(out items) && items.Count > 0) { - YellowPlot.InitDataGraph(items); - - List<double> outputPoints = new List<double>(); - - await Task.Factory.StartNew(() => + CreatePlots(PMR.ColorLab.LiquidType.Yellow, YellowPlot, items, YellowCalibrationData); + SynchronizedObservableCollection<RmlExtensionColorCalibrationsTestsLiquidData> data = RmlExtensionColorCalibrationsTest.RmlExtensionColorCalibrationsTestsLiquidData; + var liquidtype = _liquids.Where(l => l.Type == LiquidTypes.Yellow).FirstOrDefault(); + var yellowliquidData = RmlExtensionColorCalibrationsTest.RmlExtensionColorCalibrationsTestsLiquidData.Where(x => x.LiquidTypeGuid == liquidtype.Guid).FirstOrDefault(); + if (yellowliquidData != null) { - outputPoints = GetLinearizationMeasurements(items, PMR.ColorLab.LiquidType.Yellow); - }); - YellowPlot.InitLinearizationGraph(items, outputPoints); - YellowCalibrationData.CalibrationPoints.Clear(); - var index = 1; - foreach (var nw in items.Zip(outputPoints, Tuple.Create)) - { - YellowCalibrationData.CalibrationPoints.Add(new CalibrationDataPointVM() { Index = index++, X = nw.Item1.InkPercentage, Y = nw.Item2 }); + if (!RemovedPoints.ContainsKey(LiquidTypes.Yellow)) + { + RemovedPoints[LiquidTypes.Yellow] = new List<RmlExtensionColorCalibrationsTestsLiquidDataPoint>(yellowliquidData.RmlExtensionColorCalibrationsTestsLiquidDataPoints.ToList()); + } + yellowliquidData.RmlExtensionColorCalibrationsTestsLiquidDataPoints.Clear(); + items.ForEach(x => yellowliquidData.RmlExtensionColorCalibrationsTestsLiquidDataPoints.Add(new RmlExtensionColorCalibrationsTestsLiquidDataPoint() { Ink = x.InkPercentage, L = x.L, A = x.A, B = x.B })); } } } - - - private async void ImportBlackData(object obj) + + private void ImportBlackData(object obj) { List<ColorLinearizationModel.LinearizationDataItem> items; if (ImportDataFromFile(out items) && items.Count > 0) { - BlackPlot.InitDataGraph(items); - - List<double> outputPoints = new List<double>(); - - await Task.Factory.StartNew(() => + CreatePlots(PMR.ColorLab.LiquidType.Black, BlackPlot, items, BlackCalibrationData); + SynchronizedObservableCollection<RmlExtensionColorCalibrationsTestsLiquidData> data = RmlExtensionColorCalibrationsTest.RmlExtensionColorCalibrationsTestsLiquidData; + var liquidtype = _liquids.Where(l => l.Type == LiquidTypes.Black).FirstOrDefault(); + var blackliquidData = RmlExtensionColorCalibrationsTest.RmlExtensionColorCalibrationsTestsLiquidData.Where(x => x.LiquidTypeGuid == liquidtype.Guid).FirstOrDefault(); + if (blackliquidData != null) { - outputPoints = GetLinearizationMeasurements(items, PMR.ColorLab.LiquidType.Black); - }); - BlackPlot.InitLinearizationGraph(items, outputPoints); - BlackCalibrationData.CalibrationPoints.Clear(); - var index = 1; - foreach (var nw in items.Zip(outputPoints, Tuple.Create)) - { - BlackCalibrationData.CalibrationPoints.Add(new CalibrationDataPointVM() { Index = index++, X = nw.Item1.InkPercentage, Y = nw.Item2 }); + if (!RemovedPoints.ContainsKey(LiquidTypes.Black)) + { + RemovedPoints[LiquidTypes.Black] = new List<RmlExtensionColorCalibrationsTestsLiquidDataPoint>(blackliquidData.RmlExtensionColorCalibrationsTestsLiquidDataPoints.ToList()); + } + blackliquidData.RmlExtensionColorCalibrationsTestsLiquidDataPoints.Clear(); + items.ForEach(x => blackliquidData.RmlExtensionColorCalibrationsTestsLiquidDataPoints.Add(new RmlExtensionColorCalibrationsTestsLiquidDataPoint() { Ink = x.InkPercentage, L = x.L, A = x.A, B = x.B })); } } @@ -286,6 +251,93 @@ namespace Tango.MachineStudio.ThreadExtensions.ViewModels return false; } + public void InitData() + { + if(RmlExtensionColorCalibrationsTest != null) + { + SynchronizedObservableCollection<RmlExtensionColorCalibrationsTestsLiquidData> data = RmlExtensionColorCalibrationsTest.RmlExtensionColorCalibrationsTestsLiquidData; + foreach( var liquidData in data) + { + var liquidType = liquidData.LiquidType; + var points = liquidData.RmlExtensionColorCalibrationsTestsLiquidDataPoints.OrderBy(y => y.Ink).ToList(); ; + if (points.Count > 0) + { + List<ColorLinearizationModel.LinearizationDataItem> items = new List<ColorLinearizationModel.LinearizationDataItem>(); + points.ForEach(x => items.Add(new ColorLinearizationModel.LinearizationDataItem() { InkPercentage = x.Ink, L = x.L, A = x.A, B = x.B })); + items.OrderBy(y => y.InkPercentage).ToList(); + CreatePlots(ConvertLiquidTypeToPMR(liquidType), GetPlot(liquidType), items, GetCalibrationDataVM(liquidType)); + } + } + } + } + + private CalibrationPlotModel GetPlot(BL.Entities.LiquidType liquidType) + { + switch(liquidType.Type) + { + case LiquidTypes.Cyan: + return CyanPlot; + case LiquidTypes.Magenta: + return MagentaPlot; + case LiquidTypes.Yellow: + return YellowPlot; + case LiquidTypes.Black: + return BlackPlot; + default: + return null; + } + } + private CalibrationDataVM GetCalibrationDataVM(BL.Entities.LiquidType liquidType) + { + switch (liquidType.Type) + { + case LiquidTypes.Cyan: + return CyanCalibrationData; + case LiquidTypes.Magenta: + return MagentaCalibrationData; + case LiquidTypes.Yellow: + return YellowCalibrationData; + case LiquidTypes.Black: + return BlackCalibrationData; + default: + return null; + } + } + private PMR.ColorLab.LiquidType ConvertLiquidTypeToPMR(BL.Entities.LiquidType liquidType) + { + if (liquidType.Type == LiquidTypes.Cyan) + return PMR.ColorLab.LiquidType.Cyan; + if (liquidType.Type == LiquidTypes.Yellow) + return PMR.ColorLab.LiquidType.Yellow; + if (liquidType.Type == LiquidTypes.Magenta) + return PMR.ColorLab.LiquidType.Magenta; + return PMR.ColorLab.LiquidType.Black; + } + + private async void CreatePlots(PMR.ColorLab.LiquidType liquidtype, CalibrationPlotModel plot, List<ColorLinearizationModel.LinearizationDataItem> items, CalibrationDataVM calibrationTable) + { + plot.InitDataGraph(items); + + List<double> outputPoints = new List<double>(); + + await Task.Factory.StartNew(() => + { + outputPoints = GetLinearizationMeasurements(items, liquidtype); + }); + + plot.InitLinearizationGraph(items, outputPoints); + calibrationTable.CalibrationPoints.Clear(); + var index = 1; + foreach (var nw in items.Zip(outputPoints, Tuple.Create)) + { + calibrationTable.CalibrationPoints.Add(new CalibrationDataPointVM() { Index = index++, X = nw.Item1.InkPercentage, Y = nw.Item2 }); + } + } + + private void OnRmlExtensionColorCalibrationsTestChanged() + { + + } #endregion #region CreateLinearizationGraph diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/ViewModels/ColorCalibrationViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/ViewModels/ColorCalibrationViewVM.cs index 99bb896d7..fc15c8caf 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/ViewModels/ColorCalibrationViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/ViewModels/ColorCalibrationViewVM.cs @@ -31,6 +31,7 @@ namespace Tango.MachineStudio.ThreadExtensions.ViewModels private IActionLogManager _actionLogManager; private ObservablesContext _active_context; + private List<BL.Entities.LiquidType> _liquids; public event EventHandler SaveColorCalibration; @@ -69,7 +70,7 @@ namespace Tango.MachineStudio.ThreadExtensions.ViewModels private string _RMLExtentionGUID; - public string RMLExtemtionGUID + public string RMLExtentionGUID { get { return _RMLExtentionGUID; } set @@ -130,6 +131,22 @@ namespace Tango.MachineStudio.ThreadExtensions.ViewModels } } + private RmlExtensionColorCalibration _rmlExtensionColorCalibration; + + public RmlExtensionColorCalibration RmlExtensionColorCalibration + { + get { return _rmlExtensionColorCalibration; } + set { _rmlExtensionColorCalibration = value; } + } + + //private ObservableCollection<RmlExtensionColorCalibrationsTest> _rmlExtensionColorCalibrationsTests; + + //public ObservableCollection<RmlExtensionColorCalibrationsTest> RmlExtensionColorCalibrationsTests + //{ + // get { return _rmlExtensionColorCalibrationsTests; } + // set { _rmlExtensionColorCalibrationsTests = value; } + //} + #endregion @@ -164,9 +181,7 @@ namespace Tango.MachineStudio.ThreadExtensions.ViewModels CreateColorDataImportExcelTemplateCommand = new RelayCommand(CreateColorDataImportExcelTemplate); } - - #region Methods private void OnRMLExtensionGUIDChanged() @@ -175,6 +190,7 @@ namespace Tango.MachineStudio.ThreadExtensions.ViewModels private void SelectedMachineChanged() { + SelectedTab = null; LoadColorCalibrations(); } @@ -293,46 +309,90 @@ namespace Tango.MachineStudio.ThreadExtensions.ViewModels IsFree = false; return; } - IsFree = false; - if (_active_context != null) + try { - _active_context.Dispose(); - } + IsFree = false; + if (_active_context != null) + { + _active_context.Dispose(); + } - _active_context = ObservablesContext.CreateDefault(); + _active_context = ObservablesContext.CreateDefault(); + if (_liquids == null) + { + _liquids = _active_context.LiquidTypes.ToList(); + } + CalibrationTabs.Clear(); + LogManager.Log("Loading color calibration tests ..."); - await Task.Factory.StartNew(() => - { using (_notification.PushTaskItem("Loading Color Calibrations Tests ...")) { + var testResults = await new RMLExtensionColorCalibrationBuilder(_active_context).SetAll().ForRMLExtension(RMLExtentionGUID).ForMachine(Machine.Guid).WithTests().BuildAsync(); + RmlExtensionColorCalibration = testResults.OrderBy(x => x.ID).ToList().FirstOrDefault(); + if (RmlExtensionColorCalibration == null) + { + RmlExtensionColorCalibration = new RmlExtensionColorCalibration() { RmlsExtensionsGuid = RMLExtentionGUID, MachineGuid = Machine.Guid }; + _active_context.RmlExtensionColorCalibrations.Add(RmlExtensionColorCalibration); + _active_context.SaveChanges(); + } + + foreach (var test in RmlExtensionColorCalibration.RmlExtensionColorCalibrationsTests) + { + CalibrationTabs.Add(new ColorCalibrationTabVM(_notification, _actionLogManager, _liquids) { RmlExtensionColorCalibrationsTest = test, Name = test.Name }); + if (CalibrationTabs.Count == 1) + SelectedTab = CalibrationTabs[0]; + } + if (CalibrationTabs.Count == 0) + { + SelectedTab = CreateNewColorCalibrationTabVM("Untitled", 1); + CalibrationTabs.Add(SelectedTab); + _active_context.SaveChanges(); + } + if (IsViewLoaded) + { + CalibrationTabs.ToList().ForEach(x => x.InitData()); + } } - }); - if (CalibrationTabs.Count == 0) + } + catch (Exception ex) { - SelectedTab = CreateNewColorCalibrationTabVM("Untitled", 1); - CalibrationTabs.Add(SelectedTab); - //_active_context.RmlExtensionCalibrationTests.Add(SelectedTab.TestResult); - // await _active_context.SaveChangesAsync(); + LogManager.Log(ex, $"Error loading Color Calibration tests.\n{ex.FlattenMessage()}"); } - //LoadColorCalibarions(); - IsFree = true; - } - - public void UpdatePlots() - { - if (IsViewLoaded) + finally { - //CyanPlot.CreateGraph(CyanProcessData.ToList(), true); - //MagentaPlot.CreateGraph(MagentaProcessData.ToList(), true); - //YellowPlot.CreateGraph(YellowProcessData.ToList(), false); - //BlackPlot.CreateGraph(BlackProcessData.ToList(), true); + IsFree = true; } } - + private ColorCalibrationTabVM CreateNewColorCalibrationTabVM(string name, int index) { - ColorCalibrationTabVM newtab = new ColorCalibrationTabVM(_notification, _actionLogManager) { Name = name , TabIndex = index}; - + ColorCalibrationTabVM newtab = new ColorCalibrationTabVM(_notification, _actionLogManager, _liquids) { Name = name, TabIndex = index }; + + newtab.RmlExtensionColorCalibrationsTest = new RmlExtensionColorCalibrationsTest() + { + RmlExtensionColorCalibrationGuid = RMLExtentionGUID, + Name = name + }; + var liquidDataCollection = new SynchronizedObservableCollection<RmlExtensionColorCalibrationsTestsLiquidData>(); + var liquidtype = _liquids.Where(l => l.Type == LiquidTypes.Cyan).FirstOrDefault(); + var l_guid = liquidtype.Guid; + liquidDataCollection.Add(new RmlExtensionColorCalibrationsTestsLiquidData() { RmlExtensionColorCalibrationsTestGuid = newtab.RmlExtensionColorCalibrationsTest.Guid, LiquidTypeGuid = l_guid }); + liquidtype = _liquids.Where(l => l.Type == LiquidTypes.Magenta).FirstOrDefault(); + l_guid = liquidtype.Guid; + liquidDataCollection.Add(new RmlExtensionColorCalibrationsTestsLiquidData() { RmlExtensionColorCalibrationsTestGuid = newtab.RmlExtensionColorCalibrationsTest.Guid, LiquidTypeGuid = l_guid}); + liquidtype = _liquids.Where(l => l.Type == LiquidTypes.Yellow).FirstOrDefault(); + l_guid = liquidtype.Guid; + liquidDataCollection.Add(new RmlExtensionColorCalibrationsTestsLiquidData() { RmlExtensionColorCalibrationsTestGuid = newtab.RmlExtensionColorCalibrationsTest.Guid, LiquidTypeGuid = l_guid }); + liquidtype = _liquids.Where(l => l.Type == LiquidTypes.Black).FirstOrDefault(); + l_guid = liquidtype.Guid; + liquidDataCollection.Add(new RmlExtensionColorCalibrationsTestsLiquidData() { RmlExtensionColorCalibrationsTestGuid = newtab.RmlExtensionColorCalibrationsTest.Guid, LiquidTypeGuid = l_guid }); + newtab.RmlExtensionColorCalibrationsTest.RmlExtensionColorCalibrationsTestsLiquidData = liquidDataCollection; + if(RmlExtensionColorCalibration != null) + { + RmlExtensionColorCalibration.RmlExtensionColorCalibrationsTests.Add(newtab.RmlExtensionColorCalibrationsTest); + // _active_context.RmlExtensionColorCalibrations.Add(RmlExtensionColorCalibration); + } + return newtab; } @@ -350,7 +410,16 @@ namespace Tango.MachineStudio.ThreadExtensions.ViewModels return; if (_notification.ShowQuestion("Are you sure you want to delete the selected tab?")) { - // _active_context.RmlExtensionTestResults.Remove(tab.TestResult); + foreach( var liquidData in tab.RmlExtensionColorCalibrationsTest.RmlExtensionColorCalibrationsTestsLiquidData) + { + + _active_context.RmlExtensionColorCalibrationsTestsLiquidDataPoints.RemoveRange(liquidData.RmlExtensionColorCalibrationsTestsLiquidDataPoints); + } + _active_context.RmlExtensionColorCalibrationsTestsLiquidData.RemoveRange(tab.RmlExtensionColorCalibrationsTest.RmlExtensionColorCalibrationsTestsLiquidData); + tab.RmlExtensionColorCalibrationsTest.RmlExtensionColorCalibrationsTestsLiquidData = null; + + RmlExtensionColorCalibration.RmlExtensionColorCalibrationsTests.Remove(tab.RmlExtensionColorCalibrationsTest); + _active_context.RmlExtensionColorCalibrationsTests.Remove(tab.RmlExtensionColorCalibrationsTest); CalibrationTabs.Remove(tab); SelectedTab = CalibrationTabs.LastOrDefault(); @@ -377,8 +446,8 @@ namespace Tango.MachineStudio.ThreadExtensions.ViewModels if (!String.IsNullOrWhiteSpace(name)) { var tab = CreateNewColorCalibrationTabVM(name, (CalibrationTabs.Count + 1)); + _active_context.SaveChanges(); CalibrationTabs.Add(tab); - //_active_context.RmlExtensionTestResults.Add(tab.TestResult); SelectedTab = tab; return true; } @@ -420,30 +489,24 @@ namespace Tango.MachineStudio.ThreadExtensions.ViewModels try { IsFree = false; + DateTime lastUpdated = DateTime.UtcNow; + RmlExtensionColorCalibration.LastUpdated = lastUpdated; - //SelectedColorProcessParameter.LastUpdated = DateTime.UtcNow; - - //foreach (var item in RemovedColorProcessDataBeforeSave) - //{ - // var existingColorProcessData = await _active_context.ColorProcessData.FirstOrDefaultAsync(y => y.Guid == item); - // if (existingColorProcessData != null) - // { - // _active_context.ColorProcessData.Remove(existingColorProcessData); - // } - //} - //foreach (var colordata in SelectedColorProcessParameter.ColorProcessData) - //{ - // colordata.LastUpdated = DateTime.UtcNow; - //} - //foreach (var factordata in SelectedColorProcessParameter.ColorProcessFactors) - //{ - // factordata.LastUpdated = DateTime.UtcNow; - //} - //foreach (var inkdata in SelectedColorProcessParameter.ColorProcessInkUptake) - //{ - // inkdata.LastUpdated = DateTime.UtcNow; - //} - + foreach (var tab in CalibrationTabs) + { + tab.RmlExtensionColorCalibrationsTest.LastUpdated = lastUpdated; + var removedPoints = tab.RemovedPoints; + foreach (var liquidData in tab.RmlExtensionColorCalibrationsTest.RmlExtensionColorCalibrationsTestsLiquidData) + { + var liquidtype = _liquids.Where(l => l.Guid == liquidData.LiquidTypeGuid).FirstOrDefault(); + if (liquidtype != null && removedPoints.ContainsKey(liquidtype.Type)) + { + _active_context.RmlExtensionColorCalibrationsTestsLiquidDataPoints.RemoveRange(removedPoints[liquidtype.Type]); + } + liquidData.LastUpdated = lastUpdated; + } + tab.RemovedPoints.Clear(); + } await _active_context.SaveChangesAsync(); // LoadColorParameters(); diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/ViewModels/MainViewVM.cs index e8aafca9d..1cc6e1dcc 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/ViewModels/MainViewVM.cs @@ -1047,14 +1047,11 @@ namespace Tango.MachineStudio.ThreadExtensions.ViewModels TestResultsViewVM.ThreadName = ActiveRML.Manufacturer; ColorCalibrationViewVM = new ColorCalibrationViewVM(_notification, _actionLogManager); - ColorCalibrationViewVM.RMLExtemtionGUID = guid; + ColorCalibrationViewVM.RMLExtentionGUID = guid; ColorCalibrationViewVM.ActiveRML = ActiveRML; ColorCalibrationViewVM.RMLGUID = ActiveRML.Guid; ColorCalibrationViewVM.Machine = SelectedMachine; - - - if (ActiveRMLExtension.RMLStatus == RMLExtensionStatus.New) { ColorParametersVewVM.SaveColorParameters -= UpdateStatus; diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/Views/ColorCalibrationView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/Views/ColorCalibrationView.xaml index 278d58d02..407ad2e9f 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/Views/ColorCalibrationView.xaml +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/Views/ColorCalibrationView.xaml @@ -175,7 +175,7 @@ <RowDefinition Height="1*"/> </Grid.RowDefinitions> <StackPanel Orientation="Horizontal" Margin="35 0 0 0"> - <ListBox Style="{x:Null}" HorizontalAlignment="Left" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" ItemContainerStyle="{StaticResource basicListBoxItem}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled" Background="Transparent" BorderThickness="0" ItemsSource="{Binding CalibrationTabs}" SelectedItem="{Binding SelectedTab}"> + <ListBox Style="{x:Null}" HorizontalAlignment="Left" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" ItemContainerStyle="{StaticResource basicListBoxItem}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled" Background="Transparent" BorderThickness="0" ItemsSource="{Binding CalibrationTabs}" SelectedItem="{Binding SelectedTab}" SelectionChanged="ListBox_SelectionChanged"> <ListBox.ItemsPanel> <ItemsPanelTemplate> <StackPanel HorizontalAlignment="Left" Orientation="Horizontal"></StackPanel> diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/Views/ColorCalibrationView.xaml.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/Views/ColorCalibrationView.xaml.cs index 06bd67231..84219c093 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/Views/ColorCalibrationView.xaml.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/Views/ColorCalibrationView.xaml.cs @@ -26,30 +26,8 @@ namespace Tango.MachineStudio.ThreadExtensions.Views public ColorCalibrationView() { InitializeComponent(); - //this.Loaded += ColorCalibrationView_Loaded; } - - //private void ColorCalibrationView_Loaded(object sender, RoutedEventArgs e) - //{ - // if (contentGrid != null && contentGrid.DataContext is ColorCalibrationViewVM) - // { - // ColorCalibrationViewVM vm = (ColorCalibrationViewVM)contentGrid.DataContext; - // DataTemplate myDataTemplate = cyanChartsContent.ContentTemplate; - - - // vm.CyanPlot.DataPlotControl = (Plot)cyanChartsContent.ContentTemplate.FindName("LABDataPlot", cyanChartsContent); - // vm.CyanPlot.LinearizationPlotControl = (Plot)cyanChartsContent.ContentTemplate.FindName("LinearizationPlot", cyanChartsContent); - // vm.MagentaPlot.DataPlotControl = (Plot)magentaChartsContent.ContentTemplate.FindName("LABDataPlot", cyanChartsContent); - // vm.MagentaPlot.LinearizationPlotControl = (Plot)magentaChartsContent.ContentTemplate.FindName("LinearizationPlot", cyanChartsContent); - // vm.YellowPlot.DataPlotControl = (Plot)yellowChartsContent.ContentTemplate.FindName("LABDataPlot", cyanChartsContent); - // vm.YellowPlot.LinearizationPlotControl = (Plot)yellowChartsContent.ContentTemplate.FindName("LinearizationPlot", cyanChartsContent); - // vm.BlackPlot.DataPlotControl = (Plot)blackChartsContent.ContentTemplate.FindName("LABDataPlot", cyanChartsContent); - // vm.BlackPlot.LinearizationPlotControl = (Plot)blackChartsContent.ContentTemplate.FindName("LinearizationPlot", cyanChartsContent); - - // vm.IsViewLoaded = true; - // } - //} - + private void ContentGrid_Loaded(object sender, RoutedEventArgs e) { var grid = (UIElement)sender; @@ -57,21 +35,43 @@ namespace Tango.MachineStudio.ThreadExtensions.Views { ColorCalibrationViewVM vm = (ColorCalibrationViewVM)((UniformGrid)grid).DataContext; ColorCalibrationTabVM selectedTab = vm.SelectedTab; - // var Plot = (cyanChartsContent as FrameworkElement).FindChild<Plot>("LABDataPlot"); - if (selectedTab != null) + if (selectedTab != null && !selectedTab.IsTabLoaded) { - selectedTab.CyanPlot.DataPlotControl = (cyanChartsContent as FrameworkElement).FindChild<Plot>("LABDataPlot"); - selectedTab.CyanPlot.LinearizationPlotControl = (cyanChartsContent as FrameworkElement).FindChild<Plot>("LinearizationPlot"); - selectedTab.MagentaPlot.DataPlotControl = (magentaChartsContent as FrameworkElement).FindChild<Plot>("LABDataPlot"); - selectedTab.MagentaPlot.LinearizationPlotControl = (magentaChartsContent as FrameworkElement).FindChild<Plot>("LinearizationPlot"); - selectedTab.YellowPlot.DataPlotControl = (yellowChartsContent as FrameworkElement).FindChild<Plot>("LABDataPlot"); - selectedTab.YellowPlot.LinearizationPlotControl = (yellowChartsContent as FrameworkElement).FindChild<Plot>("LinearizationPlot"); - selectedTab.BlackPlot.DataPlotControl = (blackChartsContent as FrameworkElement).FindChild<Plot>("LABDataPlot"); - selectedTab.BlackPlot.LinearizationPlotControl = (blackChartsContent as FrameworkElement).FindChild<Plot>("LinearizationPlot"); - + InitPlots(selectedTab); vm.IsViewLoaded = true; } } } + + private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + var listBox = (UIElement)sender; + if (listBox != null && ((ListBox)listBox).DataContext is ColorCalibrationViewVM) + { + ColorCalibrationViewVM vm = (ColorCalibrationViewVM)((ListBox)listBox).DataContext; + ColorCalibrationTabVM selectedTab = vm.SelectedTab; + InitPlots(selectedTab); + } + } + + private void InitPlots(ColorCalibrationTabVM selectedTab) + { + if (selectedTab != null && !selectedTab.IsTabLoaded) + { + if (null == (cyanChartsContent as FrameworkElement).FindChild<Plot>("LABDataPlot")) + return; + selectedTab.CyanPlot.DataPlotControl = (cyanChartsContent as FrameworkElement).FindChild<Plot>("LABDataPlot"); + selectedTab.CyanPlot.LinearizationPlotControl = (cyanChartsContent as FrameworkElement).FindChild<Plot>("LinearizationPlot"); + selectedTab.MagentaPlot.DataPlotControl = (magentaChartsContent as FrameworkElement).FindChild<Plot>("LABDataPlot"); + selectedTab.MagentaPlot.LinearizationPlotControl = (magentaChartsContent as FrameworkElement).FindChild<Plot>("LinearizationPlot"); + selectedTab.YellowPlot.DataPlotControl = (yellowChartsContent as FrameworkElement).FindChild<Plot>("LABDataPlot"); + selectedTab.YellowPlot.LinearizationPlotControl = (yellowChartsContent as FrameworkElement).FindChild<Plot>("LinearizationPlot"); + selectedTab.BlackPlot.DataPlotControl = (blackChartsContent as FrameworkElement).FindChild<Plot>("LABDataPlot"); + selectedTab.BlackPlot.LinearizationPlotControl = (blackChartsContent as FrameworkElement).FindChild<Plot>("LinearizationPlot"); + + selectedTab.InitData(); + selectedTab.IsTabLoaded = true; + } + } } } |
