123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
-
- using System;
- using System.ComponentModel;
- using System.Runtime.CompilerServices;
- using System.Windows.Media;
- using MECF.Framework.UI.Client.ClientBase.Tree;
- using SciChart.Charting.Visuals.RenderableSeries;
- namespace MECF.Framework.UI.Client.ClientBase.Charting
- {
- public class FastLineSeries : FastLineRenderableSeries, INotifyPropertyChanged
- {
- private double _dataFactor = 1.0;
- private double _dataOffset = 0.0;
- public event PropertyChangedEventHandler PropertyChanged;
- #region Constructors
- public FastLineSeries(string dataName)
- : this(dataName, dataName, Colors.Black)
- {
- }
- public FastLineSeries(string dataName, string displayName, Color seriesColor, int? fifoCapacity = null)
- {
- UniqueId = Guid.NewGuid().ToString();
- Stroke = seriesColor;
- IsVisible = true;
- LineThickness = 1.0;
- XAxisId = "DefaultAxisId";
- YAxisId = "DefaultAxisId";
-
- DataFactor = 1.0;
- DataOffset = 0.0;
-
- DataSeries = new FastLineDataSeries()
- {
- SeriesName = dataName,
- FifoCapacity = fifoCapacity,
- Factor = DataFactor,
- Offset = DataOffset
- };
-
- //! 注意目前的程序要求 DataSeries.SeriesName 必须等于 DataName.
- DisplayName = displayName;
- DataName = dataName;
- }
- #endregion
- #region Properties
- public string UniqueId { get; }
- public string DataName { get; }
- public string DisplayName
- {
- get => DataSeries.SeriesName;
- set => DataSeries.SeriesName = value;
- }
- public double LineThickness
- {
- get => StrokeThickness;
- set
- {
- var num = Convert.ToInt32(value);
- if (num < 1)
- num = 1;
- if (num > 100)
- num = 100;
- StrokeThickness = num;
- InvokePropertyChanged();
- }
- }
- public double DataFactor
- {
- get => _dataFactor;
- set
- {
- if (Math.Abs(_dataFactor - value) <= 0.001)
- return;
- _dataFactor = value;
- GetDataSeries().Factor = _dataFactor;
- InvokePropertyChanged();
- UpdateChartSeriesValue();
- }
- }
- public double DataOffset
- {
- get => _dataOffset;
- set
- {
- if (Math.Abs(_dataOffset - value) <= 0.001)
- return;
- _dataOffset = value;
- GetDataSeries().Offset = _dataOffset;
- InvokePropertyChanged();
- UpdateChartSeriesValue();
- }
- }
- public TreeNode BackendParameterNode { get; set; }
- #endregion
- #region Methods
- /// <summary>
- /// 获取XyDataSeries类型的DataSeries对象
- /// </summary>
- /// <returns></returns>
- public FastLineDataSeries GetDataSeries()
- {
- return DataSeries as FastLineDataSeries;
- }
- /// <summary>
- /// /
- /// </summary>
- public void UpdateChartSeriesValue()
- {
- using (DataSeries.SuspendUpdates())
- {
- var ds = GetDataSeries();
- for (var i = 0; i < ds.Count; i++)
- {
- var y = (ds.Metadata[i] as ParameterNodePoint)?.Value;
- 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);
- }
- }
- public void ClearData()
- {
- DataSeries.Clear();
- }
-
-
- private void InvokePropertyChanged([CallerMemberName] string propertyName = "")
- {
- if (string.IsNullOrEmpty(propertyName))
- return;
- PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
- }
- public override string ToString()
- {
- return DataName;
- }
- #endregion
- }
- }
|