namespace Yw.WinFrmUI.Phart
{
public partial class PumpParallelInfoCtrl : DevExpress.XtraEditors.XtraUserControl
{
public PumpParallelInfoCtrl()
{
InitializeComponent();
this.gridView1.SetNormalEditView();
this.gridView2.SetNormalView();
this.repColor.ColorChanged += RepColor_ColorChanged;
this.repColor.ColorAlignment = DevExpress.Utils.HorzAlignment.Center;
this.repColor.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor;
this.repColor.ButtonsStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
this.colRunStatus.OptionsColumn.AllowEdit = false;
this.colRunStatus.OptionsColumn.ReadOnly = false;
this.gridView1.RowCellClick += GridView1_RowCellClick;
}
///
/// 设置曲线
///
public event Action SetEvent;
///
/// 设置曲线信息
///
public event Action SetInfoEvent;
///
/// 添加曲线事件
///
public event Action AddEvent;
///
/// 删除曲线事件
///
public event Action DeleteEvent;
///
/// 设置设计点
///
public event Action SetDesignPointEvent;
///
/// 保存事件
///
public event Action SaveEvent;
private List _all_binding_list = null;
public void SetBindingData(List vm_list, Yw.Geometry.Point2d design_pt = null)
{
_all_binding_list = new List();
if (vm_list != null && vm_list.Any())
{
_all_binding_list = vm_list;
//for (int i = 0; i < vm_list.Count; i++)
//{
// var item = vm_list[i];
// var vm = new PumpSerialParallelInfoViewModel();
// vm.Id = item.Id;
// vm.Name = item.Name;
// vm.Color = item.Color;
// vm.IsBp = item.IsBp;
// vm.RatedSpeed = item.RatedSpeed;
// vm.CurrentSpeed = item.CurrentSpeed;
// vm.CurrentHz = Math.Round(item.CurrentSpeed / item.RatedSpeed * 50, 2);
// vm.Qh = new Geometry.CubicSpline2d(item.Qh);
// vm.Qe = new Geometry.CubicSpline2d(item.Qe);
// vm.Qp = new Geometry.CubicSpline2d(item.Qp);
// vm.ExtendRatio = 100;
// vm.Calc();
// _all_binding_list.Add(vm);
//}
}
this.txtDesignQ.EditValue = design_pt?.X;
this.txtDesignH.EditValue = design_pt?.Y;
this.pumpSerialParallelInfoViewModelBindingSource.DataSource = _all_binding_list;
this.pumpSerialParallelInfoViewModelBindingSource.ResetBindings(false);
this.gridView1.BestFitColumns();
}
public void SetDesignPoint(double flow, double head)
{
this.txtDesignQ.EditValue = flow;
this.txtDesignH.EditValue = head;
}
///
/// 获取
///
public Yw.Geometry.Point2d GetDesignPoint()
{
if (!double.TryParse(this.txtDesignQ.Text, out double x))
{
return default;
}
if (!double.TryParse(this.txtDesignH.Text, out double y))
{
return default;
}
return new Geometry.Point2d(x, y);
}
#region Color
private List _color_array = new List()
{
Color.Red, Color.Blue, Color.Green,Color.DodgerBlue,
Color.Fuchsia, Color.MidnightBlue, Color.Maroon, Color.Aquamarine,
Color.Bisque,Color.BurlyWood
};
///
/// 获取随机颜色
///
///
private Color GetRandomColor(int count)
{
if (count < _color_array.Count)
{
return _color_array[count];
}
var _random = new Random();
int r = _random.Next(1, 256);
int g = _random.Next(1, 256);
int b = _random.Next(1, 256);
return Color.FromArgb(r, g, b);
}
#endregion
//颜色变换
private void RepColor_ColorChanged(object sender, EventArgs e)
{
if (this.gridView1.GetCurrentViewModel(_all_binding_list) is not PumpSerialParallelInfoViewModel vm)
return;
vm.Color = (sender as DevExpress.XtraEditors.ColorEdit).Color;
this.SetInfoEvent?.Invoke(vm.Id, vm.Name, vm.Color);
}
private void GridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e)
{
if (e.Column == this.colRunStatus)
{
var vm = this.gridView1.GetRow(e.RowHandle) as PumpSerialParallelInfoViewModel;
vm.RunStatus = !vm.RunStatus;
this.gridView1.RefreshRow(e.RowHandle);
if (_all_binding_list != null && _all_binding_list.Any())
{
foreach (var item in _all_binding_list)
{
item.QueryH = string.Empty;
item.QueryE = string.Empty;
item.QueryQ = string.Empty;
item.QueryP = string.Empty;
}
}
this.pumpSerialParallelInfoViewModelBindingSource.ResetBindings(false);
if (vm.RunStatus)
{
vm.Calc();
this.AddEvent?.Invoke(vm);
}
else
{
this.DeleteEvent?.Invoke(vm.Id);
}
}
}
//值变换
private void gridView1_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
{
if (e.Column == this.colName)
{
this.pumpSerialParallelInfoViewModelBindingSource.ResetBindings(false);
var vm = this.gridView1.GetRow(e.RowHandle) as PumpSerialParallelInfoViewModel;
this.SetInfoEvent?.Invoke(vm.Id, vm.Name, vm.Color);
}
else
if (e.Column == this.colCurrentHz)
{
this.pumpSerialParallelInfoViewModelBindingSource.ResetBindings(false);
var vm = this.gridView1.GetRow(e.RowHandle) as PumpSerialParallelInfoViewModel;
if (vm.CurrentHz < 10 || vm.CurrentHz > 50)
{
return;
}
vm.Calc();
this.SetEvent?.Invoke(vm.Id, vm.QhCalc, vm.QeCalc, vm.QpCalc);
}
else if (e.Column == this.colExtendRatio)
{
this.pumpSerialParallelInfoViewModelBindingSource.ResetBindings(false);
var vm = this.gridView1.GetRow(e.RowHandle) as PumpSerialParallelInfoViewModel;
vm.Calc();
this.SetEvent?.Invoke(vm.Id, vm.QhCalc, vm.QeCalc, vm.QpCalc);
}
}
///
/// 设置查询信息
///
///
///
public void SetQueryInfo(string id, PumpGroupPt query_pt)
{
if (query_pt == null)
return;
if (_all_binding_list == null || !_all_binding_list.Any())
return;
var vm = _all_binding_list.Find(x => x.Id == id);
if (vm == null)
return;
vm.QueryQ = query_pt.Q > 0 ? $"{query_pt.Q:N1}" : string.Empty;
vm.QueryH = query_pt.H > 0 ? $"{query_pt.H:N1}" : string.Empty;
vm.QueryE = query_pt.E > 0 ? $"{query_pt.E:N1}" : string.Empty;
vm.QueryP = query_pt.P > 0 ? $"{query_pt.P:N1}" : string.Empty;
this.pumpSerialParallelInfoViewModelBindingSource.ResetBindings(false);
}
//设置设计点
private void btnSetDesignPoint_Click(object sender, EventArgs e)
{
if (!double.TryParse(this.txtDesignQ.Text, out double design_q))
return;
if (!double.TryParse(this.txtDesignH.Text, out double design_h))
return;
this.SetDesignPointEvent?.Invoke(design_q, design_h);
}
public List GetRunList()
{
if (_all_binding_list == null || !_all_binding_list.Any())
{
return default;
}
return _all_binding_list.Where(x => x.RunStatus).Select(x => new PumpSerialParallelInfoViewModel(x)).ToList();
}
private void btnSave_Click(object sender, EventArgs e)
{
this.SaveEvent?.Invoke();
}
}
}