diff --git a/SmartAquaViewer/Model/CCTVInfo.cs b/SmartAquaViewer/Model/CCTVInfo.cs new file mode 100644 index 0000000..11fd0ef --- /dev/null +++ b/SmartAquaViewer/Model/CCTVInfo.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SmartAquaViewer.Model +{ + public class CCTVInfo + { + public string? DeviceId { get; set; } + public string? DeviceName { get; set; } + public string? RtspUrl { get; set; } + public string? Status { get; set; } + } +} diff --git a/SmartAquaViewer/View/CCTVView.xaml b/SmartAquaViewer/View/CCTVView.xaml index 269d9c1..575eb8b 100644 --- a/SmartAquaViewer/View/CCTVView.xaml +++ b/SmartAquaViewer/View/CCTVView.xaml @@ -6,11 +6,16 @@ xmlns:local="clr-namespace:SmartAquaViewer.View" mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800"> - - - + + + + + + + + + + + + diff --git a/SmartAquaViewer/View/EnegyView.xaml b/SmartAquaViewer/View/EnegyView.xaml index bc08401..1276688 100644 --- a/SmartAquaViewer/View/EnegyView.xaml +++ b/SmartAquaViewer/View/EnegyView.xaml @@ -22,14 +22,69 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + WaterQualityList { get; } = new List(); + + private int _columnCount; + public int ColumnCount + { + get => _columnCount; + set + { + if (_columnCount != value) + { + _columnCount = value; + OnPropertyChanged(); + } + } + } + + private int _rowCount; + public int RowCount + { + get => _rowCount; + set + { + if (_rowCount != value) + { + _rowCount = value; + OnPropertyChanged(); + } + } + } + public CCTVViewModel() { + ColumnCount = 4; // Default value + RowCount = 2; // Default value + WaterQualityList = Datas.GetWaterQualityVO().Take(5).ToList(); } public event PropertyChangedEventHandler? PropertyChanged; diff --git a/SmartAquaViewer/ViewModel/EnergyViewModel.cs b/SmartAquaViewer/ViewModel/EnergyViewModel.cs index 157d6d0..a08e950 100644 --- a/SmartAquaViewer/ViewModel/EnergyViewModel.cs +++ b/SmartAquaViewer/ViewModel/EnergyViewModel.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; +using OxyPlot.Axes; using SmartAquaViewer.DataAnalysis; using SmartAquaViewer.Model; @@ -13,9 +14,164 @@ namespace SmartAquaViewer.ViewModel public class EnergyViewModel : INotifyPropertyChanged { public List WaterQualityList { get; set; } + + private double _totalEnergy; + public double TotalEnergy + { + get => _totalEnergy; + set + { + if (_totalEnergy != value) + { + _totalEnergy = value; + OnPropertyChanged(); + } + } + } + + private double _totalSandFilterEnergy; + public double TotalSandFilterEnergy + { + get => _totalSandFilterEnergy; + set + { + if (_totalSandFilterEnergy != value) + { + _totalSandFilterEnergy = value; + OnPropertyChanged(); + } + } + } + + private double _totalCirculationPumpEnergy; + public double TotalCirculationPumpEnergy + { + get => _totalCirculationPumpEnergy; + set + { + if (_totalCirculationPumpEnergy != value) + { + _totalCirculationPumpEnergy = value; + OnPropertyChanged(); + } + } + } + + private double _totalHeatPumpEnergy; + public double TotalHeatPumpEnergy + { + get => _totalHeatPumpEnergy; + set + { + if (_totalHeatPumpEnergy != value) + { + _totalHeatPumpEnergy = value; + OnPropertyChanged(); + } + } + } + + private double _totalAirBlowerEnergy; + public double TotalAirBlowerEnergy + { + get => _totalAirBlowerEnergy; + set + { + if (_totalAirBlowerEnergy != value) + { + _totalAirBlowerEnergy = value; + OnPropertyChanged(); + } + } + } + + private double _totalOzoneGeneratorEnergy; + public double TotalOzoneGeneratorEnergy + { + get => _totalOzoneGeneratorEnergy; + set + { + if (_totalOzoneGeneratorEnergy != value) + { + _totalOzoneGeneratorEnergy = value; + OnPropertyChanged(); + } + } + } + + private double _totalUVSterilizerEnergy; + public double TotalUVSterilizerEnergy + { + get => _totalUVSterilizerEnergy; + set + { + if (_totalUVSterilizerEnergy != value) + { + _totalUVSterilizerEnergy = value; + OnPropertyChanged(); + } + } + } + + private double _totalOzoneDissolverEnergy; + public double TotalOzoneDissolverEnergy + { + get => _totalOzoneDissolverEnergy; + set + { + if (_totalOzoneDissolverEnergy != value) + { + _totalOzoneDissolverEnergy = value; + OnPropertyChanged(); + } + } + } + + private double _totalExcessOzoneDestroyerEnergy; + public double TotalExcessOzoneDestroyerEnergy + { + get => _totalExcessOzoneDestroyerEnergy; + set + { + if (_totalExcessOzoneDestroyerEnergy != value) + { + _totalExcessOzoneDestroyerEnergy = value; + OnPropertyChanged(); + } + } + } + + public EnergyViewModel() { WaterQualityList = Datas.GetWaterQualityVO(); + + TotalSandFilterEnergy = WaterQualityList.Sum(vo => ResolveEnergyField(vo, "Filtering.SandFilterEnergy") ?? 0); + TotalCirculationPumpEnergy = WaterQualityList.Sum(vo => ResolveEnergyField(vo, "Filtering.CirculationPumpEnergy") ?? 0); + TotalHeatPumpEnergy = WaterQualityList.Sum(vo => ResolveEnergyField(vo, "Filtering.HeatPumpEnergy") ?? 0); + TotalAirBlowerEnergy = WaterQualityList.Sum(vo => ResolveEnergyField(vo, "Filtering.AirBlowerEnergy") ?? 0); + TotalOzoneGeneratorEnergy = WaterQualityList.Sum(vo => ResolveEnergyField(vo, "Sterilizing.OzoneGeneratorEnergy") ?? 0); + TotalUVSterilizerEnergy = WaterQualityList.Sum(vo => ResolveEnergyField(vo, "Sterilizing.UVSterilizerEnergy") ?? 0); + TotalOzoneDissolverEnergy = WaterQualityList.Sum(vo => ResolveEnergyField(vo, "Sterilizing.OzoneDissolverEnergy") ?? 0); + TotalExcessOzoneDestroyerEnergy = WaterQualityList.Sum(vo => ResolveEnergyField(vo, "Sterilizing.ExcessOzoneDestroyerEnergy") ?? 0); + TotalEnergy = WaterQualityList.Sum(vo => ResolveEnergyField(vo, "TotalEnergy") ?? 0); + } + + private double? ResolveEnergyField(WaterQualityVO vo, string fieldName) + { + return fieldName switch + { + "Filtering.SandFilterEnergy" => vo.Filtering.SandFilterEnergy, + "Filtering.CirculationPumpEnergy" => vo.Filtering.CirculationPumpEnergy, + "Filtering.HeatPumpEnergy" => vo.Filtering.HeatPumpEnergy, + "Filtering.AirBlowerEnergy" => vo.Filtering.AirBlowerEnergy, + "Sterilizing.OzoneGeneratorEnergy" => vo.Sterilizing.OzoneGeneratorEnergy, + "Sterilizing.UVSterilizerEnergy" => vo.Sterilizing.UVSterilizerEnergy, + "Sterilizing.OzoneDissolverEnergy" => vo.Sterilizing.OzoneDissolverEnergy, + "Sterilizing.ExcessOzoneDestroyerEnergy" => vo.Sterilizing.ExcessOzoneDestroyerEnergy, + "TotalEnergy" => vo.TotalEnergy, + _ => null + }; } public event PropertyChangedEventHandler? PropertyChanged; diff --git a/SmartAquaViewer/ViewModel/MonitoringViewModel.cs b/SmartAquaViewer/ViewModel/MonitoringViewModel.cs index 10f78dd..53b458d 100644 --- a/SmartAquaViewer/ViewModel/MonitoringViewModel.cs +++ b/SmartAquaViewer/ViewModel/MonitoringViewModel.cs @@ -243,7 +243,6 @@ namespace SmartAquaViewer.ViewModel BtnVisibilityUp = Visibility.Collapsed; WaterQualityList = WaterQualityVO.GetSampleData(new DateTime(2025, 8, 1), new DateTime(2025, 8, 1), 10); - var list = Test.GetSampleData(new DateTime(2025, 8, 1), new DateTime(2025, 8, 1), 24); Datas.SetWaterQualityVO(WaterQualityList); TankGroups = WaterQualityList