namespace Yw.WinFrmUI
{
///
/// 管段属性视图
///
public class HydroLinkViewModel : HydroVisualViewModel, IHydroCalcuLinkResult
{
///
///
///
public HydroLinkViewModel() { }
///
///
///
public HydroLinkViewModel(Yw.Model.HydroLinkInfo rhs, Yw.Model.HydroModelInfo hydroInfo) : base(rhs, hydroInfo)
{
this.StartCode = rhs.StartCode;
this.UpdatePropStatus(nameof(this.StartCode), rhs, nameof(rhs.StartCode));
this.EndCode = rhs.EndCode;
this.UpdatePropStatus(nameof(this.EndCode), rhs, nameof(rhs.EndCode));
this.LinkStatus = HydroLinkStatusHelper.GetStatusName(rhs.LinkStatus);
this.UpdatePropStatus(nameof(this.LinkStatus), rhs, nameof(rhs.LinkStatus));
this.Vmo = rhs;
}
///
/// Y流向
///
[Category("拓扑结构")]
[DisplayName("Y流向")]
[HydroFlowDirectionPro]
[PropertyOrder(102)]
[Browsable(false)]
[TypeConverter(typeof(HydroFlowDirectionConverter))]
public override string FlowDirectionY { get; set; }
///
/// 上游节点
///
[Category("拓扑结构")]
[DisplayName("上游节点")]
[PropertyOrder(1001)]
[HydroLinkPro]
[ReadOnly(true)]
[Browsable(true)]
public string StartCode { get; set; }
///
/// 下游节点
///
[Category("拓扑结构")]
[DisplayName("下游节点")]
[PropertyOrder(1002)]
[HydroLinkPro]
[ReadOnly(true)]
[Browsable(true)]
public string EndCode { get; set; }
///
/// 管段状态
///
[Category("数据")]
[DisplayName("管段状态")]
[PropertyOrder(1003)]
[Browsable(true)]
public virtual string LinkStatus { get; set; }
///
/// 流量
///
[Category("计算结果")]
[DisplayName("流量")]
[Display(Name = "流量(m³/h)")]
[PropertyOrder(10001)]
[Browsable(true)]
[DisplayUnit("m³/h")]
[HydroCalcuPro]
[ShowEditor(false)]
public virtual double? CalcuFlow { get; set; }
///
/// 流速
///
[Category("计算结果")]
[DisplayName("流速")]
[Display(Name = "流速(m/s)")]
[PropertyOrder(10002)]
[Browsable(true)]
[DisplayUnit("m/s")]
[HydroCalcuPro]
[ShowEditor(false)]
public virtual double? CalcuVelocity { get; set; }
///
/// 水头损失
///
[Category("计算结果")]
[DisplayName("水头损失")]
[Display(Name = "水头损失(m)")]
[PropertyOrder(10003)]
[Browsable(true)]
[DisplayUnit("m")]
[HydroCalcuPro]
[ShowEditor(false)]
public virtual double? CalcuHeadLoss { get; set; }
///
/// 局部损失
///
[Category("计算结果")]
[DisplayName("局部损失")]
[Display(Name = "局部损失(m)")]
[PropertyOrder(10004)]
[Browsable(true)]
[DisplayUnit("m")]
[HydroCalcuPro]
[ShowEditor(false)]
public virtual double? CalcuMinorLoss { get; set; }
///
/// 沿程损失
///
[Category("计算结果")]
[DisplayName("沿程损失")]
[Display(Name = "沿程损失(m)")]
[PropertyOrder(10005)]
[Browsable(true)]
[DisplayUnit("m")]
[HydroCalcuPro]
[ShowEditor(false)]
public virtual double? CalcuFrictionLoss { get; set; }
///
/// Vmo
///
[Browsable(false)]
public new Yw.Model.HydroLinkInfo Vmo { get; set; }
///
///
///
public override void UpdateProperty()
{
base.UpdateProperty();
this.StartCode = this.Vmo.StartCode;
this.UpdatePropStatus(nameof(this.StartCode), this.Vmo, nameof(this.Vmo.StartCode));
this.EndCode = this.Vmo.EndCode;
this.UpdatePropStatus(nameof(this.EndCode), this.Vmo, nameof(this.Vmo.EndCode));
this.LinkStatus = HydroLinkStatusHelper.GetStatusName(this.Vmo.LinkStatus);
this.UpdatePropStatus(nameof(this.LinkStatus), this.Vmo, nameof(this.Vmo.LinkStatus));
}
///
///
///
public override void UpdateVmoProperty()
{
base.UpdateVmoProperty();
this.Vmo.StartCode = this.StartCode;
this.Vmo.UpdatePropStatus(nameof(this.Vmo.StartCode), this, nameof(this.StartCode));
this.Vmo.EndCode = this.EndCode;
this.Vmo.UpdatePropStatus(nameof(this.Vmo.EndCode), this, nameof(this.EndCode));
this.Vmo.LinkStatus = HydroLinkStatusHelper.GetStatusCode(this.LinkStatus);
this.Vmo.UpdatePropStatus(nameof(this.Vmo.LinkStatus), this, nameof(this.LinkStatus));
}
///
/// 更新计算属性
///
public override void UpdateCalcuProperty(HydroCalcuVisualResult rhs)
{
base.UpdateCalcuProperty(rhs);
if (rhs is HydroCalcuLinkResult calcuLinkProperty)
{
this.CalcuFlow = calcuLinkProperty.CalcuFlow.HasValue ? Math.Round(calcuLinkProperty.CalcuFlow.Value, 1) : null;
this.CalcuVelocity = calcuLinkProperty.CalcuVelocity.HasValue ? Math.Round(calcuLinkProperty.CalcuVelocity.Value, 2) : null;
this.CalcuHeadLoss = calcuLinkProperty.CalcuHeadLoss.HasValue ? Math.Round(calcuLinkProperty.CalcuHeadLoss.Value, 2) : null;
this.CalcuMinorLoss = calcuLinkProperty.CalcuMinorLoss.HasValue ? Math.Round(calcuLinkProperty.CalcuMinorLoss.Value, 4) : null;
this.CalcuFrictionLoss = calcuLinkProperty.CalcuFrictionLoss.HasValue ? Math.Round(calcuLinkProperty.CalcuFrictionLoss.Value, 4) : null;
}
}
}
}