namespace DataVM; public partial class RealtimeData : ObservableObject { public RealtimeData() { this.FakeData(); } [ObservableProperty] private ObservableDictionary? _GasData; [ObservableProperty] private JobDataVM? _JobData1; [ObservableProperty] private JobDataVM? _JobData2; [ObservableProperty] private N2PurgeDataVM? _N2PurgeData; [ObservableProperty] private PressureDataVM? _PressureData; [ObservableProperty] private RecipeDisplayVM? _RecipeDisplay; [ObservableProperty] private ObservableDictionary? _TempCollection; private void FakeData() { GasData = new ObservableDictionary { ["VG21"] = new() { Name = "VG21", Actual = 0, Set = 0, Unit = "Torr" }, ["VG22"] = new() { Name = "VG22", Actual = 0, Set = 0, Unit = "Torr" }, ["MFC1"] = new() { Name = "MFC1", Actual = 0, Set = 0, Unit = "SLM" }, ["MFC2"] = new() { Name = "MFC2", Actual = 0, Set = 0, Unit = "SLM" }, }; JobData1 = new() { CJobStatus = "Executing", ID = "CJob1", JobStatus = "Charging", ScheduleEndTime = DateTime.Now.AddMinutes(12), }; JobData2 = new() { ID = "CJob2", JobStatus = "Waiting", ScheduleEndTime = DateTime.Now.AddMinutes(32), }; N2PurgeData = new() { N2PurgeStatus = "Undefined", O2DensityCtrlStatus = "Unknow", O2Position = "LA N2", O2Denstiy = 0, O2Limit = 0, N2Current = 0, N2Total = 0, }; PressureData = new() { Actual = 12, Unit = "Torr", Mode = "APC Control", Command = "Idle", APC = 10 }; RecipeDisplay = new RecipeDisplayVM() { ProcessRecipe = "HCD-SiN COAT-N2", ProcessRemainTime = new TimeSpan(0, 1, 22), HoldTime = new TimeSpan(0, 0, 12), StepName = "92:P HEAT1", StepRemainTime = new TimeSpan(0, 0, 31), NextStep = "19:B ROT", RecipeStartTime = DateTime.Now.AddHours(-1), RecipeEndTime = DateTime.Now.AddHours(2), LoopCount = "1/3", SubRecipe = "--", ProcessProgress = 42 }; TempCollection = new ObservableDictionary { ["U"] = new() { Name = "U", Temp = 0 }, ["CU"] = new() { Name = "CU", Temp = 0 }, ["C"] = new() { Name = "C", Temp = 0 }, ["CL"] = new() { Name = "CL", Temp = 0 }, ["L"] = new() { Name = "L", Temp = 0 }, ["SL"] = new() { Name = "SL", Temp = 0 } }; } } public partial class GasDataVM : ObservableObject { [ObservableProperty] private string? _Name; [ObservableProperty] private float _Actual; [ObservableProperty] private float _Set; [ObservableProperty] private string? _Unit; } public partial class JobDataVM : ObservableObject { [ObservableProperty] private string? _CJobStatus; [ObservableProperty] private string? _ID; [ObservableProperty] private string? _JobStatus; [ObservableProperty] private DateTime _ScheduleEndTime; } public partial class N2PurgeDataVM : ObservableObject { [ObservableProperty] private string? _N2PurgeStatus; [ObservableProperty] private string? _O2DensityCtrlStatus; [ObservableProperty] private string? _O2Position; [ObservableProperty] private float _O2Denstiy; [ObservableProperty] private float _O2Limit; [ObservableProperty] private float _N2Current; [ObservableProperty] private float _N2Total; } public partial class PressureDataVM : ObservableObject { [ObservableProperty] private float _Actual; [ObservableProperty] private string? _Unit; [ObservableProperty] private string? _Mode; [ObservableProperty] private string? _Command; [ObservableProperty] private float _APC; } public partial class RecipeDisplayVM : ObservableObject { [ObservableProperty] private string? _ProcessRecipe; [ObservableProperty] private TimeSpan? _ProcessRemainTime; [ObservableProperty] private TimeSpan? _HoldTime; [ObservableProperty] private string? _StepName; [ObservableProperty] private TimeSpan? _StepRemainTime; [ObservableProperty] private string? _NextStep; [ObservableProperty] private DateTime? _RecipeStartTime; [ObservableProperty] private DateTime? _RecipeEndTime; [ObservableProperty] private string? _LoopCount; [ObservableProperty] private string? _SubRecipe; [ObservableProperty] private float? _ProcessProgress; } public partial class DataTemperatureVM : ObservableObject { [ObservableProperty] private string? _Name; [ObservableProperty] private float _Temp; }