using Yw.Model;
|
using Yw.WinFrmUI.Bimface;
|
|
namespace HStation.WinFrmUI
|
{
|
/// <summary>
|
///
|
/// </summary>
|
public class SimulationMarkHelper
|
{
|
/// <summary>
|
///
|
/// </summary>
|
public SimulationMarkHelper(SimulationVisualListHelper visualListHelper, ISimulationMarkView view)
|
{
|
_visualListHelper = visualListHelper;
|
_views = new List<ISimulationMarkView>() { view };
|
}
|
|
private SimulationVisualListHelper _visualListHelper = null;//可见列表辅助类
|
private List<ISimulationMarkView> _views = null;//视图列表
|
|
/// <summary>
|
/// 可见性
|
/// </summary>
|
public bool Visible
|
{
|
get { return _visible; }
|
set { _visible = value; }
|
}
|
private bool _visible = false;
|
|
/// <summary>
|
/// 设置列表
|
/// </summary>
|
public List<HydroMarkSetViewModel> Sets
|
{
|
get
|
{
|
if (_sets == null)
|
{
|
var hydroInfo = _visualListHelper.HydroInfo;
|
_sets = HydroMarkHelper.GetSetList(hydroInfo);
|
if (_sets == null)
|
{
|
_sets = new List<HydroMarkSetViewModel>();
|
}
|
}
|
return _sets;
|
}
|
set
|
{
|
_results = null;
|
_sets = value;
|
if (_sets == null)
|
{
|
_sets = new List<HydroMarkSetViewModel>();
|
}
|
}
|
}
|
private List<HydroMarkSetViewModel> _sets = null;
|
|
/// <summary>
|
/// 结果列表
|
/// </summary>
|
public List<HydroMarkResultViewModel> Results
|
{
|
get
|
{
|
if (_results == null)
|
{
|
_results = HydroMarkHelper.GetResultList(_visualListHelper.HydroInfo, this.Sets);
|
if (_results == null)
|
{
|
_results = new List<HydroMarkResultViewModel>();
|
}
|
}
|
return _results;
|
}
|
set
|
{
|
_results = value;
|
if (_results == null)
|
{
|
_results = new List<HydroMarkResultViewModel>();
|
}
|
}
|
}
|
private List<HydroMarkResultViewModel> _results = null;
|
|
/// <summary>
|
/// 初始化数据
|
/// </summary>
|
public void InitialData()
|
{
|
_sets = null;
|
_results = null;
|
}
|
|
/// <summary>
|
/// 更新
|
/// </summary>
|
public void Update(HydroVisualInfo visual)
|
{
|
if (visual == null)
|
{
|
return;
|
}
|
var result = HydroMarkHelper.GetResult(visual, this.Sets);
|
if (result == null)
|
{
|
return;
|
}
|
this.Results.RemoveAll(x => x.Code == visual.Code);
|
this.Results.Add(result);
|
if (this.Visible)
|
{
|
var leadLabel = new LogicMarkLeadLabel() { Id = result.Code, Text = result.Text, Distance = null };
|
_views?.ForEach(x => x.UpdateLogicMarkLeadLabel(leadLabel));
|
}
|
}
|
|
/// <summary>
|
/// 更新
|
/// </summary>
|
public void Update(List<HydroVisualInfo> visuals)
|
{
|
if (visuals == null || visuals.Count < 1)
|
{
|
return;
|
}
|
visuals.ForEach(x => Update(x));
|
}
|
|
/// <summary>
|
/// 设置
|
/// </summary>
|
public void Set()
|
{
|
if (this.Visible)
|
{
|
var leadLabels = this.Results?.Select(x => new LogicMarkLeadLabel(x.Code, x.Text, null)).ToList();
|
_views?.ForEach(x => x.SetLogicMarkLeadLabels(leadLabels));
|
}
|
else
|
{
|
_views?.ForEach(x => x.ClearLogicMarkLeadLabels());
|
}
|
}
|
|
|
|
}
|
}
|