@page "/arbitrage/lastprice" <h2>Last Price Arbitrageh2> <br /> <div id="ControlRegion"> <SfChart @ref="LastPriceArbitrageChart"> <ChartPrimaryXAxis Title="Time" ValueType="Syncfusion.Blazor.Charts.ValueType.DateTime" IntervalType="IntervalType.Hours" Minimum="DateTime.UtcNow.AddDays(-1)" Maximum="DateTime.UtcNow.AddDays(1)" RangePadding="ChartRangePadding.None"> ChartPrimaryXAxis> <ChartPrimaryYAxis Title="Arbitrage %" Minimum="0.5" Maximum="2.0"> ChartPrimaryYAxis> <ChartSeriesCollection> ChartSeriesCollection> <ChartTooltipSettings Enable="false">ChartTooltipSettings> <ChartCrosshairSettings Enable="false">ChartCrosshairSettings> <ChartZoomSettings EnableSelectionZooming="false">ChartZoomSettings> SfChart> div> <style> .ulstyle { margin: 0px; padding-left: 20px; display: inline-block; } .list { float: left; line-height: 20px; margin: 10px; min-width: 200px; } style> @code{ public ObservableCollection<Tuple<DateTime, decimal>> TestSeries = new ObservableCollection<Tuple<DateTime, decimal>>(); public SfChart LastPriceArbitrageChart { get; set; } protected override void OnAfterRender(bool firstRender) { if (firstRender) { TestSeries.Add(new Tuple<DateTime, decimal>(DateTime.UtcNow.AddHours(-5), (decimal)1.0)); TestSeries.Add(new Tuple<DateTime, decimal>(DateTime.UtcNow.AddHours(-4), (decimal)1.2)); TestSeries.Add(new Tuple<DateTime, decimal>(DateTime.UtcNow.AddHours(-3), (decimal)1.5)); TestSeries.Add(new Tuple<DateTime, decimal>(DateTime.UtcNow.AddHours(-2), (decimal)1.2)); TestSeries.Add(new Tuple<DateTime, decimal>(DateTime.UtcNow.AddHours(-1), (decimal)0.6)); TestSeries.Add(new Tuple<DateTime, decimal>(DateTime.UtcNow.AddHours(0), (decimal)0.9)); TestSeries.Add(new Tuple<DateTime, decimal>(DateTime.UtcNow.AddHours(1), (decimal)1.0)); TestSeries.Add(new Tuple<DateTime, decimal>(DateTime.UtcNow.AddHours(2), (decimal)1.7)); TestSeries.Add(new Tuple<DateTime, decimal>(DateTime.UtcNow.AddHours(3), (decimal)1.5)); TestSeries.Add(new Tuple<DateTime, decimal>(DateTime.UtcNow.AddHours(4), (decimal)1.2)); TestSeries.Add(new Tuple<DateTime, decimal>(DateTime.UtcNow.AddHours(5), (decimal)1.3)); // create a fake datapoint so we can programmatically set the correct XName and YName from the Tuple var fakeDatapoint = new Tuple<DateTime, decimal>(DateTime.UtcNow, (decimal)1.0); // create a new chart series and connect it to the new observable collection ChartSeries testSeries = new ChartSeries() { Name = nameof(TestSeries), Type = ChartSeriesType.Line, DataSource = TestSeries, XName = nameof(fakeDatapoint.Item1), YName = nameof(fakeDatapoint.Item2), Animation = new ChartSeriesAnimation { Enable = false } }; LastPriceArbitrageChart.AddSeries(testSeries); } } }
Here's the result:
|
@using Syncfusion.Blazor.Charts
@using System.Collections.ObjectModel;
<SfChart @ref="LastPriceArbitrageChart"> // add your additional code here
<ChartSeriesCollection></ChartSeriesCollection> // add your additional code here</SfChart>
@code{
public ObservableCollection<Tuple<DateTime, decimal>> TestSeries = new ObservableCollection<Tuple<DateTime, decimal>>();
public SfChart LastPriceArbitrageChart { get; set; }
List<string> EventType = new List<string>();
protected override async Task OnAfterRenderAsync(bool firstRender)
{
await Task.Delay(1000);
if (firstRender)
{ // add your additional code here
ObservableCollection<ChartSeries> testSeries = new ObservableCollection<ChartSeries>();
testSeries.Add(new ChartSeries
{
Name = nameof(TestSeries),
Type = ChartSeriesType.Line,
DataSource = TestSeries,
XName = nameof(fakeDatapoint.Item1),
YName = nameof(fakeDatapoint.Item2),
Animation = new ChartSeriesAnimation { Enable = false }
});
this.LastPriceArbitrageChart.AddSeries(testSeries);
}
} }
|