using DevExpress.XtraEditors;
using Yw.Epanet;
using Yw.WinFrmUI.Page;
namespace Yw.WinFrmUI
{
///
///
///
public partial class HydroModelMgrPage : DocumentPage
{
public HydroModelMgrPage()
{
InitializeComponent();
this.gridView1.SetNormalView();
this.gridView1.RegistCustomDrawRowIndicator();
this.PageTitle.Caption = "水力模型";
this.PageTitle.HeaderSvgImage = this.svgImage32[0];
this.PageTitle.SvgImageSize = new Size(24, 24);
}
///
/// 查看模型事件
///
public event Action ViewModelEvent;
///
/// 计算模型事件
///
public event Action CalcuModelEvent;
///
/// 校验模型事件
///
public event Action ValidModelEvent;
private List _allBindingList = null;
//加载数据
private async Task LoadData()
{
var allBindingList = await BLLFactory.Instance.GetAll();
var allBindingRelationList = await BLLFactory.Instance.GetAll();
_allBindingList = new List();
if (allBindingList != null && allBindingList.Count > 0)
{
foreach (var item in allBindingList)
{
var hasRelation = allBindingRelationList == null ? false : allBindingRelationList.Exists(x => x.ModelID == item.ID);
var vm = new HydroModelMgrViewModel(item, hasRelation);
_allBindingList.Add(vm);
}
}
this.hydroModelMgrViewModelBindingSource.DataSource = _allBindingList;
this.hydroModelMgrViewModelBindingSource.ResetBindings(false);
}
///
///初始化数据
///
public override async void InitialDataSource()
{
base.InitialDataSource();
await LoadData();
}
///
/// 刷新数据
///
public override async void RefreshData()
{
base.RefreshData();
await LoadData();
}
///
/// 查看模型
///
protected virtual async void ViewModel(HydroModelVmo vmo)
{
var info = await new Yw.BLL.HydroModelInfo().GetByID(vmo.ID);
var guid = new PageGuid()
{
Modular = "Hydro",
MoudingType = eMoudingType.Tab,
Function = "HydroQ3d",
TagName = info.ID.ToString()
};
if (!IsExistPage(guid, true))
{
//var page = new HydroQ3dViewPage();
//page.SetBindingData(info);
//CreatePage(page, guid);
}
}
///
/// 计算模型
///
protected virtual async void CalcuModel(HydroModelVmo vmo)
{
var info = await new Yw.BLL.HydroModelInfo().GetByID(vmo.ID);
var netWork = Yw.Hydro.ParseHelper.ToNetwork(info);
var list = netWork.CalcuH();
XtraMessageBox.Show(JsonHelper.Object2FormatJson(list));
}
///
/// 校验模型
///
protected virtual async void ValidModel(HydroModelVmo vmo)
{
var info = await new Yw.BLL.HydroModelInfo().GetByID(vmo.ID);
var netWork = Yw.Hydro.ParseHelper.ToNetwork(info);
var result = netWork.Check();
XtraMessageBox.Show(JsonHelper.Object2FormatJson(result));
}
#region 当前
//获取当前视图
private HydroModelMgrViewModel GetCurrentViewModel()
{
if (_allBindingList == null)
{
Yw.WinFrmUI.MessageBoxHelper.ShowError("数据初始化错误!");
return null;
}
if (_allBindingList.Count < 1)
{
Yw.WinFrmUI.MessageBoxHelper.ShowInfo("无数据");
return null;
}
var vm = this.gridView1.GetCurrentViewModel(_allBindingList);
if (vm == null)
{
Yw.WinFrmUI.MessageBoxHelper.ShowInfo("请选择数据行");
return null;
}
return vm;
}
#endregion
#region Ribbon
//添加
private void barBtnAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
}
//编辑
private void barBtnEdit_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
}
//删除
private void barBtnDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
}
//详细信息
private void barBtnDetail_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
}
//模型查看
private void barBtnViewModel_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
var vm = GetCurrentViewModel();
if (vm == null)
{
return;
}
ViewModel(vm.Vmo);
this.ViewModelEvent?.Invoke(vm.Vmo);
}
//模型计算
private void barBtnCalcuModel_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
var vm = GetCurrentViewModel();
if (vm == null)
{
return;
}
CalcuModel(vm.Vmo);
this.CalcuModelEvent?.Invoke(vm.Vmo);
}
//模型校验
private void barBtnValidModel_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
var vm = GetCurrentViewModel();
if (vm == null)
{
return;
}
ValidModel(vm.Vmo);
this.ValidModelEvent?.Invoke(vm.Vmo);
}
//导出inp
private async void barBtnExportInp_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
var vm = GetCurrentViewModel();
if (vm == null)
{
return;
}
var info = await new Yw.BLL.HydroModelInfo().GetByID(vm.ID);
var netWork = Yw.Hydro.ParseHelper.ToNetwork(info);
var result = netWork.ToInpString();
XtraMessageBox.Show(result);
}
//组件
private async void barBtnParter_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
var vm = GetCurrentViewModel();
if (vm == null)
{
return;
}
var info = await new Yw.BLL.HydroModelInfo().GetByID(vm.ID);
var dlg = new HydroVisualListDlg();
dlg.SetBindingData(info);
dlg.Show();
}
//上移
private void barBtnUp_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
}
//下移
private void barBtnDown_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
}
//刷新
private void barBtnRefresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
}
#endregion
private async void barBtnTest_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
var vm = GetCurrentViewModel();
if (vm == null)
{
return;
}
var info = await new Yw.BLL.HydroModelInfo().GetByID(vm.ID);
var guid = new PageGuid()
{
Modular = "Hydro",
MoudingType = eMoudingType.Tab,
Function = "HydroL2d",
TagName = info.ID.ToString()
};
if (!IsExistPage(guid, true))
{
//var page = new HydroL2dViewPage();
//page.SetBindingData(info);
//CreatePage(page, guid);
}
}
}
}