using Yw.Model;
using Yw.WinFrmUI.Bimface;
namespace HStation.WinFrmUI
{
///
///
///
public class SimulationMarkHelper
{
///
///
///
public SimulationMarkHelper(SimulationVisualListHelper visualListHelper, ISimulationMarkView view)
{
_visualListHelper = visualListHelper;
_views = new List() { view };
}
private SimulationVisualListHelper _visualListHelper = null;//可见列表辅助类
private List _views = null;//视图列表
///
/// 可见性
///
public bool Visible
{
get { return _visible; }
set { _visible = value; }
}
private bool _visible = false;
///
/// 设置列表
///
public List Sets
{
get
{
if (_sets == null)
{
var hydroInfo = _visualListHelper.HydroInfo;
_sets = HydroMarkHelper.GetSetList(hydroInfo);
if (_sets == null)
{
_sets = new List();
}
}
return _sets;
}
set
{
_results = null;
_sets = value;
if (_sets == null)
{
_sets = new List();
}
}
}
private List _sets = null;
///
/// 结果列表
///
public List Results
{
get
{
if (_results == null)
{
_results = HydroMarkHelper.GetResultList(_visualListHelper.HydroInfo, this.Sets);
if (_results == null)
{
_results = new List();
}
}
return _results;
}
set
{
_results = value;
if (_results == null)
{
_results = new List();
}
}
}
private List _results = null;
///
/// 初始化数据
///
public void InitialData()
{
_sets = null;
_results = null;
}
///
/// 设置
///
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());
}
}
///
/// 设置
///
public void Set(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));
}
}
///
/// 设置
///
public void Set(List visuals)
{
if (visuals == null || visuals.Count < 1)
{
return;
}
visuals.ForEach(x => Set(x));
}
}
}