using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SciChart.Charting.Visuals.RenderableSeries;
using System.ComponentModel;
using System.Windows.Media;
using SciChart.Charting.Model.DataSeries;
using Aitex.Core.Util;
namespace Aitex.Core.UI.View.Smart
{
///
/// Customized line series type
///
public class SmartDataLine : FastLineRenderableSeries, INotifyPropertyChanged
{
public SmartDataLine(string displayName, Color seriesColor, string dbName, bool isVisable)
{
UniqueId = Guid.NewGuid().ToString();
XAxisId = "DefaultAxisId";
YAxisId = "DefaultAxisId";
DataSeries = new XyDataSeries();
DisplayName = displayName;
DbDataName = dbName;
Stroke = seriesColor;
DefaultSeriesColor = seriesColor;
NextQueryTime = DateTime.MinValue;
IsVisible = isVisable;
IsDefaultVisable = isVisable;
}
public DateTime NextQueryTime { get; set; }
public bool IsDefaultVisable { get; set; }
public Color DefaultSeriesColor { get; set; }
public string DbDataName { get; private set; }
public string DisplayName
{
get
{
return DataSeries.SeriesName;
}
set
{
DataSeries.SeriesName = value;
InvokePropertyChanged("DisplayName");
}
}
///
/// series line's thickness
///
public double LineThickness
{
get
{
return StrokeThickness;
}
set
{
var i = Convert.ToInt32(value);
if (i < 1) i = 1;
if (i > 100) i = 100;
StrokeThickness = i;
InvokePropertyChanged("LineThickness");
}
}
///
/// series object's unique id
///
public string UniqueId { get; private set; }
///
/// raw data points
///
public DataItem Points { get; set; }
#region PropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
public void InvokePropertyChanged(string propertyName)
{
PropertyChangedEventArgs eventArgs = new PropertyChangedEventArgs(propertyName);
PropertyChangedEventHandler changed = PropertyChanged;
if (changed != null)
{
changed(this, eventArgs);
}
}
public void InvokePropertyChanged()
{
Type t = this.GetType();
var ps = t.GetProperties();
foreach (var p in ps)
{
InvokePropertyChanged(p.Name);
}
}
#endregion
}
}