using DevExpress.Mvvm.Native;
using Yw.Model;
namespace HStation.WinFrmUI
{
///
/// 可见视图列表辅助类
///
public class SimulationVisualVmListHelper
{
///
///
///
public SimulationVisualVmListHelper(SimulationVisualListHelper helper)
{
_helper = helper;
}
private SimulationVisualListHelper _helper = null;//辅助类
private HydroModelInfo _hydroInfo = null;//水力信息
private Dictionary _dict;//字典
///
/// 初始化数据
///
public void InitialData(HydroModelInfo hydroInfo, HydroCalcuResult calcuResult = null)
{
_hydroInfo = hydroInfo;
if (_hydroInfo == null)
{
return;
}
var allVisualDict = _helper.GetVisualDict();
if (allVisualDict != null && allVisualDict.Count > 0)
{
var allCalcuResultVisualDict = calcuResult?.GetVisualDict();
_dict = new Dictionary();
foreach (var visualKeyValue in allVisualDict)
{
var vm = HydroVisualViewModelBuilder.CreateVisualViewModel(visualKeyValue.Value, _hydroInfo);
var calcuVisualResult = allCalcuResultVisualDict?.GetValue(visualKeyValue.Key);
if (calcuVisualResult != null)
{
vm.UpdateCalcuProperty(calcuVisualResult);
}
_dict.Add(visualKeyValue.Key, vm);
}
}
}
///
/// 获取可见视图字典
///
public Dictionary GetVisualDict()
{
if (_hydroInfo == null)
{
return default;
}
return _dict;
}
///
/// 获取可见视图列表
///
public List GetVisualList()
{
if (_hydroInfo == null)
{
return default;
}
return _dict?.Values.ToList();
}
///
/// 获取可见视图
///
public HydroVisualViewModel GetVisual(string code)
{
if (_dict == null || _dict.Count < 1)
{
return default;
}
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()
{
if (_hydroInfo == null)
{
return;
}
if (_dict == null || _dict.Count < 1)
{
return;
}
_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)
{
if (_hydroInfo == null)
{
return;
}
if (_dict == null || _dict.Count < 1)
{
return;
}
var allCalcuResultVisualDict = calcuResult?.GetVisualDict();
foreach (var visualKeyValue in _dict)
{
var calcuVisualResult = allCalcuResultVisualDict?.GetValue(visualKeyValue.Key);
visualKeyValue.Value.UpdateCalcuProperty(calcuVisualResult);
}
}
}
}