using DevExpress.Skins;
|
using DevExpress.Utils.Extensions;
|
using DevExpress.XtraEditors;
|
using DevExpress.XtraLayout;
|
using DevExpress.XtraLayout.Utils;
|
|
namespace Yw.WinFrmUI
|
{
|
public partial class SetHydroWorkingCtrl : DevExpress.XtraEditors.XtraUserControl
|
{
|
public SetHydroWorkingCtrl()
|
{
|
InitializeComponent();
|
this.layoutControl1.SetupLayoutControl();
|
}
|
|
/// <summary>
|
/// 查看组件事件
|
/// </summary>
|
public event Action<Yw.Model.HydroVisualInfo> HydroViewEvent;
|
|
//水力信息
|
private Yw.Model.HydroModelInfo _hydroInfo = null;
|
//工况
|
private SetHydroWorkingViewModel _hydroWorking = null;
|
//基础控件
|
private SetHydroWorkingBasicCtrl _basicCtrl = null;
|
//可见控件列表
|
private List<ISetHydroWorkingVisualCtrl> _visualCtrlList = null;
|
|
|
/// <summary>
|
/// 绑定数据
|
/// </summary>
|
public void SetBindingData
|
(
|
Yw.Model.HydroModelInfo hydroInfo,
|
List<HydroWorkingVmo> allWorkingList,
|
List<HydroMonitorValueViewModel> allMonitorValueList
|
)
|
{
|
if (hydroInfo == null)
|
{
|
return;
|
}
|
_hydroInfo = hydroInfo;
|
_hydroWorking = new SetHydroWorkingViewModel();
|
var workingNames = allWorkingList?.Select(x => x.Name).Distinct().ToList();
|
_hydroWorking.Name = Yw.Untity.UniqueHelper.CreateFromFirst("工况", workingNames);
|
|
#region 工况信息
|
|
var basicGroup = this.layoutControl1.AddGroup();
|
basicGroup.Text = "工况信息";
|
basicGroup.ExpandButtonVisible = true;
|
basicGroup.Expanded = false;
|
basicGroup.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
|
basicGroup.ExpandOnDoubleClick = true;
|
var basicCtrl = new SetHydroWorkingBasicCtrl();
|
basicCtrl.SetBindingData(_hydroWorking);
|
var basicItem = basicGroup.AddItem("工况信息", basicCtrl);
|
basicItem.TextVisible = false;
|
basicItem.Height = 120;
|
basicGroup.BestFit();
|
basicGroup.LayoutMode = LayoutMode.Regular;
|
basicGroup.AllowBorderColorBlending = true;
|
basicGroup.AppearanceGroup.BorderColor = Color.FromArgb(0, 122, 204);
|
_basicCtrl = basicCtrl;
|
|
#endregion
|
|
_visualCtrlList = new List<ISetHydroWorkingVisualCtrl>();
|
|
#region 水库
|
|
if (hydroInfo.Reservoirs != null && hydroInfo.Reservoirs.Count > 0)
|
{
|
var group = this.layoutControl1.AddGroup();
|
group.Text = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Reservoir);
|
group.ExpandButtonVisible = true;
|
group.Expanded = true;
|
group.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
|
group.ExpandOnDoubleClick = true;
|
foreach (var visual in hydroInfo.Reservoirs)
|
{
|
var visualCtrl = new SetHydroWorkingReservoirCtrl();
|
visualCtrl.HydroViewEvent += x => this.HydroViewEvent?.Invoke(x);
|
var workingInfo = new HydroWorkingReservoirViewModel(visual);
|
_hydroWorking.WorkingInfo.AppendWorking(workingInfo);
|
visualCtrl.SetBindingData(visual, workingInfo);
|
var item = group.AddItem(visual.Name, visualCtrl);
|
item.TextVisible = false;
|
_visualCtrlList.Add(visualCtrl);
|
}
|
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);
|
}
|
}
|
|
#endregion
|
|
#region 水池
|
|
if (hydroInfo.Tanks != null && hydroInfo.Tanks.Count > 0)
|
{
|
var group = this.layoutControl1.AddGroup();
|
group.Text = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Tank);
|
group.ExpandButtonVisible = true;
|
group.Expanded = true;
|
group.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
|
group.ExpandOnDoubleClick = true;
|
foreach (var visual in hydroInfo.Tanks)
|
{
|
var visualCtrl = new SetHydroWorkingTankCtrl();
|
visualCtrl.HydroViewEvent += x => this.HydroViewEvent?.Invoke(x);
|
var workingInfo = new HydroWorkingTankViewModel(visual);
|
_hydroWorking.WorkingInfo.AppendWorking(workingInfo);
|
visualCtrl.SetBindingData(visual, workingInfo);
|
var item = group.AddItem(visual.Name, visualCtrl);
|
item.TextVisible = false;
|
_visualCtrlList.Add(visualCtrl);
|
}
|
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);
|
}
|
}
|
|
#endregion
|
|
#region 水箱
|
|
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 visual in hydroInfo.Waterboxs)
|
{
|
var visualCtrl = new SetHydroWorkingWaterboxCtrl();
|
visualCtrl.HydroViewEvent += x => this.HydroViewEvent?.Invoke(x);
|
var workingInfo = new HydroWorkingWaterboxViewModel(visual);
|
_hydroWorking.WorkingInfo.AppendWorking(workingInfo);
|
visualCtrl.SetBindingData(visual, workingInfo);
|
var item = group.AddItem(visual.Name, visualCtrl);
|
item.TextVisible = false;
|
_visualCtrlList.Add(visualCtrl);
|
}
|
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);
|
}
|
}
|
|
#endregion
|
|
#region 水泵
|
|
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 visual in hydroInfo.Pumps)
|
{
|
var visualCtrl = new SetHydroWorkingPumpCtrl();
|
visualCtrl.HydroViewEvent += x => this.HydroViewEvent?.Invoke(x);
|
var workingInfo = new HydroWorkingPumpViewModel(visual);
|
_hydroWorking.WorkingInfo.AppendWorking(workingInfo);
|
visualCtrl.SetBindingData(visual, workingInfo);
|
var item = group.AddItem(visual.Name, visualCtrl);
|
item.TextVisible = false;
|
_visualCtrlList.Add(visualCtrl);
|
}
|
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);
|
}
|
}
|
|
#endregion
|
|
#region 阀门
|
|
if (hydroInfo.Valves != null && hydroInfo.Valves.Count > 0)
|
{
|
//var group = this.layoutControl1.AddGroup();
|
//group.Text = HydroParterCatalogHelper.GetName(Yw.Hydro.ParterCatalog.Valve);
|
//group.ExpandButtonVisible = true;
|
//group.Expanded = true;
|
//group.HeaderButtonsLocation = DevExpress.Utils.GroupElementLocation.AfterText;
|
//group.ExpandOnDoubleClick = true;
|
//foreach (var visual in hydroInfo.Valves)
|
//{
|
// var visualCtrl = new SetHydroWorkingValveCtrl();
|
// visualCtrl.HydroViewEvent += x => this.HydroViewEvent?.Invoke(x);
|
// var workingInfo = new HydroWorkingValveViewModel(visual);
|
// _hydroWorking.WorkingInfo.AppendWorking(workingInfo);
|
// visualCtrl.SetBindingData(visual, workingInfo);
|
// var item = group.AddItem(visual.Name, visualCtrl);
|
// item.TextVisible = false;
|
// _visualCtrlList.Add(visualCtrl);
|
//}
|
//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);
|
//}
|
}
|
|
#endregion
|
|
#region 监测值
|
|
if (allMonitorValueList != null && allMonitorValueList.Count > 0)
|
{
|
foreach (var monitor in allMonitorValueList)
|
{
|
var vm = new HydroWorkingMonitorViewModel(monitor);
|
_hydroWorking.MonitorInfo.Add(vm);
|
}
|
}
|
|
|
#endregion
|
|
}
|
|
|
/// <summary>
|
/// 获取工况
|
/// </summary>
|
public SetHydroWorkingViewModel GetWorking()
|
{
|
if (_hydroInfo == null)
|
{
|
return default;
|
}
|
if (_hydroWorking == null)
|
{
|
return default;
|
}
|
if (_basicCtrl == null)
|
{
|
return default;
|
}
|
var vm = _basicCtrl.GetBindingData();
|
if (vm == null)
|
{
|
return default;
|
}
|
_visualCtrlList?.ForEach(x => x.GetWorking());
|
return _hydroWorking;
|
}
|
|
|
|
}
|
}
|