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); } } } }