DataView基本调试完成,还存在一些小错误和小功能缺失。

查询数据还不太流畅,考虑加入流水线工作模式。
This commit is contained in:
THINKPAD 2022-07-31 00:32:27 +08:00
parent b92b529ed4
commit c977410d33
3 changed files with 49 additions and 29 deletions

View File

@ -46,7 +46,7 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.Core
_isUpdateSuspended = false;
Name = name;
RawData = new List<ParameterNodePoint>();
//RawData = new List<ParameterNodePoint>();
MaxTerminalSelectionAllowed = -1;
ChildNodes = new ParameterNodeCollection(this);
ChildNodes.TerminalNodeSelectionChanged += OnTerminalNodeSelectionChanged;
@ -186,7 +186,7 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.Core
public ParameterNode ParentNode { get; set; }
public List<ParameterNodePoint> RawData { get; }
//public List<ParameterNodePoint> RawData { get; }
public Visibility IsVisibilityParentNode { get; set; }

View File

@ -4,6 +4,7 @@ using System;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Windows.Media;
using SciChart.Charting.Model.Filters;
namespace MECF.Framework.UI.Client.CenterViews.DataLogs.Core
{
@ -29,8 +30,10 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.Core
XAxisId = "DefaultAxisId";
YAxisId = "DefaultAxisId";
var ds = new XyDataSeries<DateTime, double>();
DataSeries = ds;
DataSeries = new XyDataSeries<DateTime, double>
{
SeriesName = dataName
};
DisplayName = displayName;
DataName = dataName;
@ -96,6 +99,12 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.Core
}
}
public double DataMin { get; }
public double DataMax { get; }
public double DataAverage { get; }
#endregion
#region Methods
@ -120,12 +129,13 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.Core
for (var i = 0; i < ds.Count; i++)
{
var y = (ds.Metadata[i] as ParameterNodePoint)?.Value;
if(y == null)
if (y == null)
continue;
ds.Update(i, (double)y * _dataFactor + DataOffset);
}
//var dataSeries = DataSeries as XyDataSeries<DateTime, double>;
//for (var index = 0; index < dataSeries.Count; ++index)
// dataSeries.Update(index, _queueRawData.ElementAt(index).Item2 * _dataFactor + _dataOffset);

View File

@ -228,27 +228,22 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.DataHistory
foreach (var module in selectedModules)
{
var selectedTerminal = module.Flatten(true).Where(x => x.IsSelected == true);
foreach (var terminal in selectedTerminal)
{
terminal.RawData.Clear();
var line2D = new SicFastLineSeries(terminal.FullName)
{
AntiAliasing = true,
ResamplingMode = ResamplingMode.MinMax
};
// 确保当列队未空时不会出错,选择默认黑色。
var color = colorPattern.Any()
? colorPattern.Dequeue()
: Color.FromArgb(255, colorRandom.Next(0, 255), colorRandom.Next(0, 255),
colorRandom.Next(0, 255));
line2D.Stroke = System.Windows.Media.Color.FromRgb(color.R, color.G, color.B);
var ds = line2D.GetDataSeries();
ds.Tag = terminal;
var line2D = new SicFastLineSeries(terminal.FullName)
{
AntiAliasing = true,
ResamplingMode = ResamplingMode.MinMax,
Stroke = System.Windows.Media.Color.FromRgb(color.R, color.G, color.B),
Tag = terminal
};
SelectedData.Add(line2D);
}
@ -266,6 +261,21 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.DataHistory
if (e.Item1 == 100)
{
IsBusy = false;
foreach (var renderableSeries in SelectedData)
{
var series = renderableSeries as SicFastLineSeries;
var dataSeries = series?.GetDataSeries();
if (series?.Tag is ParameterNode parameterNode && dataSeries!= null)
{
parameterNode.MaxValue = ((double)dataSeries.YMax).ToString("F2");
parameterNode.MinValue = ((double)dataSeries.YMin).ToString("F2");
parameterNode.AverageValue =
dataSeries.Metadata.Cast<ParameterNodePoint>().Average(x => x.Value).ToString("F2");
}
}
}
BusyIndicatorContent = e.Item2;
@ -556,7 +566,7 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.DataHistory
var dataSeries = line2D.GetDataSeries();*/
var dataSeries =
dataSeriesList.FirstOrDefault(x => (x.Tag is ParameterNode node) && node.FullName == fullName);
dataSeriesList.FirstOrDefault(x => x.SeriesName == fullName);
if (dataSeries == null)
continue;
@ -564,9 +574,9 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.DataHistory
/*// ParameterNode放在line2D.DataSeries.Tag中而不是line2D.Tag中因为ParameterNode需要从Task中抛给seriesAppendDone
// 进行数据统计但Task中无法访问line2D对象因为跨线程访问问题。
dataSeries.Tag = node;*/
var rawData = (dataSeries.Tag as ParameterNode)?.RawData;
if(rawData == null)
continue;
//var rawData = (dataSeries.Tag as ParameterNode)?.RawData;
//if(rawData == null)
// continue;
#endregion
@ -813,8 +823,8 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.DataHistory
for (var i = 0; i < SelectedData.Count; i++)
{
var points = (((SelectedData[i] as SicFastLineSeries))?.GetDataSeries().Tag as ParameterNode)
?.RawData;
var points = ((SelectedData[i] as SicFastLineSeries))?.GetDataSeries().Metadata
.Cast<ParameterNodePoint>().ToList();
if (points != null)
{
foreach (var p in points)
@ -840,10 +850,11 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.DataHistory
using (_cancellationTokenSource.Token.Register(Thread.CurrentThread.Abort))
{
var csvBuilder = new StringBuilder();
csvBuilder.Append("Time,");
csvBuilder.AppendLine(string.Join(",", columns));
foreach (var tv in timeValue)
{
csvBuilder.Append(tv.Key);
csvBuilder.Append($" {tv.Key:yyyy/MM/dd HH:mm:ss.fff}");
csvBuilder.Append(",");
csvBuilder.AppendLine(string.Join(",", tv.Value));
@ -945,8 +956,7 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.DataHistory
#endif
var node = cp?.GetDataSeries().Tag as ParameterNode;
var points = node?.RawData;
var points = cp?.GetDataSeries().Metadata.Cast<ParameterNodePoint>().ToList();
var csvBuilder = new StringBuilder();
@ -959,14 +969,14 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.DataHistory
{
#if EXPORT_TO_CSV
csvBuilder.AppendLine($"Time,{node.FullName}"); // table header
csvBuilder.AppendLine($"Time,{cp.DataName}"); // table header
#endif
foreach (var p in points)
{
#if EXPORT_TO_CSV
csvBuilder.AppendLine($"{p.Time},{p.Value}");
csvBuilder.AppendLine($" {p.Time:yyyy/MM/dd HH:mm:ss.fff},{p.Value}");
#else
var row = ds.Tables[0].NewRow();
row[0] = p.Time;