Here is my code:
public MainPage()
{
InitializeComponent();
HtmlPage.RegisterScriptableObject("RadLiveData", this);
this.SetUpRadChart();
this.SetUpXAxis();
this.SetUpPrimaryYAxis();
}
private void SetUpRadChart()
{
RadChart1.DefaultView.ChartArea.NoDataString = "Waiting for data...";
RadChart1.DefaultView.ChartArea.EnableAnimations = true;
RadChart1.DefaultView.ChartArea.AxisY.MajorGridLinesVisibility = Visibility.Visible;
RadChart1.DefaultView.ChartArea.AxisY.MinorGridLinesVisibility = Visibility.Visible;
RadChart1.DefaultView.ChartArea.AxisX.MajorGridLinesVisibility = Visibility.Visible;
RadChart1.DefaultView.ChartLegend.Margin = new Thickness(15, 0, 0, 0);
RadChart1.SamplingSettings.SamplingThreshold = 600;
RadChart1.DefaultView.ChartArea.ZoomScrollSettingsX.ScrollMode = ScrollMode.ScrollAndZoom;
}
private void SetUpXAxis()
{
RadChart1.DefaultView.ChartArea.AxisX.DefaultLabelFormat = "#VAL{hh:mm:ss}";
RadChart1.DefaultView.ChartArea.AxisX.LabelRotationAngle = 45;
RadChart1.DefaultView.ChartArea.AxisX.LabelStep = 2;
RadChart1.DefaultView.ChartArea.AxisX.Title = "Time";
}
private void SetUpPrimaryYAxis()
{
RadChart1.DefaultView.ChartArea.AxisY.AutoRange = false;
RadChart1.DefaultView.ChartArea.AxisY.AddRange(0.0, 100.0, 20);
RadChart1.DefaultView.ChartArea.AxisY.Title = "%";
}
private void SetUpMapping(string name, string units)
{
SeriesMapping mapping = new SeriesMapping();
mapping.LegendLabel = name;
mapping.SeriesDefinition = new LineSeriesDefinition();
(mapping.SeriesDefinition as LineSeriesDefinition).ShowPointMarks = false;
(mapping.SeriesDefinition as LineSeriesDefinition).ShowItemLabels = false;
mapping.ItemMappings.Add(new ItemMapping("Key", DataPointMember.XValue));
mapping.ItemMappings.Add(new ItemMapping("Value", DataPointMember.YValue));
mapping.ItemMappings[1].SamplingFunction = ChartSamplingFunction.KeepExtremes;
RadChart1.SeriesMappings.Add(mapping);
}
private void btnHistory_Click(object sender, RoutedEventArgs e)
{
LiveORNonAJAXwsClient proxy = new LiveORNonAJAXwsClient("basicHttp");
proxy.GetViperChartDataCompleted += new EventHandler<LiveORsvc.GetViperChartDataCompletedEventArgs>(proxy_GetViperChartDataCompleted);
proxy.GetViperChartDataAsync("test", "test");
}
void proxy_GetViperChartDataCompleted(object sender, GetViperChartDataCompletedEventArgs e)
{
if (e.Error == null && e.Result != null)
{
ChannelData readings = e.Result;
RadChart1.SeriesMappings.Clear();
SetUpMapping(readings.ChannelName, readings.Units);
RadChart1.ItemsSource = null;
RadChart1.ItemsSource = readings.DataPoints;
}
}