aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Software/DB/PPC/Tango.mdfbin75497472 -> 75497472 bytes
-rw-r--r--Software/DB/PPC/Tango_log.ldfbin1048576 -> 1048576 bytes
-rw-r--r--Software/DB/Tango.mdfbin75497472 -> 75497472 bytes
-rw-r--r--Software/DB/Tango_log.ldfbin15400960 -> 15400960 bytes
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/CalibrationDataPointVM.cs15
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/CalibrationDataVM.cs30
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/CalibrationDataViewVM.cs75
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/MainViewVM.cs21
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/Views/CalibrationDataView.xaml10
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/JobView.xaml2
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/MainViewVM.cs11
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/RmlView.xaml28
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/RmlView.xaml.cs5
-rw-r--r--Software/Visual_Studio/Resources/CalibrationDataTemplate.xlsx (renamed from Software/Visual_Studio/Resources/Calibration Data Template.xlsx)bin9306 -> 9306 bytes
-rw-r--r--Software/Visual_Studio/Tango.BL/Calibration/CalibrationHelper.cs61
-rw-r--r--Software/Visual_Studio/Tango.BL/Tango.BL.csproj10
-rw-r--r--Software/Visual_Studio/Tango.Documents/ExcelReader.cs9
-rw-r--r--Software/Visual_Studio/Tango.Documents/ExcelWriter.cs22
-rw-r--r--Software/Visual_Studio/Tango.UnitTesting/ColorLib_TST.cs21
19 files changed, 247 insertions, 73 deletions
diff --git a/Software/DB/PPC/Tango.mdf b/Software/DB/PPC/Tango.mdf
index 198fdf37c..8d1f6e034 100644
--- a/Software/DB/PPC/Tango.mdf
+++ b/Software/DB/PPC/Tango.mdf
Binary files differ
diff --git a/Software/DB/PPC/Tango_log.ldf b/Software/DB/PPC/Tango_log.ldf
index e6f724f8b..d548e8875 100644
--- a/Software/DB/PPC/Tango_log.ldf
+++ b/Software/DB/PPC/Tango_log.ldf
Binary files differ
diff --git a/Software/DB/Tango.mdf b/Software/DB/Tango.mdf
index dc1bf2460..909948ec3 100644
--- a/Software/DB/Tango.mdf
+++ b/Software/DB/Tango.mdf
Binary files differ
diff --git a/Software/DB/Tango_log.ldf b/Software/DB/Tango_log.ldf
index fbffee0bd..964b699b5 100644
--- a/Software/DB/Tango_log.ldf
+++ b/Software/DB/Tango_log.ldf
Binary files differ
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/CalibrationDataPointVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/CalibrationDataPointVM.cs
index 33110d50e..7d3dfdd0e 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/CalibrationDataPointVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/CalibrationDataPointVM.cs
@@ -4,6 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tango.Core;
+using Tango.PMR.ColorLab;
using Tango.SharedUI;
namespace Tango.MachineStudio.ColorLab.ViewModels
@@ -45,5 +46,19 @@ namespace Tango.MachineStudio.ColorLab.ViewModels
X = x;
Y = y;
}
+
+ public CalibrationDataPointVM(CalibrationPoint calibrationPoint) : this(calibrationPoint.X, calibrationPoint.Y)
+ {
+
+ }
+
+ public CalibrationPoint ToPMR()
+ {
+ return new CalibrationPoint()
+ {
+ X = X,
+ Y = Y,
+ };
+ }
}
}
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/CalibrationDataVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/CalibrationDataVM.cs
index 8fe8ec4ac..2d332bec2 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/CalibrationDataVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/CalibrationDataVM.cs
@@ -20,23 +20,6 @@ namespace Tango.MachineStudio.ColorLab.ViewModels
set { _liquidType = value; RaisePropertyChangedAuto(); }
}
-
- private String _name;
-
- public String Name
- {
- get { return _name; }
- set { _name = value; RaisePropertyChangedAuto(); }
- }
-
- private int _color;
-
- public int Color
- {
- get { return _color; }
- set { _color = value; RaisePropertyChangedAuto(); }
- }
-
private IdsPack _idsPack;
public IdsPack IdsPack
@@ -81,9 +64,20 @@ namespace Tango.MachineStudio.ColorLab.ViewModels
}
}
- public CalibrationDataVM()
+ private CalibrationDataVM()
{
CalibrationPoints = new ObservableCollection<CalibrationDataPointVM>();
}
+
+ public CalibrationDataVM(IdsPack pack) : this()
+ {
+ IdsPack = pack;
+ LiquidType = pack.LiquidType;
+ }
+
+ public CalibrationDataVM(LiquidType liquidType) : this()
+ {
+ LiquidType = liquidType;
+ }
}
}
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/CalibrationDataViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/CalibrationDataViewVM.cs
index c9c83dde0..106013b51 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/CalibrationDataViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/CalibrationDataViewVM.cs
@@ -1,16 +1,22 @@
-using System;
+using Microsoft.Win32;
+using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using Tango.BL.Calibration;
+using Tango.Core.Commands;
using Tango.MachineStudio.Common;
+using Tango.MachineStudio.Common.Notifications;
using Tango.SharedUI;
namespace Tango.MachineStudio.ColorLab.ViewModels
{
public class CalibrationDataViewVM : ViewModel
{
+ private INotificationProvider _notification;
+
private ObservableCollection<CalibrationDataVM> _liquidsCalibrationData;
/// <summary>
/// Gets or sets the liquids calibration data.
@@ -22,20 +28,83 @@ namespace Tango.MachineStudio.ColorLab.ViewModels
}
/// <summary>
+ /// Gets or sets the import excel command.
+ /// </summary>
+ public RelayCommand<CalibrationDataVM> ImportExcelCommand { get; set; }
+
+ /// <summary>
+ /// Gets or sets the export excel command.
+ /// </summary>
+ public RelayCommand<CalibrationDataVM> ExportExcelCommand { get; set; }
+
+ /// <summary>
/// Initializes a new instance of the <see cref="CalibrationDataViewVM"/> class.
/// </summary>
- public CalibrationDataViewVM()
+ public CalibrationDataViewVM(INotificationProvider notificationProvider)
{
+ _notification = notificationProvider;
+
LiquidsCalibrationData = new ObservableCollection<CalibrationDataVM>();
+
+ ImportExcelCommand = new RelayCommand<CalibrationDataVM>(ImportExcel);
+ ExportExcelCommand = new RelayCommand<CalibrationDataVM>(ExportExcel);
}
/// <summary>
/// Initializes a new instance of the <see cref="CalibrationDataViewVM"/> class.
/// </summary>
/// <param name="liquidsCalibrationData">The liquids calibration data.</param>
- public CalibrationDataViewVM(ObservableCollection<CalibrationDataVM> liquidsCalibrationData)
+ public CalibrationDataViewVM(INotificationProvider notificationProvider, ObservableCollection<CalibrationDataVM> liquidsCalibrationData) : this(notificationProvider)
{
LiquidsCalibrationData = liquidsCalibrationData;
}
+
+ private void ImportExcel(CalibrationDataVM vm)
+ {
+ OpenFileDialog dlg = new OpenFileDialog();
+
+ try
+ {
+ dlg.Title = $"Import excel calibration file for {vm.LiquidType.Name}";
+ dlg.Filter = "Excel Files|*.xlsx";
+ if (dlg.ShowDialog().Value)
+ {
+ vm.CalibrationPoints.Clear();
+ var points = CalibrationHelper.ImportCalibrationDataFromExcel(dlg.FileName);
+
+ foreach (var p in points)
+ {
+ vm.CalibrationPoints.Add(new CalibrationDataPointVM(p));
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error importing excel file " + dlg.FileName);
+ _notification.ShowError("An error occurred while trying to import the selected excel file. Please check the file format if valid and is available to read.");
+ }
+ }
+
+ private void ExportExcel(CalibrationDataVM vm)
+ {
+ SaveFileDialog dlg = new SaveFileDialog();
+ try
+ {
+ dlg.Title = $"Export excel calibration file for {vm.LiquidType.Name}";
+ dlg.Filter = "Excel Files|*.xlsx";
+ dlg.DefaultExt = ".xlsx";
+ dlg.FileName = $"CData_{vm.LiquidType.Name}_v{vm.LiquidType.Version}.xlsx";
+ if (dlg.ShowDialog().Value)
+ {
+ var points = vm.CalibrationPoints.Select(x => x.ToPMR()).ToList();
+ CalibrationHelper.ExportCalibrationDataToExcel(points, dlg.FileName);
+ }
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error exporting excel file " + dlg.FileName);
+ _notification.ShowError("An error occurred while trying to export the calibration data.");
+ }
+ }
}
}
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/MainViewVM.cs
index d0fa80a20..33090a640 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/MainViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/MainViewVM.cs
@@ -329,10 +329,10 @@ namespace Tango.MachineStudio.ColorLab.ViewModels
//calData.LiquidType = (PMR.ColorLab.LiquidType)vm.IdsPack.LiquidType.Code;
//calData.CalibrationPoints.AddRange(vm.CalibrationPoints.Select(x => new CalibrationPoint() { X = x.X, Y = x.Y }));
- inputLiquid.CalibrationData = Cat.CreateDemoCalibrationData((PMR.ColorLab.LiquidType)vm.IdsPack.LiquidType.Code);
+ inputLiquid.CalibrationData = Cat.CreateDemoCalibrationData((PMR.ColorLab.LiquidType)vm.LiquidType.Code);
- inputLiquid.LiquidType = (PMR.ColorLab.LiquidType)vm.IdsPack.LiquidType.Code;
- inputLiquid.MaxNanoliterPerCentimeter = LiquidTypesRmls.SingleOrDefault(x => x.LiquidType.Code == vm.IdsPack.LiquidType.Code).MaxNlPerCm;
+ inputLiquid.LiquidType = (PMR.ColorLab.LiquidType)vm.LiquidType.Code;
+ inputLiquid.MaxNanoliterPerCentimeter = LiquidTypesRmls.SingleOrDefault(x => x.LiquidType.Code == vm.LiquidType.Code).MaxNlPerCm;
input.InputCoordinates.InputLiquids.Add(inputLiquid);
}
@@ -525,10 +525,10 @@ namespace Tango.MachineStudio.ColorLab.ViewModels
//calData.LiquidType = (PMR.ColorLab.LiquidType)vm.IdsPack.LiquidType.Code;
//calData.CalibrationPoints.AddRange(vm.CalibrationPoints.Select(x => new CalibrationPoint() { X = x.X, Y = x.Y }));
- inputLiquid.CalibrationData = Cat.CreateDemoCalibrationData((PMR.ColorLab.LiquidType)vm.IdsPack.LiquidType.Code);
+ inputLiquid.CalibrationData = Cat.CreateDemoCalibrationData((PMR.ColorLab.LiquidType)vm.LiquidType.Code);
- inputLiquid.LiquidType = (PMR.ColorLab.LiquidType)vm.IdsPack.LiquidType.Code;
- inputLiquid.MaxNanoliterPerCentimeter = LiquidTypesRmls.SingleOrDefault(x => x.LiquidType.Code == vm.IdsPack.LiquidType.Code).MaxNlPerCm;
+ inputLiquid.LiquidType = (PMR.ColorLab.LiquidType)vm.LiquidType.Code;
+ inputLiquid.MaxNanoliterPerCentimeter = LiquidTypesRmls.SingleOrDefault(x => x.LiquidType.Code == vm.LiquidType.Code).MaxNlPerCm;
inputLiquid.Volume = LiquidVolumes.SingleOrDefault(x => x.IdsPack == vm.IdsPack).Volume;
input.InputCoordinates.InputLiquids.Add(inputLiquid);
@@ -573,22 +573,19 @@ namespace Tango.MachineStudio.ColorLab.ViewModels
//RmlProcessParametersTableGroup = SelectedRML.ProcessParametersTablesGroups.ToList().SingleOrDefault(x => x.Active);
LiquidsCalibrationData = new ObservableCollection<CalibrationDataVM>();
- CalibrationDataViewVM = new CalibrationDataViewVM(LiquidsCalibrationData);
+ CalibrationDataViewVM = new CalibrationDataViewVM(_notification, LiquidsCalibrationData);
LiquidsCalibrationData.EnableCrossThreadOperations();
foreach (var idsPack in SelectedMachine.Configuration.NoneEmptyIdsPacks.OrderBy(x => x.PackIndex))
{
- CalibrationDataVM vm = new CalibrationDataVM();
- vm.Name = idsPack.LiquidType.Name;
- vm.Color = idsPack.LiquidType.Color;
- vm.IdsPack = idsPack;
+ CalibrationDataVM vm = new CalibrationDataVM(idsPack);
var cat = idsPack.LiquidType.Cats.FirstOrDefault(x => x.Machine == SelectedMachine && x.Rml == SelectedRML);
if (cat != null)
{
var calData = cat.GetCalibrationData();
- vm.CalibrationPoints = calData.CalibrationPoints.Select(x => new CalibrationDataPointVM(x.X, x.Y)).ToObservableCollection();
+ vm.CalibrationPoints = calData.CalibrationPoints.Select(x => new CalibrationDataPointVM(x)).ToObservableCollection();
}
InvokeUINow(() =>
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/Views/CalibrationDataView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/Views/CalibrationDataView.xaml
index 28279bd50..3c9723b30 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/Views/CalibrationDataView.xaml
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/Views/CalibrationDataView.xaml
@@ -28,23 +28,23 @@
<ItemsControl.ItemTemplate>
<DataTemplate>
- <DockPanel Width="220">
+ <DockPanel Width="240">
<StackPanel DockPanel.Dock="Top">
<StackPanel DockPanel.Dock="Right" VerticalAlignment="Bottom" HorizontalAlignment="Right" Orientation="Horizontal" Margin="0 0 5 0">
- <Button Style="{StaticResource MaterialDesignFlatButton}" Padding="0" ToolTip="Import from excel" Width="30">
+ <Button Style="{StaticResource MaterialDesignFlatButton}" Padding="0" ToolTip="Import from excel" Width="30" Command="{Binding RelativeSource={RelativeSource AncestorType=local:CalibrationDataView},Path=DataContext.ImportExcelCommand}" CommandParameter="{Binding}">
<materialDesign:PackIcon Kind="Download" Foreground="Black" />
</Button>
- <Button Style="{StaticResource MaterialDesignFlatButton}" Padding="0" ToolTip="Export to excel" Width="30">
+ <Button Style="{StaticResource MaterialDesignFlatButton}" Padding="0" ToolTip="Export to excel" Width="30" Command="{Binding RelativeSource={RelativeSource AncestorType=local:CalibrationDataView},Path=DataContext.ExportExcelCommand}" CommandParameter="{Binding}">
<materialDesign:PackIcon Kind="Upload" Foreground="Black" />
</Button>
</StackPanel>
<Border Padding="2" Margin="5" CornerRadius="3">
<Border.Background>
- <SolidColorBrush Opacity="0.4" Color="{Binding Color,Converter={StaticResource ColorToIntegerConverter}}"></SolidColorBrush>
+ <SolidColorBrush Opacity="0.4" Color="{Binding LiquidType.Color,Converter={StaticResource ColorToIntegerConverter}}"></SolidColorBrush>
</Border.Background>
- <TextBlock Text="{Binding Name}" HorizontalAlignment="Center" Foreground="Black"></TextBlock>
+ <TextBlock Text="{Binding LiquidType.Name}" HorizontalAlignment="Center" Foreground="Black"></TextBlock>
</Border>
</StackPanel>
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/JobView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/JobView.xaml
index 3f1f3b486..b9c2b816f 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/JobView.xaml
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Developer/Views/JobView.xaml
@@ -963,7 +963,7 @@
<Run FontFamily="{StaticResource digital-7}" Text="{Binding OffsetPercent,StringFormat={}{0:F1}%}"></Run>
<Run Foreground="Gray" Text="{Binding OffsetMeters,Mode=OneWay,StringFormat={} ( {0:F1}m )}"></Run>
</TextBlock>
- <Slider ValueChanged="Offset_Slider_ValueChanged" Style="{StaticResource GradientOffsetSlider}" SmallChange="0.1" IsSnapToTickEnabled="True" TickFrequency="0.1" Margin="0 20 0 0" HorizontalAlignment="Center" Width="500" Value="{Binding OffsetPercent}" IsEnabled="{Binding IsMiddle}">
+ <Slider ValueChanged="Offset_Slider_ValueChanged" Style="{StaticResource GradientOffsetSlider}" SmallChange="0.1" IsSnapToTickEnabled="True" TickFrequency="0.1" Margin="0 20 0 0" HorizontalAlignment="Center" Width="300" Value="{Binding OffsetPercent}" IsEnabled="{Binding IsMiddle}">
<Slider.Foreground>
<SolidColorBrush Color="{Binding Color}"></SolidColorBrush>
</Slider.Foreground>
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 be46e2148..9e8286fa5 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
@@ -210,15 +210,12 @@ namespace Tango.MachineStudio.RML.ViewModels
ActiveProcessParametersTableView = CollectionViewSource.GetDefaultView(ActiveProcessParametersGroup.ProcessParametersTables);
ActiveProcessParametersTableView.SortDescriptions.Add(new SortDescription(nameof(ProcessParametersTable.TableIndex), ListSortDirection.Ascending));
- CalibrationDataViewVM = new CalibrationDataViewVM();
+ CalibrationDataViewVM = new CalibrationDataViewVM(_notification);
LiquidTypesRmls = ActiveRML.LiquidTypesRmls;
foreach (var liquidTypeRml in LiquidTypesRmls)
{
- CalibrationDataVM catVM = new CalibrationDataVM();
- catVM.Name = liquidTypeRml.LiquidType.Name;
- catVM.Color = liquidTypeRml.LiquidType.Color;
- catVM.LiquidType = liquidTypeRml.LiquidType;
+ CalibrationDataVM catVM = new CalibrationDataVM(liquidTypeRml.LiquidType);
if (liquidTypeRml.DefaultCatData != null)
{
@@ -359,9 +356,7 @@ namespace Tango.MachineStudio.RML.ViewModels
_active_context.LiquidTypesRmls.Add(liquidFactor);
- CalibrationDataVM catVM = new CalibrationDataVM();
- catVM.Name = liquidFactor.LiquidType.Name;
- catVM.Color = liquidFactor.LiquidType.Color;
+ CalibrationDataVM catVM = new CalibrationDataVM(liquidFactor.LiquidType);
CalibrationDataViewVM.LiquidsCalibrationData.Add(catVM);
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/RmlView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/RmlView.xaml
index aa6f39d9e..2ddd060f8 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/RmlView.xaml
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/RmlView.xaml
@@ -196,7 +196,7 @@
</ItemsControl>
</StackPanel>
- <dragAndDrop:DraggingSurface x:Name="draggingSurface" />
+ <dragAndDrop:DraggingSurface x:Name="draggingSurface" ClipToBounds="True" />
</Grid>
</DockPanel>
</Grid>
@@ -206,7 +206,6 @@
<DockPanel>
- <ScrollViewer VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Auto">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="120"/>
@@ -226,7 +225,9 @@
</Button>
</Grid>
</Border>
- <ItemsControl ItemsSource="{Binding LiquidTypesRmls}" Margin="0 10 0 0">
+
+ <ScrollViewer x:Name="liquidsFactorsScrollViewer" VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Hidden" Margin="15 0 20 0">
+ <ItemsControl Width="{Binding ElementName=calibrationDataView,Path=ActualWidth}" ItemsSource="{Binding LiquidTypesRmls}" Margin="0 10 0 0">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid IsItemsHost="True" Rows="1"></UniformGrid>
@@ -259,7 +260,8 @@
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
- </DockPanel>
+ </ScrollViewer>
+ </DockPanel>
</Grid>
<Grid Grid.Row="2">
@@ -270,18 +272,22 @@
<DropShadowEffect Opacity="0.4" />
</Border.Effect>
<Grid>
- <TextBlock HorizontalAlignment="Left" Margin="20 0 0 0" FontSize="16">CALIBRATION DATA</TextBlock>
- <Button ToolTip="Create excel file template" HorizontalAlignment="Right" Style="{StaticResource MaterialDesignFlatButton}" Height="Auto" VerticalAlignment="Bottom" Width="30" Padding="0" Command="{Binding CreateCalibrationDataExcelTemplateCommand}">
- <materialDesign:PackIcon Kind="FileExcel" Foreground="DimGray" Width="16" Height="20" />
- </Button>
+ <TextBlock HorizontalAlignment="Left" Margin="20 0 0 0" FontSize="16">CALIBRATION DATA</TextBlock>
+ <Button ToolTip="Create excel file template" FontSize="11" Foreground="#202020" HorizontalAlignment="Right" Style="{StaticResource MaterialDesignFlatButton}" Height="Auto" VerticalAlignment="Bottom" Padding="0" Command="{Binding CreateCalibrationDataExcelTemplateCommand}" Margin="0 0 5 0">
+ <StackPanel Orientation="Horizontal">
+ <materialDesign:PackIcon Kind="FileExcel" Foreground="DimGray" Width="16" Height="26" />
+ <TextBlock VerticalAlignment="Center" Margin="5 0 0 0">Create Empty Excel Template</TextBlock>
+ </StackPanel>
+ </Button>
</Grid>
</Border>
- <colorLabViews:CalibrationDataView Margin="0 10 0 0" DataContext="{Binding CalibrationDataViewVM}" />
- </DockPanel>
+ <ScrollViewer x:Name="calibrationDataScrollViewer" ScrollChanged="calibrationDataScrollViewer_ScrollChanged" VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Auto" Margin="15 0 20 0">
+ <colorLabViews:CalibrationDataView x:Name="calibrationDataView" Margin="0 10 0 0" DataContext="{Binding CalibrationDataViewVM}" />
+ </ScrollViewer>
+ </DockPanel>
</Grid>
</Grid>
- </ScrollViewer>
</DockPanel>
</Grid>
</Grid>
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/RmlView.xaml.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/RmlView.xaml.cs
index c1bc9ad4a..2a5d317c6 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/RmlView.xaml.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/RmlView.xaml.cs
@@ -47,5 +47,10 @@ namespace Tango.MachineStudio.RML.Views
ProcessParametersTable dropped = e.Droppable.DataContext as ProcessParametersTable;
_vm.OnProcessParametersTableDropped(dragged, dropped);
}
+
+ private void calibrationDataScrollViewer_ScrollChanged(object sender, ScrollChangedEventArgs e)
+ {
+ liquidsFactorsScrollViewer.ScrollToHorizontalOffset(e.HorizontalOffset);
+ }
}
}
diff --git a/Software/Visual_Studio/Resources/Calibration Data Template.xlsx b/Software/Visual_Studio/Resources/CalibrationDataTemplate.xlsx
index cd6b52fba..cd6b52fba 100644
--- a/Software/Visual_Studio/Resources/Calibration Data Template.xlsx
+++ b/Software/Visual_Studio/Resources/CalibrationDataTemplate.xlsx
Binary files differ
diff --git a/Software/Visual_Studio/Tango.BL/Calibration/CalibrationHelper.cs b/Software/Visual_Studio/Tango.BL/Calibration/CalibrationHelper.cs
new file mode 100644
index 000000000..64658ebee
--- /dev/null
+++ b/Software/Visual_Studio/Tango.BL/Calibration/CalibrationHelper.cs
@@ -0,0 +1,61 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.Core.Helpers;
+using Tango.Documents;
+using Tango.PMR.ColorLab;
+
+namespace Tango.BL.Calibration
+{
+ /// <summary>
+ /// Represents a machine calibration helper.
+ /// </summary>
+ public static class CalibrationHelper
+ {
+ /// <summary>
+ /// Imports the calibration data from excel.
+ /// </summary>
+ /// <param name="fileName">Name of the file.</param>
+ /// <returns></returns>
+ public static List<CalibrationPoint> ImportCalibrationDataFromExcel(String fileName)
+ {
+ using (ExcelReader reader = new ExcelReader(fileName))
+ {
+ return reader.GetDataByIndex<CalibrationPoint>("CalibrationData", 2);
+ }
+ }
+
+ /// <summary>
+ /// Exports the calibration data to excel.
+ /// </summary>
+ /// <param name="calibrationPoints">The calibration points.</param>
+ /// <param name="fileName">Name of the file.</param>
+ public static void ExportCalibrationDataToExcel(List<CalibrationPoint> calibrationPoints, String fileName)
+ {
+ CreateCalibrationDataExcelTemplate(fileName);
+
+ using (ExcelWriter writer = new ExcelWriter(fileName))
+ {
+ writer.WriteData(calibrationPoints, "CalibrationData");
+ }
+ }
+
+ /// <summary>
+ /// Creates the calibration data excel template.
+ /// </summary>
+ /// <param name="fileName">Name of the file.</param>
+ public static void CreateCalibrationDataExcelTemplate(String fileName)
+ {
+ var stream = EmbeddedResourceHelper.GetEmbeddedResourceStream("Tango.BL.Calibration.CalibrationDataTemplate.xlsx");
+
+ using (FileStream fs = new FileStream(fileName, FileMode.Create))
+ {
+ stream.Seek(0, SeekOrigin.Begin);
+ stream.CopyTo(fs);
+ }
+ }
+ }
+}
diff --git a/Software/Visual_Studio/Tango.BL/Tango.BL.csproj b/Software/Visual_Studio/Tango.BL/Tango.BL.csproj
index c2d368160..78df751de 100644
--- a/Software/Visual_Studio/Tango.BL/Tango.BL.csproj
+++ b/Software/Visual_Studio/Tango.BL/Tango.BL.csproj
@@ -94,6 +94,7 @@
<Compile Include="Builders\RmlBuilder.cs" />
<Compile Include="Builders\RmlsCollectionBuilder.cs" />
<Compile Include="Builders\UserBuilder.cs" />
+ <Compile Include="Calibration\CalibrationHelper.cs" />
<Compile Include="Catalogs\Catalog.cs" />
<Compile Include="Catalogs\CatalogGroup.cs" />
<Compile Include="Catalogs\CatalogItem.cs" />
@@ -289,6 +290,9 @@
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
+ <EmbeddedResource Include="..\Resources\CalibrationDataTemplate.xlsx">
+ <Link>Calibration\CalibrationDataTemplate.xlsx</Link>
+ </EmbeddedResource>
<None Include="app.config" />
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
@@ -309,6 +313,10 @@
<Project>{38197109-8610-4d3f-92b9-16d48df94d7c}</Project>
<Name>Tango.DAL.Remote</Name>
</ProjectReference>
+ <ProjectReference Include="..\Tango.Documents\Tango.Documents.csproj">
+ <Project>{CA87A608-7B17-4C98-88F2-42ABEE10F4C1}</Project>
+ <Name>Tango.Documents</Name>
+ </ProjectReference>
<ProjectReference Include="..\Tango.Logging\Tango.Logging.csproj">
<Project>{BC932DBD-7CDB-488C-99E4-F02CF441F55E}</Project>
<Name>Tango.Logging</Name>
@@ -336,7 +344,7 @@
</Target>
<ProjectExtensions>
<VisualStudio>
- <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" />
+ <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" />
</VisualStudio>
</ProjectExtensions>
</Project> \ No newline at end of file
diff --git a/Software/Visual_Studio/Tango.Documents/ExcelReader.cs b/Software/Visual_Studio/Tango.Documents/ExcelReader.cs
index b212678ae..3d6b37445 100644
--- a/Software/Visual_Studio/Tango.Documents/ExcelReader.cs
+++ b/Software/Visual_Studio/Tango.Documents/ExcelReader.cs
@@ -67,7 +67,7 @@ namespace Tango.Documents
PropertyInfo[] properties = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
- for (int rowIndex = firstRowIndex; rowIndex < rowCount; rowIndex++)
+ for (int rowIndex = firstRowIndex; rowIndex < rowCount + 1; rowIndex++)
{
Row row = GetRow(currWorksheet, rowIndex);
if (row == null)
@@ -82,7 +82,7 @@ namespace Tango.Documents
Cell cell = cells[cellIndex] as Cell;
String value = CellValue(cell);
- properties[cellIndex].SetValue(newObj, value);
+ properties[cellIndex].SetValue(newObj, Convert.ChangeType(value, properties[cellIndex].PropertyType));
}
results.Add(newObj);
@@ -330,8 +330,9 @@ namespace Tango.Documents
/// <returns></returns>
private Row GetRow(Worksheet worksheet, int rowIndex)
{
- var row = worksheet.GetFirstChild<SheetData>().
- Elements<Row>().Where(r => r.RowIndex == rowIndex).FirstOrDefault();
+ var sheetData = worksheet.GetFirstChild<SheetData>();
+ var elements = sheetData.Elements<Row>();
+ var row = elements.Where(r => r.RowIndex == rowIndex).FirstOrDefault();
return row;
}
diff --git a/Software/Visual_Studio/Tango.Documents/ExcelWriter.cs b/Software/Visual_Studio/Tango.Documents/ExcelWriter.cs
index 613bbd90f..63c04bce9 100644
--- a/Software/Visual_Studio/Tango.Documents/ExcelWriter.cs
+++ b/Software/Visual_Studio/Tango.Documents/ExcelWriter.cs
@@ -52,9 +52,12 @@ namespace Tango.Documents
{
var item = list[i];
+ var last_row = sheetData.Elements<Row>().Last();
+
Row newRow = new Row();
+ newRow.RowIndex = last_row.RowIndex + 1;
- sheetData.InsertAfter(newRow, sheetData.Elements<Row>().Last());
+ sheetData.InsertAfter(newRow, last_row);
foreach (var prop in props)
{
@@ -77,7 +80,22 @@ namespace Tango.Documents
cell.CellReference = cellReference;
}
cell.CellValue = new CellValue(value.ToString());
- cell.DataType = CellValues.String;
+
+ cell.DataType = CellValues.Number;
+
+ if (value is String)
+ {
+ cell.DataType = CellValues.String;
+ }
+ else if (value is DateTime)
+ {
+ cell.DataType = CellValues.Date;
+ }
+ else if (value is Boolean)
+ {
+ cell.DataType = CellValues.Boolean;
+ }
+
row.Append(cell);
}
diff --git a/Software/Visual_Studio/Tango.UnitTesting/ColorLib_TST.cs b/Software/Visual_Studio/Tango.UnitTesting/ColorLib_TST.cs
index dc19c77dd..b2e32afce 100644
--- a/Software/Visual_Studio/Tango.UnitTesting/ColorLib_TST.cs
+++ b/Software/Visual_Studio/Tango.UnitTesting/ColorLib_TST.cs
@@ -14,6 +14,7 @@ using System.Diagnostics;
using Tango.Documents;
using Tango.Core.IO;
using Tango.MachineStudio.ColorLab.ViewModels;
+using Tango.BL.Calibration;
namespace Tango.UnitTesting
{
@@ -167,25 +168,29 @@ namespace Tango.UnitTesting
}
[TestMethod]
- public void Write_Calibration_Data_Excel_File()
+ public void Read_Write_Calibration_Data_Excel_File()
{
String temp_file = Helper.GetTempFolderPath() + "\\CalibrationData.xlsx";
- File.Copy(Helper.GetResourcePath("Calibration Data Template.xlsx"), temp_file);
- CalibrationDataVM vm = new CalibrationDataVM();
+ List<CalibrationPoint> w_calibration_points = new List<CalibrationPoint>();
for (int i = 0; i < 10; i++)
{
- vm.CalibrationPoints.Add(new CalibrationDataPointVM()
+ w_calibration_points.Add(new CalibrationPoint()
{
- X = i + 1,
- Y = (i + 1) * 10,
+ X = i + 1,
+ Y = (i + 1) * 10,
});
}
- using (ExcelWriter writer = new ExcelWriter(temp_file))
+ CalibrationHelper.ExportCalibrationDataToExcel(w_calibration_points, temp_file);
+ var r_calibration_points = CalibrationHelper.ImportCalibrationDataFromExcel(temp_file);
+
+ Assert.AreEqual(w_calibration_points.Count, r_calibration_points.Count, "Read calibration points count does not match the written calibration points count.");
+
+ for (int i = 0; i < w_calibration_points.Count; i++)
{
- writer.WriteData(vm.CalibrationPoints, "CalibrationData");
+ Assert.AreEqual(w_calibration_points[i].X + w_calibration_points[i].Y, r_calibration_points[i].X + r_calibration_points[i].Y, $"Calibration points at index {i} are not equal.");
}
Helper.ShowInExplorer(temp_file);