using DevExpress.Mvvm.Native;
using Yw.EPAnet;
using Yw.Model;
namespace HStation.WinFrmUI
{
///
/// 可见视图列表辅助类
///
public class SimulationVisualVmListHelper
{
///
///
///
public SimulationVisualVmListHelper(SimulationVisualListHelper visualListHelper, SimulationCalcuResultHelper calcuResultHelper)
{
_visualListHelper = visualListHelper;
_calcuResultHelper = calcuResultHelper;
}
private SimulationVisualListHelper _visualListHelper = null;//可见列表辅助类
private SimulationCalcuResultHelper _calcuResultHelper = null;//计算结果辅助类
private Dictionary _dict;//字典
///
/// 获取可见视图字典
///
public Dictionary GetVisualDict()
{
if (_dict == null)
{
_dict = new Dictionary();
var allVisualDict = _visualListHelper.GetVisualDict();
if (allVisualDict != null && allVisualDict.Count > 0)
{
var allCalcuResultVisualDict = _calcuResultHelper.GetVisualDict();
foreach (var visualKeyValue in allVisualDict)
{
var vm = HydroVisualViewModelBuilder.CreateVisualViewModel(visualKeyValue.Value, _visualListHelper.HydroInfo);
var calcuVisualResult = allCalcuResultVisualDict?.GetValue(visualKeyValue.Key);
if (calcuVisualResult != null)
{
vm.UpdateCalcuProperty(calcuVisualResult);
}
_dict.Add(visualKeyValue.Key, vm);
}
}
}
return _dict;
}
///
/// 获取可见视图列表
///
public List GetVisualList()
{
var dict = GetVisualDict();
return dict.Values.ToList();
}
///
/// 获取可见视图
///
public HydroVisualViewModel GetVisual(string code)
{
if (string.IsNullOrEmpty(code))
{
return default;
}
var dict = GetVisualDict();
if (dict.ContainsKey(code))
{
return dict[code];
}
return default;
}
///
/// 获取可见视图列表
///
public List GetVisualList(List codes)
{
var list = codes?.Select(x => GetVisual(x)).Where(x => x != null).ToList();
return list;
}
///
/// 获取可见视图
///
public HydroVisualViewModel GetVisual(HydroVisualInfo visual)
{
return GetVisual(visual?.Code);
}
///
/// 获取可见视图列表
///
public List GetVisualList(List visualList)
{
return visualList?.Select(x => GetVisual(x)).Where(x => x != null).ToList();
}
///
/// 更新属性
///
public void UpdateProperty()
{
var dict = GetVisualDict();
dict.ForEach(x => x.Value.UpdateProperty());
}
///
/// 更新属性
///
public void UpdateProperty(string code)
{
var visual = GetVisual(code);
visual?.UpdateProperty();
}
///
/// 更新属性
///
public void UpdateProperty(List codes)
{
var visualList = GetVisualList(codes);
visualList?.ForEach(x => x.UpdateProperty());
}
///
/// 更新属性
///
public void UpdateProperty(HydroVisualInfo visual)
{
UpdateProperty(visual?.Code);
}
///
/// 更新属性
///
public void UpdateProperty(List visualList)
{
var codes = visualList?.Select(x => x.Code).Distinct().ToList();
UpdateProperty(codes);
}
///
/// 更新计算属性
///
public void UpdateCalcuProperty(HydroCalcuResult calcuResult)
{
var dict = GetVisualDict();
var allCalcuResultVisualDict = calcuResult?.GetVisualDict();
foreach (var visualKeyValue in dict)
{
var calcuVisualResult = allCalcuResultVisualDict?.GetValue(visualKeyValue.Key);
visualKeyValue.Value.UpdateCalcuProperty(calcuVisualResult);
}
}
}
}