using HStation.WinFrmUI.PhartRelation; using HStation.WinFrmUI.Xhs; using Yw.Model; namespace HStation.WinFrmUI { /// /// 项目模拟属性控件 /// public partial class XhsProjectSimulationPropertyCtrl : DevExpress.XtraEditors.XtraUserControl { public XhsProjectSimulationPropertyCtrl() { InitializeComponent(); this.hydroVisualPropertyCtrl1.MatchingDbEvent += HydroVisualPropertyCtrl1_MatchingDbEvent; this.hydroVisualPropertyCtrl1.SetCurveEvent += HydroVisualPropertyCtrl1_SetCurveEvent; this.hydroVisualPropertyCtrl1.SetPatternEvent += HydroVisualPropertyCtrl1_SetPatternEvent; this.hydroVisualPropertyCtrl1.HydroViewEvent += HydroVisualPropertyCtrl1_HydroViewEvent; this.hydroVisualPropertyCtrl1.BlinkLinkNodeEvent += HydroVisualPropertyCtrl1_BlinkLinkNodeEvent; this.hydroVisualPropertyCtrl1.PropertyValueChangedEvent += HydroVisualPropertyCtrl1_PropertyValueChangedEvent; this.hydroVisualPropertyCtrl1.MarkPropertyValueChangedEvent += HydroVisualPropertyCtrl1_MarkPropertyValueChangedEvent; this.hydroVisualPropertyCtrl1.GradingPropertyValueChangedEvent += HydroPVisualPropertyCtrl1_GradingPropertyValueChangedEvent; this.hydroVisualPropertyCtrl1.FlowEffectPropertyValueChangedEvent += HydroVisualPropertyCtrl1_FlowEffectPropertyValueChangedEvent; } #region 事件集 /// /// 构件查看事件 /// public event Action HydroViewEvent; /// /// 强调连接组件事件 /// 第一个参数为组件 /// 第二个参数为连接节点Code /// public event Action BlinkLinkNodeEvent; /// /// 属性值改变事件 /// public event Action PropertyValueChangedEvent; /// /// 标注属性值改变事件 /// public event Action MarkPropertyValueChangedEvent; /// /// 分级属性值改变事件 /// public event Action GradingPropertyValueChangedEvent; /// /// 水流动画属性值改变事件 /// public event Action FlowEffectPropertyValueChangedEvent; #endregion 事件集 #region 属性赋值 /// /// 选择对象 /// public HydroVisualViewModel SelectedObject { get { return this.hydroVisualPropertyCtrl1.SelectedObject; } set { this.hydroVisualPropertyCtrl1.SelectedObject = value; } } #endregion 属性赋值 #region 属性更新 /// /// 重新载入数据 /// public void UpdateData() { this.hydroVisualPropertyCtrl1?.UpdateData(); } /// /// 更新行,样式不变 /// public void UpdateRows() { this.hydroVisualPropertyCtrl1?.UpdateRows(); } /// /// 更新属性 /// public void UpdateProperty() { var vm = this.hydroVisualPropertyCtrl1.SelectedObject; if (vm == null) { return; } vm.UpdateProperty(); this.hydroVisualPropertyCtrl1.UpdateRows(); } #endregion 属性更新 #region 事件实现 //匹配Db private bool HydroVisualPropertyCtrl1_MatchingDbEvent(HydroVisualViewModel vm) { if (vm == null) { return false; } var bol = false; var catalog = HydroParterCatalogHelper.GetCode(vm.Catalog); switch (catalog) { case Yw.Hydro.ParterCatalog.Pump://水泵 { /* var pumpInfo = vm.HydroInfo.Pumps?.Find(x => x.Code == vm.Code); if (pumpInfo == null) { break; } var input = AssetsMatchingParasHelper.Create(vm.HydroInfo, pumpInfo, null); var dlg = new PumpSingleMatchingDlg(); dlg.SetBindingData(input); dlg.ReloadDataEvent += (output) => { bol = AssetsMatchingParasHelper.Apply(vm.HydroInfo, output); if (bol) { vm.UpdateProperty(); } }; dlg.ShowDialog();*/ } break; case Yw.Hydro.ParterCatalog.Valve://阀门 { /* var valveInfo = vm.HydroInfo.Valves?.Find(x => x.Code == vm.Code); if (valveInfo == null) { break; } var input = AssetsMatchingParasHelper.Create(vm.HydroInfo, valveInfo, null); var dlg = new ValveSingleMatchingDlg(); dlg.SetBindingData(input); dlg.ReloadDataEvent += (rhs) => { bol = AssetsMatchingParasHelper.Apply(vm.HydroInfo, rhs); if (bol) { vm.UpdateProperty(); this.hydroVisualPropertyCtrl1.UpdateRows(); } }; dlg.ShowDialog();*/ } break; case Yw.Hydro.ParterCatalog.Pipe://管道 { } break; case Yw.Hydro.ParterCatalog.Elbow://弯头 { var elbowInfo = vm.HydroInfo.Elbows?.Find(x => x.Code == vm.Code); if (elbowInfo == null) { break; } var input = HydroMatchingHelper.Create(elbowInfo, vm.HydroInfo, null); var dlg = new ElbowSingMatchingDlg(); dlg.SetBindingData(input); dlg.ReloadDataEvent += (output) => { bol = HydroMatchingHelper.Apply(vm.HydroInfo, null, output); if (bol) { vm.UpdateProperty(); this.hydroVisualPropertyCtrl1.UpdateRows(); } }; dlg.ShowDialog(); } break; case Yw.Hydro.ParterCatalog.Threelink://三通 { } break; case Yw.Hydro.ParterCatalog.Fourlink://四通 { } break; default: break; } return bol; } //选择曲线 private bool HydroVisualPropertyCtrl1_SetCurveEvent(HydroVisualViewModel vm, string curveType) { if (vm == null) { return false; } switch (curveType) { case HydroCurve.Pump: { //var pumpInfo = vm.HydroInfo.Pumps?.Find(x => x.Code == vm.Code); //if (pumpInfo == null) //{ // break; //} //var input = AssetsMatchingParasHelper.Create(vm.HydroInfo, pumpInfo, null); //var dlg = new SinglePumpAnalyDlg(); //dlg.SetBindindData(input); //dlg.ReloadDataEvent += (output) => //{ // var bol = AssetsMatchingParasHelper.Apply(vm.HydroInfo, output); // if (bol) // { // vm.UpdateProperty(); // this.hydroVisualPropertyCtrl1.UpdateRows(); // } // return bol; //}; //dlg.ShowDialog(); return true; } case HydroCurve.PumpQH: { return false; } case HydroCurve.PumpQP: { return false; } case HydroCurve.PumpQE: { return false; } case HydroCurve.Valve: { return false; } case HydroCurve.ValveQL: { return false; } default: break; } return false; } //选择模式 private bool HydroVisualPropertyCtrl1_SetPatternEvent(HydroVisualViewModel vm, string patternType) { switch (patternType) { case HydroPattern.Head: { return false; } case HydroPattern.Demand: { return false; } default: break; } return false; } #endregion 事件实现 #region 事件穿透 //构件查看事件 private void HydroVisualPropertyCtrl1_HydroViewEvent(HydroVisualViewModel vm) { this.HydroViewEvent?.Invoke(vm?.Vmo); } //强调连接节点 private void HydroVisualPropertyCtrl1_BlinkLinkNodeEvent(HydroLinkViewModel vm, string linkNodeCode) { if (vm == null) { return; } if (string.IsNullOrEmpty(linkNodeCode)) { return; } this.BlinkLinkNodeEvent?.Invoke(vm?.Vmo, linkNodeCode); } //属性发生改变 private void HydroVisualPropertyCtrl1_PropertyValueChangedEvent(HydroVisualViewModel vm) { this.PropertyValueChangedEvent?.Invoke(vm?.Vmo); } //标注属性发生改变 private void HydroVisualPropertyCtrl1_MarkPropertyValueChangedEvent(HydroVisualViewModel vm) { this.MarkPropertyValueChangedEvent?.Invoke(vm?.Vmo); } //分级属性发生改变 private void HydroPVisualPropertyCtrl1_GradingPropertyValueChangedEvent(HydroVisualViewModel vm) { this.GradingPropertyValueChangedEvent?.Invoke(vm?.Vmo); } //水流动画属性发生改变 private void HydroVisualPropertyCtrl1_FlowEffectPropertyValueChangedEvent(HydroVisualViewModel vm) { this.FlowEffectPropertyValueChangedEvent?.Invoke(vm?.Vmo); } #endregion 事件穿透 } }