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 _working = 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;
|
_working = new SetHydroWorkingViewModel(hydroInfo, allWorkingList, allMonitorValueList);
|
_visualCtrlList = new List<ISetHydroWorkingVisualCtrl>();
|
|
#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
|
|
#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);
|
_working.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 水池
|
|
var tanks = hydroInfo.GetAllTanks();
|
if (tanks != null && 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 tanks)
|
{
|
var visualCtrl = new SetHydroWorkingTankCtrl();
|
visualCtrl.HydroViewEvent += x => this.HydroViewEvent?.Invoke(x);
|
var workingInfo = new HydroWorkingTankViewModel(visual);
|
_working.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);
|
_working.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)
|
{
|
foreach (var visual in hydroInfo.Valves)
|
{
|
var workingInfo = new HydroWorkingValveViewModel(visual);
|
_working.WorkingInfo.AppendWorking(workingInfo);
|
}
|
}
|
|
#endregion
|
|
#region 阻件
|
|
var resistances = hydroInfo.GetAllResistances();
|
if (resistances != null && resistances.Count > 0)
|
{
|
foreach (var visual in resistances)
|
{
|
var workingInfo = new HydroWorkingResistanceViewModel(visual);
|
_working.WorkingInfo.AppendWorking(workingInfo);
|
}
|
}
|
|
#endregion
|
|
}
|
|
|
/// <summary>
|
/// 获取工况
|
/// </summary>
|
public SetHydroWorkingViewModel GetWorking()
|
{
|
if (_hydroInfo == null)
|
{
|
return default;
|
}
|
if (_working == null)
|
{
|
return default;
|
}
|
_visualCtrlList?.ForEach(x => x.GetWorking());
|
return _working;
|
}
|
|
|
|
}
|
}
|