using DevExpress.Charts.Native;
|
using DevExpress.XtraCharts;
|
using DevExpress.XtraEditors;
|
using IStation.WinFrmUI.Curve;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
|
namespace IStation.WinFrmUI.Monitor
|
{
|
public partial class CurveAnalyzeViewMgrPage : DocumentPage
|
{
|
public CurveAnalyzeViewMgrPage()
|
{
|
InitializeComponent();
|
this.PageTitle.Caption = "曲线分析视图";
|
this.gridView1.SetNormalView();
|
this.gridView1.OptionsView.AllowCellMerge = true;
|
this.gridView1.OptionsView.ShowFooter = true;
|
this.chartControl1.RuntimeHitTesting = true;
|
|
//this.chartControl1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.chartControl1_MouseDown);
|
}
|
|
|
public class CurrentViewModel : Model.CurveAnalyzePoint
|
{
|
public CurrentViewModel() { }
|
public CurrentViewModel(Model.CurveAnalyzePoint rhs) : base(rhs)
|
{
|
this.Round();
|
}
|
}
|
|
private List<CurrentViewModel> _allValidBindingList = null;
|
|
|
private long _monitorDataSourcesId, _curveAnalyzeId;
|
|
//图
|
#region Chart
|
private SwiftPlotDiagram _diagram = null;
|
private Series _seriesQH, _seriesQE, _seriesQP;
|
#endregion
|
|
|
public void Initial(long monitorDataSourcesId, long curveAnalyzeId)
|
{
|
_monitorDataSourcesId = monitorDataSourcesId;
|
_curveAnalyzeId = curveAnalyzeId;
|
|
_diagram = this.chartControl1.Diagram as SwiftPlotDiagram;
|
_diagram.EnableAxisXScrolling = true;
|
_diagram.EnableAxisXZooming = true;
|
_diagram.EnableAxisYScrolling = true;
|
_diagram.EnableAxisYZooming = true;
|
|
|
_seriesQH = this.chartControl1.GetSeriesByName("SeriesQH");
|
_seriesQH.CrosshairLabelPattern = "流量:{A:N0} 扬程:{V:N1}";
|
_seriesQH.View.Color = CurveChartDisplay.PointColorQH;
|
_seriesQH.CrosshairHighlightPoints = DevExpress.Utils.DefaultBoolean.True;
|
|
|
|
_seriesQE = this.chartControl1.GetSeriesByName("SeriesQE");
|
_seriesQE.CrosshairLabelPattern = "流量:{A:N0} 效率:{V:N1}";
|
_seriesQE.View.Color = CurveChartDisplay.PointColorQE;
|
_seriesQE.CrosshairHighlightPoints = DevExpress.Utils.DefaultBoolean.True;
|
|
|
_seriesQP = this.chartControl1.GetSeriesByName("SeriesQP");
|
_seriesQP.CrosshairLabelPattern = "流量:{A:N0} 功率:{V:N0}";
|
_seriesQP.View.Color = CurveChartDisplay.PointColorQP;
|
|
_seriesQP.CrosshairHighlightPoints = DevExpress.Utils.DefaultBoolean.True;
|
|
}
|
|
/// <summary>
|
/// 初始化数据
|
/// </summary>
|
public override void InitialDataSource()
|
{
|
var lays = this.chartControl1.ShowOverlay();
|
_allValidBindingList = new List<CurrentViewModel>();
|
var packets = new BLL.CurveAnalyzePointPacket().GetValid(_monitorDataSourcesId, _curveAnalyzeId);
|
if (packets != null && packets.Any())
|
{
|
_allValidBindingList = packets.SelectMany(x => x.Points).Select(x => new CurrentViewModel(x)).ToList();
|
}
|
|
|
if (_allValidBindingList == null)
|
_allValidBindingList = new List<CurrentViewModel>();
|
this.currentViewModelBindingSource.DataSource = _allValidBindingList;
|
this.gridView1.BestFitColumns();
|
lays.Close();
|
}
|
|
|
//筛选删除 异常流量
|
private void barBtnAbnormalQ_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
if (_allValidBindingList == null || !_allValidBindingList.Any())
|
{
|
XtraMessageBox.Show("无数据!");
|
return;
|
}
|
var timeList = _allValidBindingList.Where(x => x.Q <= 0 || x.Q == 0).Select(x => x.Time).ToList();
|
DeletePoints(timeList);
|
}
|
|
//筛选删除 异常功率
|
private void barBtnAbnormalP_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
if (_allValidBindingList == null || !_allValidBindingList.Any())
|
{
|
XtraMessageBox.Show("无数据!");
|
return;
|
}
|
var timeList = _allValidBindingList.Where(x => x.P == IStation.Error.Default || x.P == 0).Select(x => x.Time).ToList();
|
DeletePoints(timeList);
|
}
|
|
//筛选删除 异常效率
|
private void barBtnAbnormalE_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
if (_allValidBindingList == null || !_allValidBindingList.Any())
|
{
|
XtraMessageBox.Show("无数据!");
|
return;
|
}
|
var timeList = _allValidBindingList.Where(x => x.E == IStation.Error.Default || x.E == 0).Select(x => x.Time).ToList();
|
DeletePoints(timeList);
|
}
|
|
/// <summary>
|
/// 删除点
|
/// </summary>
|
private void DeletePoints(List<DateTime> timeList)
|
{
|
if (timeList == null || timeList.Count < 1)
|
{
|
XtraMessageBox.Show("无数据!");
|
return;
|
}
|
|
var lays = this.chartControl1.ShowOverlay();
|
timeList = timeList.OrderByDescending(x => x).ToList();
|
var result = new BLL.CurveAnalyzePointPacket().SetInvalid(_monitorDataSourcesId, _curveAnalyzeId, timeList);
|
if (!result)
|
{
|
lays.Close();
|
XtraMessageBox.Show("删除失败!");
|
return;
|
}
|
|
var minTime = timeList.Min();
|
var maxTime = timeList.Max();
|
var minIndex = _allValidBindingList.FindIndex(x => x.Time == minTime);
|
var maxIndex = _allValidBindingList.FindIndex(x => x.Time == maxTime);
|
var delIndex = 0;
|
for (int i = maxIndex; i >= minIndex; i--)
|
{
|
var item = _allValidBindingList[i];
|
for (int j = delIndex; j < timeList.Count; j++)
|
{
|
var delItem = timeList[j];
|
if (item.Time == delItem)
|
{
|
_allValidBindingList.RemoveAt(i);
|
delIndex = j++;
|
break;
|
}
|
}
|
}
|
InitialDataSource();
|
lays.Close();
|
}
|
|
|
//无效
|
private void chartControl1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
|
{
|
var hitInfo = this.chartControl1.CalcHitInfo(e.Location);
|
if (e.Button == System.Windows.Forms.MouseButtons.Left)
|
{
|
if (hitInfo.InSeries)
|
{
|
var time = hitInfo.SeriesPoint.DateTimeArgument;
|
var index = _allValidBindingList.FindIndex(x => x.Time == time);
|
this.gridView1.FocusedRowHandle = index;
|
}
|
}
|
|
}
|
|
|
#region 菜单
|
|
//全部展开
|
private void barBtnExpandAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
this.gridView1.ExpandAllGroups();
|
}
|
|
|
//全部折叠
|
private void barBtnCollapseAll_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
this.gridView1.CollapseAllGroups();
|
}
|
|
//检索
|
private void barCekSearch_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
if (this.barCekSearch.Checked)
|
this.gridView1.ShowFindPanel();
|
else
|
this.gridView1.HideFindPanel();
|
}
|
|
// 刷新数据
|
private void barBtnRefresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
|
{
|
InitialDataSource();
|
}
|
|
#endregion
|
|
|
|
|
|
}
|
}
|