blob: fd69fef3516fdcbe670931a7c6c3a5b5f650cd6f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
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.BL.Entities;
using Tango.Core.Commands;
using Tango.MachineStudio.Common;
using Tango.MachineStudio.Common.Notifications;
using Tango.SharedUI;
namespace Tango.MachineStudio.RML.ViewModels
{
public class CalibrationDataViewVM : ViewModel
{
private INotificationProvider _notification;
private ObservableCollection<CalibrationDataVM> _liquidsCalibrationData;
/// <summary>
/// Gets or sets the liquids calibration data.
/// </summary>
public ObservableCollection<CalibrationDataVM> LiquidsCalibrationData
{
get { return _liquidsCalibrationData; }
set { _liquidsCalibrationData = value; RaisePropertyChangedAuto(); }
}
/// <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(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(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.");
}
}
public void ApplyCalibrationData(LiquidType liquidType, List<CalibrationDataPointVM> newpoints)
{
CalibrationDataVM vm = LiquidsCalibrationData.FirstOrDefault(x => x.LiquidType == liquidType);
if(vm != null)
{
newpoints.ForEach(x => vm.CalibrationPoints.Add(x));
}
}
}
}
|