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 事件穿透
}
}