aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions
diff options
context:
space:
mode:
authorVictoria Plitt <Victoria.Plitt@twine-s.com>2022-01-13 14:40:35 +0200
committerVictoria Plitt <Victoria.Plitt@twine-s.com>2022-01-13 14:40:35 +0200
commit85597e05c8e3d5bd8662e89885b6fec27cbf0fc7 (patch)
tree2030b4421c8d7be68107fd4cbdea991d745753b6 /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions
parentea64974107129b33a1e739ffadf2e8f939cb48ac (diff)
downloadTango-85597e05c8e3d5bd8662e89885b6fec27cbf0fc7.tar.gz
Tango-85597e05c8e3d5bd8662e89885b6fec27cbf0fc7.zip
#5821 Save all changes in DB and loading data.
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/Models/CalibrationPlotModel.cs24
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/Models/ColorLinearizationModel.cs1
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/ViewModels/ColorCalibrationTabVM.cs314
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/ViewModels/ColorCalibrationViewVM.cs173
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/ViewModels/MainViewVM.cs5
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/Views/ColorCalibrationView.xaml2
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/Views/ColorCalibrationView.xaml.cs68
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;
+ }
+ }
}
}