using Aurora;
using Aurora.Api;
using VisionCommon;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Drawing;
using System.Windows;
using Aurora.Util.HislogPlus;
using Aurora.View;
namespace VisionUI.Setup {
///
/// 센터 튜닝 로그 아이템
///
public class CenterTuningLogItem : ICloneable {
/// 시간
public string Time { get; set; }
/// 현재 진행 횟수
public int CurrentCnt { get; set; }
/// 얼라인 결과값 X
public double DeltaX { get; set; }
/// 얼라인 결과값 Y
public double DeltaY { get; set; }
/// 얼라인 결과값 T
public double DeltaT { get; set; }
///
/// Clone (Copy)
///
/// 센터 튜닝 로그 아이템
public object Clone() {
return new CenterTuningLogItem() {
Time = this.Time,
CurrentCnt = this.CurrentCnt,
DeltaX = this.DeltaX,
DeltaY = this.DeltaY,
DeltaT = this.DeltaT
};
}
}
///
/// 센터 튜닝 로그 아이템 매니저
///
public class CenterTuningLogItemManager : ItemManagerBase {
private static readonly object _Lock = new object();
///
/// 공정 시간을 포함한 센터 튜닝 로그 아이템으로 변환한다.
///
/// 서브시스템 키 정보
/// 센터 튜닝 로그 아이템
/// 센터 튜닝 로그 아이템
public static CenterTuningLogItem GetCenterTuningLogItem(SubSysInfo subSysInfo, CenterTuningLogItem item) {
lock (_Lock) {
return new CenterTuningLogItem() {
Time = GetTimeStamp(subSysInfo, item),
CurrentCnt = item.CurrentCnt,
DeltaX = item.DeltaX,
DeltaY = item.DeltaY,
DeltaT = item.DeltaT
};
}
}
}
class CenterTuningLogViewModel : NotifyPropertyChangedBase {
private Logger Log = new Logger("CenterTuningLogViewModel");
private SubSysInfo _SubSysInfo;
private SubSysRecipe _SubSysRecipe;
private CsvManager _CsvManager = new CsvManager();
public event PropertyChangedEventHandler PropertyChanged;
private DateTime selectedDate;
/// 선택된 날짜
public DateTime SelectedDate { get => selectedDate; set { SetProperty(ref selectedDate, value); CalendarChanged(value); } }
private ObservableCollection _CenterTuningLogItems;
/// 센터 튜닝 로그 아이템
public ObservableCollection CenterTuningLogItems {
get {
return _CenterTuningLogItems;
}
set {
_CenterTuningLogItems = value;
NotifyPropertyChanged("CenterTuningLogItems");
}
}
///
/// 센터 튜닝 로그 뷰 모델
///
/// 서브시스템 정보
public CenterTuningLogViewModel(SubSysInfo subSysInfo) {
_SubSysInfo = subSysInfo;
_SubSysRecipe = VisionRecipeManager.GetSubSysRecipe(subSysInfo);
CenterTuningLogItems = new ObservableCollection();
SelectedDate = DateTime.Now.Date;
}
private void NotifyPropertyChanged(string propName) {
PropertyChanged?.Invoke(
this,
new PropertyChangedEventArgs(propName));
}
///
/// 현재 시간 기준으로 CSV 불러오기
///
public void LoadCsvNow() {
DateTime dateTime = DateTime.Now;
LoadCsv(dateTime);
}
private void CalendarChanged(DateTime dateTime) {
LoadCsv(dateTime);
}
private void LoadCsv(DateTime dateTime) {
try {
CenterTuningLogItems.Clear();
List items = _CsvManager.LoadCsv(_SubSysInfo, dateTime, eSaveDataType.CenterTuning);
if (items != null) {
foreach (CenterTuningLogItem item in items) {
CenterTuningLogItems.Add(item);
}
}
}
catch (Exception e) {
Log.FuncE(e.Message);
}
}
}
}