using Plugin.BurnIn.Constant;
|
using System.ComponentModel;
|
using System.Runtime.CompilerServices;
|
using System.Windows.Controls;
|
|
namespace Plugin.BurnIn
|
{
|
/// <summary>
|
/// InfoTable.xaml 的交互逻辑
|
/// </summary>
|
public partial class InfoTable : UserControl, INotifyPropertyChanged
|
{
|
|
#region ...
|
public event PropertyChangedEventHandler PropertyChanged;
|
|
public virtual void RaisePropertyChanged(string name)
|
{
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
|
}
|
|
public void RaiseAndSetIfchanged<T>(ref T old, T @new, [CallerMemberName] string propertyName = null)
|
{
|
old = @new;
|
if (propertyName != null) RaisePropertyChanged(propertyName);
|
}
|
#endregion
|
|
private double _temperature;
|
public double temperature
|
{
|
get => _temperature;
|
set
|
{
|
RaiseAndSetIfchanged(ref _temperature, value);
|
RaisePropertyChanged("temperatureStr");
|
}
|
}
|
|
public string temperatureStr
|
{
|
get => $"{_temperature.ToString("f2")}℃";
|
}
|
|
private string _status;
|
public string status
|
{
|
get => _status;
|
set
|
{
|
RaiseAndSetIfchanged(ref _status, value);
|
RaisePropertyChanged("statusStr");
|
}
|
}
|
|
public string statusStr
|
{
|
get => status != null && CommonStatus.STATUS_MAP.ContainsKey(status) ? CommonStatus.STATUS_MAP[status] : "";
|
}
|
|
private int _okCount;
|
public int okCount
|
{
|
get => _okCount;
|
set
|
{
|
RaiseAndSetIfchanged(ref _okCount, value);
|
}
|
}
|
|
private int _ngCount;
|
|
public int ngCount
|
{
|
get => _ngCount;
|
set
|
{
|
RaiseAndSetIfchanged(ref _ngCount, value);
|
}
|
}
|
|
private int _allCount;
|
|
public int allCount
|
{
|
get => _allCount;
|
set
|
{
|
RaiseAndSetIfchanged(ref _allCount, value);
|
}
|
}
|
|
public string countStr
|
{
|
get => $"OK:{okCount},NG:{ngCount},ALL:{allCount}";
|
}
|
|
private string _startTimeStr;
|
public string startTimeStr
|
{
|
get => _startTimeStr;
|
set
|
{
|
RaiseAndSetIfchanged(ref _startTimeStr, value);
|
}
|
}
|
|
private double _consumeTime;
|
public double consumeTime
|
{
|
get => _consumeTime;
|
set
|
{
|
RaiseAndSetIfchanged(ref _consumeTime, value);
|
}
|
}
|
|
private double? _leftTime;
|
public double? leftTime
|
{
|
get => _leftTime;
|
set
|
{
|
RaiseAndSetIfchanged(ref _leftTime, value);
|
}
|
}
|
|
public string consumeTimeStr
|
{
|
get
|
{
|
var str1 = ConvertDurtion(consumeTime);
|
if (leftTime != null)
|
{
|
str1 += $"/{ConvertDurtion(leftTime.Value)}";
|
}
|
return str1;
|
}
|
}
|
|
private string ConvertDurtion(double seconds)
|
{
|
if (seconds <= 0)
|
{
|
return "0s";
|
}
|
if (seconds <= 60)
|
{
|
return $"{seconds.ToString("f2")}s";
|
}
|
else if (seconds <= 3600)
|
{
|
var min = Math.Floor(seconds / 60);
|
seconds = seconds % 60;
|
if (seconds > 0)
|
{
|
return $"{min}m{seconds.ToString("f2")}s";
|
}
|
return $"{min}m";
|
}
|
else
|
{
|
var hour = Math.Floor(seconds / 3600);
|
var min = Math.Floor((seconds % 3600) / 60);
|
seconds = seconds % 60;
|
if (seconds > 0)
|
{
|
return $"{hour}h{min}m{seconds.ToString("f2")}s";
|
}
|
return $"{hour}h{min}m";
|
}
|
}
|
|
private string _endTimeStr;
|
|
public string endTimeStr
|
{
|
get => _endTimeStr;
|
set => RaiseAndSetIfchanged(ref _endTimeStr, value);
|
}
|
|
public void UpdateNumber(int ok, int ng)
|
{
|
this._okCount = ok;
|
this._ngCount = ng;
|
this._allCount = this._okCount + this._ngCount;
|
RaisePropertyChanged("countStr");
|
}
|
|
public void UpdateConsumeTime(double consumeTime, double? leftTime)
|
{
|
this.consumeTime = consumeTime;
|
this.leftTime = leftTime;
|
RaisePropertyChanged("consumeTimeStr");
|
}
|
|
public InfoTable()
|
{
|
this.DataContext = this;
|
InitializeComponent();
|
}
|
}
|
}
|