using DevExpress.XtraLayout;
using DevExpress.XtraLayout.Utils;
namespace Yw.WinFrmUI
{
public partial class SetHydroWorkingInfoCtrl : DevExpress.XtraEditors.XtraUserControl
{
public SetHydroWorkingInfoCtrl()
{
InitializeComponent();
this.layoutControl1.SetupLayoutControl();
}
///
/// 查看组件事件
///
public event Action HydroViewEvent;
private Yw.Model.HydroModelInfo _hydroInfo = null;//水力信息
private Dictionary _parterWorkingInfoDict = null;//组件与组件工况映射字典
///
/// 绑定数据
///
public void SetBindingData(Yw.Model.HydroModelInfo hydroInfo)
{
_hydroInfo = hydroInfo;
if (_hydroInfo == null)
{
return;
}
_parterWorkingInfoDict = new Dictionary();
//水箱
if (hydroInfo.Waterboxs != null && hydroInfo.Waterboxs.Count > 0)
{
var group = this.layoutControl1.AddGroup();
group.Text = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Waterbox);
group.ExpandButtonVisible = true;
group.Expanded = true;
group.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
group.ExpandOnDoubleClick = true;
foreach (var parter in hydroInfo.Waterboxs)
{
var workingInfoCtrl = new SetHydroWaterboxWorkingInfoCtrl();
workingInfoCtrl.HydroViewEvent += (x) => this.HydroViewEvent?.Invoke(x);
workingInfoCtrl.SetBindingData(parter);
var item = group.AddItem(parter.Name, workingInfoCtrl);
item.TextVisible = false;
_parterWorkingInfoDict.Add(parter, workingInfoCtrl);
}
group.BestFit();
group.LayoutMode = LayoutMode.Flow;
group.AllowBorderColorBlending = true;
group.AppearanceGroup.BorderColor = Color.FromArgb(0, 122, 204);
foreach (LayoutControlItem item in group.Items)
{
item.Size = new Size(200, 80);
}
}
//水泵
if (hydroInfo.Pumps != null && hydroInfo.Pumps.Count > 0)
{
var group = this.layoutControl1.AddGroup();
group.Text = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Pump);
group.ExpandButtonVisible = true;
group.Expanded = true;
group.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
group.ExpandOnDoubleClick = true;
foreach (var parter in hydroInfo.Pumps)
{
var workingInfoCtrl = new SetHydroPumpWorkingInfoCtrl();
workingInfoCtrl.HydroViewEvent += (x) => this.HydroViewEvent?.Invoke(x);
workingInfoCtrl.SetBindingData(parter);
var item = group.AddItem(parter.Name, workingInfoCtrl);
item.TextVisible = false;
_parterWorkingInfoDict.Add(parter, workingInfoCtrl);
}
group.BestFit();
group.LayoutMode = LayoutMode.Flow;
group.AllowBorderColorBlending = true;
group.AppearanceGroup.BorderColor = Color.FromArgb(0, 122, 204);
foreach (LayoutControlItem item in group.Items)
{
item.Size = new Size(200, 100);
}
}
//阀门
//if (hydroInfo.Valves != null && hydroInfo.Valves.Count > 0)
//{
// var group = this.layoutControl1.AddGroup();
// group.Text = HydroParterCatalogHelper.GetCatalogName(Yw.Hydro.ParterCatalog.Valve);
// group.ExpandButtonVisible = true;
// group.Expanded = false;
// group.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
// group.ExpandOnDoubleClick = true;
// foreach (var parter in hydroInfo.Valves)
// {
// var workingInfoCtrl = new SetHydroValveWorkingInfoCtrl();
// workingInfoCtrl.HydroViewEvent += (x) => this.HydroViewEvent?.Invoke(x);
// workingInfoCtrl.SetBindingData(parter);
// var item = group.AddItem(parter.Name, workingInfoCtrl);
// item.TextVisible = false;
// _parterWorkingInfoDict.Add(parter, workingInfoCtrl);
// }
// group.BestFit();
// group.LayoutMode = LayoutMode.Flow;
// group.AllowBorderColorBlending = true;
// group.AppearanceGroup.BorderColor = Color.FromArgb(0, 122, 204);
// foreach (LayoutControlItem item in group.Items)
// {
// item.Size = new Size(200, 100);
// }
//}
///流量计
//if (hydroInfo.Flowmeters != null && hydroInfo.Flowmeters.Count > 0)
//{
// var group = this.layoutControl1.AddGroup();
// group.Text = HydroParterCatalogHelper.GetCatalogName(Yw.Hydro.ParterCatalog.Flowmeter);
// group.ExpandButtonVisible = true;
// group.Expanded = false;
// group.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
// group.ExpandOnDoubleClick = true;
// foreach (var parter in hydroInfo.Flowmeters)
// {
// var workingInfoCtrl = new SetHydroFlowmeterWorkingInfoCtrl();
// workingInfoCtrl.HydroViewEvent += (x) => this.HydroViewEvent?.Invoke(x);
// workingInfoCtrl.SetBindingData(parter);
// var item = group.AddItem(parter.Name, workingInfoCtrl);
// item.TextVisible = false;
// _parterWorkingInfoDict.Add(parter, workingInfoCtrl);
// }
// group.BestFit();
// group.LayoutMode = LayoutMode.Flow;
// group.AllowBorderColorBlending = true;
// group.AppearanceGroup.BorderColor = Color.FromArgb(0, 122, 204);
// foreach (LayoutControlItem item in group.Items)
// {
// item.Size = new Size(200, 80);
// }
//}
//压力表
//if (hydroInfo.Pressmeters != null && hydroInfo.Pressmeters.Count > 0)
//{
// var group = this.layoutControl1.AddGroup();
// group.Text = HydroParterCatalogHelper.GetCatalogName(Yw.Hydro.ParterCatalog.Pressmeter);
// group.ExpandButtonVisible = true;
// group.Expanded = false;
// group.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
// group.ExpandOnDoubleClick = true;
// foreach (var parter in hydroInfo.Pressmeters)
// {
// var workingInfoCtrl = new SetHydroPressmeterWorkingInfoCtrl();
// workingInfoCtrl.HydroViewEvent += (x) => this.HydroViewEvent?.Invoke(x);
// workingInfoCtrl.SetBindingData(parter);
// var item = group.AddItem(parter.Name, workingInfoCtrl);
// item.TextVisible = false;
// _parterWorkingInfoDict.Add(parter, workingInfoCtrl);
// }
// group.BestFit();
// group.LayoutMode = LayoutMode.Flow;
// group.AllowBorderColorBlending = true;
// group.AppearanceGroup.BorderColor = Color.FromArgb(0, 122, 204);
// foreach (LayoutControlItem item in group.Items)
// {
// item.Size = new Size(200, 80);
// }
//}
}
///
/// 更新绑定
///
public void UpdateBindingData(HydroWorkingInfoViewModel workingInfo)
{
if (_hydroInfo == null)
{
return;
}
if (_parterWorkingInfoDict == null || _parterWorkingInfoDict.Count < 1)
{
return;
}
if (workingInfo == null)
{
return;
}
var all = workingInfo.GetAllVisualWorkingInfoList();
if (all == null || all.Count < 1)
{
return;
}
foreach (var item in _parterWorkingInfoDict)
{
var singleWorkingInfo = all.Find(x => x.Code == item.Key.Code);
if (singleWorkingInfo != null)
{
var singleWorkingInfoCtrl = item.Value;
if (singleWorkingInfoCtrl != null)
{
singleWorkingInfoCtrl.UpdateBindingData(singleWorkingInfo);
}
}
}
}
///
/// 获取水力信息
///
public HydroWorkingInfoViewModel GetWorkingInfo()
{
if (_hydroInfo == null)
{
return default;
}
if (_parterWorkingInfoDict == null || _parterWorkingInfoDict.Count < 1)
{
return default;
}
var workingInfo = new HydroWorkingInfoViewModel();
foreach (var item in _parterWorkingInfoDict)
{
var parterWorkingInfoCtrl = item.Value;
if (parterWorkingInfoCtrl != null)
{
var singleWorkingInfo = parterWorkingInfoCtrl.GetWorkingInfo();
if (singleWorkingInfo != null)
{
workingInfo.AppendVisualWorkingInfo(singleWorkingInfo);
}
}
}
return workingInfo;
}
}
}