using HMI.Core.Util;
using HMI.UI.Util;
using Panuon.WPF.UI;
using Plugin.BurnIn.Model;
using System.Collections.ObjectModel;
using System.Windows;
using System.Windows.Controls;
namespace Plugin.BurnIn
{
///
/// InfoWindow.xaml 的交互逻辑
///
public partial class InfoWindow : WindowX
{
private string _title;
public string title
{
get => _title;
set => Set(ref _title, value);
}
private ObservableCollection _dataSource;
public ObservableCollection dataSource
{
get => _dataSource == null ? new ObservableCollection() : _dataSource;
set => Set(ref _dataSource, value);
}
private LiveChart waterChart;
private LiveChart electricChart;
private LiveChart vChart;
//public InfoWindow(string title, ObservableCollection infos, Chart waterChart, Chart electricChart, Chart vChart, int probeCount, int probeWarn)
//{
// this.title = title;
// this.dataSource = infos;
// DataContext = this;
// Topmost = false;
// this.ProbeWarn = probeWarn;
// InitializeComponent();
// UpdateProbeCount(probeCount,probeWarn);
// if (waterChart != null)
// {
// this.waterChart = waterChart;
// mainGrid.Children.Add(waterChart);
// Grid.SetRow(waterChart, 1);
// }
// this.electricChart = electricChart;
// mainGrid.Children.Add(electricChart);
// Grid.SetRow(electricChart, 2);
// this.vChart = vChart;
// mainGrid.Children.Add(vChart);
// Grid.SetRow(vChart, 3);
//}
public InfoWindow(string title, ObservableCollection infos, LiveChart[] charts, int probeCount, int probeWarn)
{
this.title = title;
this.dataSource = infos;
DataContext = this;
Topmost = false;
this.ProbeWarn = probeWarn;
InitializeComponent();
UpdateProbeCount(probeCount, probeWarn);
int row = 1;
foreach (var chart in charts)
{
if (chart == null) return;
mainGrid.Children.Add(chart);
Grid.SetRow(chart, row++);
}
//if (waterChart != null)
//{
// this.waterChart = waterChart;
// mainGrid.Children.Add(waterChart);
// Grid.SetRow(waterChart, 1);
//}
//this.electricChart = electricChart;
//mainGrid.Children.Add(electricChart);
//Grid.SetRow(electricChart, 2);
//this.vChart = vChart;
//mainGrid.Children.Add(vChart);
//Grid.SetRow(vChart, 3);
}
public event EventHandler ClearProbeCountEvent;
private int probeCount;
public int ProbeCount
{
get => probeCount;
set
{
Set(ref probeCount, value);
}
}
public int ProbeWarn
{
get;
set;
}
public void UpdateProbeCount(int count, int warn)
{
Dispatcher.Invoke(() =>
{
ProbeCount = count;
ProbeWarn = warn;
if (ProbeWarn < 0)
{
alarmLabel.Visibility = Visibility.Collapsed;
alarmValue.Visibility = Visibility.Collapsed;
}
else
{
probeCountAlarm.Visibility = (ProbeCount >= ProbeWarn) ? Visibility.Visible : Visibility.Collapsed;
}
});
}
public void UpdateSource(ObservableCollection infos)
{
this.dataSource = infos;
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
DataContext = this;
}
private void Window_Unloaded(object sender, RoutedEventArgs e)
{
DataContext = null;
}
protected override void OnClosed(EventArgs e)
{
waterChart = null;
electricChart = null;
vChart = null;
mainGrid.Children.Clear();
base.OnClosed(e);
}
private void Window_SizeChanged(object sender, SizeChangedEventArgs e)
{
//if (electricChart != null)
//{
// electricChart.Height = this.ActualHeight * 0.3;
//}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
if (MsgBoxHelper.WarnMessage(this, this.lang("Ts.MakeSureToClearProbeCount")) == MessageBoxResult.OK)
{
ClearProbeCountEvent?.Invoke(this, null);
}
}
}
}