parent
b92b529ed4
commit
c977410d33
|
@ -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; }
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -231,24 +231,19 @@ namespace MECF.Framework.UI.Client.CenterViews.DataLogs.DataHistory
|
|||
|
||||
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;
|
||||
|
|
Loading…
Reference in New Issue