|
|
|
@ -26,6 +26,7 @@ namespace SmartAquaViewer.ViewModel
|
|
|
|
|
|
|
|
|
|
|
|
public class MonitoringViewModel : INotifyPropertyChanged
|
|
|
|
public class MonitoringViewModel : INotifyPropertyChanged
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
#region Properties
|
|
|
|
public ObservableCollection<GraphType> GraphTypes { get; }
|
|
|
|
public ObservableCollection<GraphType> GraphTypes { get; }
|
|
|
|
|
|
|
|
|
|
|
|
public List<WaterQualityVO> WaterQualityList { get; }
|
|
|
|
public List<WaterQualityVO> WaterQualityList { get; }
|
|
|
|
@ -82,6 +83,7 @@ namespace SmartAquaViewer.ViewModel
|
|
|
|
{
|
|
|
|
{
|
|
|
|
_selectedGraphType = value;
|
|
|
|
_selectedGraphType = value;
|
|
|
|
OnPropertyChanged();
|
|
|
|
OnPropertyChanged();
|
|
|
|
|
|
|
|
OnPropertyChanged(nameof(ShowXSelector));
|
|
|
|
RebuildFieldCandidates();
|
|
|
|
RebuildFieldCandidates();
|
|
|
|
|
|
|
|
|
|
|
|
var idx = GraphTypes.IndexOf(value);
|
|
|
|
var idx = GraphTypes.IndexOf(value);
|
|
|
|
@ -139,6 +141,8 @@ namespace SmartAquaViewer.ViewModel
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public bool ShowXSelector => SelectedGraphType == GraphType.SCATTER;
|
|
|
|
|
|
|
|
|
|
|
|
// [필드 후보 목록] 탭/시스템에 따라 달라짐
|
|
|
|
// [필드 후보 목록] 탭/시스템에 따라 달라짐
|
|
|
|
public ObservableCollection<FieldItem> AvailableFields { get; } = new();
|
|
|
|
public ObservableCollection<FieldItem> AvailableFields { get; } = new();
|
|
|
|
|
|
|
|
|
|
|
|
@ -189,8 +193,10 @@ namespace SmartAquaViewer.ViewModel
|
|
|
|
|
|
|
|
|
|
|
|
private double _boxWidth = 0.3; // Box
|
|
|
|
private double _boxWidth = 0.3; // Box
|
|
|
|
public double BoxWidth { get => _boxWidth; set { _boxWidth = value; OnPropertyChanged(); } }
|
|
|
|
public double BoxWidth { get => _boxWidth; set { _boxWidth = value; OnPropertyChanged(); } }
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
public ICommand ChangeDrawerStatusCommand { get; }
|
|
|
|
public ICommand ChangeDrawerStatusCommand { get; }
|
|
|
|
|
|
|
|
public ICommand DrawGraphCommand { get; }
|
|
|
|
|
|
|
|
|
|
|
|
public delegate void SystemChangedEventHandler(MonitorTab selectedTab);
|
|
|
|
public delegate void SystemChangedEventHandler(MonitorTab selectedTab);
|
|
|
|
public event SystemChangedEventHandler OnSystemChanged;
|
|
|
|
public event SystemChangedEventHandler OnSystemChanged;
|
|
|
|
@ -219,11 +225,39 @@ namespace SmartAquaViewer.ViewModel
|
|
|
|
SetGraphType();
|
|
|
|
SetGraphType();
|
|
|
|
|
|
|
|
|
|
|
|
ChangeDrawerStatusCommand = new RelayCommand(_ => IsOpenMode = !IsOpenMode);
|
|
|
|
ChangeDrawerStatusCommand = new RelayCommand(_ => IsOpenMode = !IsOpenMode);
|
|
|
|
|
|
|
|
DrawGraphCommand = new RelayCommand(DrawGraph);
|
|
|
|
|
|
|
|
|
|
|
|
RebuildAvailableFields();
|
|
|
|
RebuildAvailableFields();
|
|
|
|
RebuildFieldCandidates();
|
|
|
|
RebuildFieldCandidates();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void DrawGraph(object obj)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
switch (SelectedGraphType)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
case GraphType.LINE:
|
|
|
|
|
|
|
|
var xFieldLine = SelectedXField?.Name == "RecordedTime" ? SelectedXField : null;
|
|
|
|
|
|
|
|
var yFields = SelectedYFields.Count > 0 ? SelectedYFields : new ObservableCollection<FieldItem> { SelectedYField };
|
|
|
|
|
|
|
|
var isMarker = ShowMarkers;
|
|
|
|
|
|
|
|
var isSmoothing = UseSmoothing;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case GraphType.BOX:
|
|
|
|
|
|
|
|
var xFieldBox = SelectedXField;
|
|
|
|
|
|
|
|
var dataFieldBox = SelectedYField;
|
|
|
|
|
|
|
|
var boxGroup = SelectedGroupField;
|
|
|
|
|
|
|
|
var boxWidth = BoxWidth;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case GraphType.SCATTER:
|
|
|
|
|
|
|
|
var xFieldScatter = SelectedXField?.Name == "RecordedTime" ? SelectedXField : null;
|
|
|
|
|
|
|
|
var yFiledScatter = SelectedYField;
|
|
|
|
|
|
|
|
var markerSIze = ScatterMarkerSize;
|
|
|
|
|
|
|
|
var showRegression = ShowRegression;
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void SetGraphType()
|
|
|
|
private void SetGraphType()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
GraphTypes.Clear();
|
|
|
|
GraphTypes.Clear();
|
|
|
|
@ -293,7 +327,11 @@ namespace SmartAquaViewer.ViewModel
|
|
|
|
GroupFieldCandidates.Clear();
|
|
|
|
GroupFieldCandidates.Clear();
|
|
|
|
|
|
|
|
|
|
|
|
// X축: 시간 우선
|
|
|
|
// X축: 시간 우선
|
|
|
|
foreach (var f in AvailableFields) XFieldCandidates.Add(f);
|
|
|
|
foreach (var f in AvailableFields)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
XFieldCandidates.Add(f);
|
|
|
|
|
|
|
|
if (SelectedGraphType == GraphType.LINE || SelectedGraphType == GraphType.STEP) break;
|
|
|
|
|
|
|
|
}
|
|
|
|
SelectedXField = AvailableFields.FirstOrDefault(f => f.DataType == typeof(DateTime))
|
|
|
|
SelectedXField = AvailableFields.FirstOrDefault(f => f.DataType == typeof(DateTime))
|
|
|
|
?? AvailableFields.FirstOrDefault();
|
|
|
|
?? AvailableFields.FirstOrDefault();
|
|
|
|
|
|
|
|
|
|
|
|
|