SmartDataLine.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using Abt.Controls.SciChart.Visuals.RenderableSeries;
  6. using System.ComponentModel;
  7. using System.Windows.Media;
  8. using Abt.Controls.SciChart.Model.DataSeries;
  9. using Aitex.Core.Util;
  10. namespace Aitex.Core.UI.View.Smart
  11. {
  12. /// <summary>
  13. /// Customized line series type
  14. /// </summary>
  15. public class SmartDataLine : FastLineRenderableSeries, INotifyPropertyChanged
  16. {
  17. /// <summary>
  18. /// 自定义曲线的构造函数
  19. /// </summary>
  20. /// <param name="seriesName"></param>
  21. /// <param name="dataSource"></param>
  22. public SmartDataLine(string displayName, Color seriesColor, string dbName, bool isVisable)
  23. {
  24. //产生一随机的GUID作为每个曲线的标志号,方便后续对曲线的查找和操作
  25. UniqueId = Guid.NewGuid().ToString();
  26. //if (dataSource.Datas.ContainsKey(dbName))
  27. // Points = dataSource.Datas[dbName];
  28. //_dataSource = dataSource;
  29. //指名x、y坐标轴,此处和xaml文件中定义需一致
  30. XAxisId = "DefaultAxisId";
  31. YAxisId = "DefaultAxisId";
  32. DataSeries = new XyDataSeries<DateTime, float>();
  33. DisplayName = displayName;
  34. DbDataName = dbName;
  35. SeriesColor = seriesColor;
  36. DefaultSeriesColor = seriesColor;
  37. NextQueryTime = DateTime.MinValue;
  38. IsVisible = isVisable;
  39. IsDefaultVisable = isVisable;
  40. }
  41. /// <summary>
  42. /// 下一次获取数据的时间点
  43. /// </summary>
  44. public DateTime NextQueryTime { get; set; }
  45. /// <summary>
  46. /// 是否默认显示
  47. /// </summary>
  48. public bool IsDefaultVisable { get; set; }
  49. /// <summary>
  50. /// 默认的显示颜色
  51. /// </summary>
  52. public Color DefaultSeriesColor { get; set; }
  53. /// <summary>
  54. /// related data source
  55. /// </summary>
  56. //PostgreSqlDataSource _dataSource;
  57. /// <summary>
  58. /// Series Name
  59. /// </summary>
  60. public string DbDataName { get; private set; }
  61. /// <summary>
  62. /// series line's display name
  63. /// </summary>
  64. public string DisplayName
  65. {
  66. get
  67. {
  68. return DataSeries.SeriesName;
  69. }
  70. set
  71. {
  72. DataSeries.SeriesName = value;
  73. InvokePropertyChanged("DisplayName");
  74. }
  75. }
  76. /// <summary>
  77. /// series line's thickness
  78. /// </summary>
  79. public double LineThickness
  80. {
  81. get
  82. {
  83. return StrokeThickness;
  84. }
  85. set
  86. {
  87. var i = Convert.ToInt32(value);
  88. if (i < 1) i = 1;
  89. if (i > 100) i = 100;
  90. StrokeThickness = i;
  91. InvokePropertyChanged("LineThickness");
  92. }
  93. }
  94. /// <summary>
  95. /// series object's unique id
  96. /// </summary>
  97. public string UniqueId { get; private set; }
  98. /// <summary>
  99. /// raw data points
  100. /// </summary>
  101. public DataItem Points { get; set; }
  102. #region PropertyChanged
  103. public event PropertyChangedEventHandler PropertyChanged;
  104. public void InvokePropertyChanged(string propertyName)
  105. {
  106. PropertyChangedEventArgs eventArgs = new PropertyChangedEventArgs(propertyName);
  107. PropertyChangedEventHandler changed = PropertyChanged;
  108. if (changed != null)
  109. {
  110. changed(this, eventArgs);
  111. }
  112. }
  113. public void InvokePropertyChanged()
  114. {
  115. Type t = this.GetType();
  116. var ps = t.GetProperties();
  117. foreach (var p in ps)
  118. {
  119. InvokePropertyChanged(p.Name);
  120. }
  121. }
  122. #endregion
  123. }
  124. }