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)); } } }