using HMI.Core.Api;
using HMI.Core.Entity;
using HMI.Core.Manager;
using HMI.Core.Util;
using HMI.UI.Util;
using Panuon.WPF.UI;
using Plugin.TestResult_WPF.Model;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
namespace Plugin.TestResult_WPF
{
///
/// 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 Chart electricChart;
public InfoWindow(string title, ObservableCollection infos, Chart electricChart, int probeCount)
{
this.title = title;
this.dataSource = infos;
DataContext = this;
Topmost = false;
InitializeComponent();
if (AlarmProbeCount < 0)
{
alarmLabel.Visibility = Visibility.Collapsed;
alarmValue.Visibility = Visibility.Collapsed;
}
UpdateProbeCount(probeCount);
this.electricChart = electricChart;
mainGrid.Children.Add(electricChart);
Grid.SetRow(electricChart, 1);
}
private static int AlarmProbeCount;
static InfoWindow()
{
int probeWarn = -1;
try
{
probeWarn = Convert.ToInt32(ParameterManager.GetCommonParameter>()
.FirstOrDefault(x => x.Name == "ProbeWarn")?.Value);
}
catch (Exception ex)
{
probeWarn = -1;
}
AlarmProbeCount = probeWarn;
}
public event EventHandler ClearProbeCountEvent;
private int probeCount;
public int ProbeCount
{
get => probeCount;
set
{
Set(ref probeCount, value);
}
}
public int ProbeWarn
{
get => AlarmProbeCount;
set { }
}
public void UpdateProbeCount(int count)
{
Dispatcher.Invoke(() =>
{
ProbeCount = count;
if (AlarmProbeCount >= 0)
{
probeCountAlarm.Visibility = (ProbeCount >= AlarmProbeCount) ? 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)
{
electricChart = 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, "确定要清空探针使用次数吗?") == MessageBoxResult.OK)
{
ClearProbeCountEvent?.Invoke(this, null);
}
}
}
}