-
Notifications
You must be signed in to change notification settings - Fork 201
/
Copy pathLiveUpdate.cs
114 lines (101 loc) · 3.09 KB
/
LiveUpdate.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#region Copyright Syncfusion Inc. 2001 - 2016
// Copyright Syncfusion Inc. 2001 - 2016. All rights reserved.
// Use of this code is subject to the terms of our license.
// A copy of the current license can be obtained at any time by e-mailing
// [email protected]. Any infringement will be prosecuted under
// applicable laws.
#endregion
using System;
using Syncfusion.SfChart.iOS;
using System.Drawing;
using System.Threading;
using System.Threading.Tasks;
using System.Collections.ObjectModel;
#if __UNIFIED__
using Foundation;
using UIKit;
using CoreGraphics;
#else
using MonoTouch.Foundation;
using MonoTouch.UIKit;
using MonoTouch.CoreGraphics;
using nint = System.Int32;
using nuint = System.Int32;
using CGSize = System.Drawing.SizeF;
using CGRect = System.Drawing.RectangleF;
#endif
namespace SampleBrowser
{
public class LiveUpdate : SampleView
{
SFChart chart;
SFFastLineSeries series;
SFFastLineSeries series1;
ChartViewModel dataModel;
bool isDisappeared = false;
public LiveUpdate()
{
chart = new SFChart();
SFNumericalAxis primaryAxis = new SFNumericalAxis();
primaryAxis.ShowMajorGridLines = false;
chart.PrimaryAxis = primaryAxis;
SFNumericalAxis secondaryAxis = new SFNumericalAxis();
secondaryAxis.ShowMajorGridLines = false;
secondaryAxis.Minimum = NSObject.FromObject(-1.5);
secondaryAxis.Maximum = NSObject.FromObject(1.5);
secondaryAxis.Interval = NSObject.FromObject(0.5);
chart.SecondaryAxis = secondaryAxis;
dataModel = new ChartViewModel();
series = new SFFastLineSeries();
series.ItemsSource = dataModel.liveData1;
series.XBindingPath = "XValue";
series.YBindingPath = "YValue";
chart.Series.Add(series);
series1 = new SFFastLineSeries();
series1.ItemsSource = dataModel.liveData2;
series1.XBindingPath = "XValue";
series1.YBindingPath = "YValue";
chart.Series.Add(series1);
chart.ColorModel.Palette = SFChartColorPalette.Natural;
this.AddSubview(chart);
}
public override void LayoutSubviews()
{
foreach (var view in this.Subviews)
{
view.Frame = Bounds;
}
base.LayoutSubviews();
}
async void UpdateData()
{
await Task.Delay(10);
if (!isDisappeared)
{
(chart.Series[0].ItemsSource as ObservableCollection<ChartDataModel>).RemoveAt(0);
(chart.Series[0].ItemsSource as ObservableCollection<ChartDataModel>).Add(new ChartDataModel(dataModel.wave1, Math.Sin(dataModel.wave1 * (Math.PI / 180.0))));
dataModel.wave1++;
(chart.Series[1].ItemsSource as ObservableCollection<ChartDataModel>).RemoveAt(0);
(chart.Series[1].ItemsSource as ObservableCollection<ChartDataModel>).Add(new ChartDataModel(dataModel.wave1, Math.Sin(dataModel.wave2 * (Math.PI / 180.0))));
dataModel.wave2++;
UpdateData();
}
}
protected override void Dispose(bool disposing)
{
isDisappeared = disposing;
base.Dispose(disposing);
}
public override void ViewWillAppear()
{
isDisappeared = false;
UpdateData();
base.ViewWillAppear();
}
public override void ViewWillDisappear()
{
isDisappeared = true;
base.ViewWillDisappear();
}
}
}