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; } } }