// add your additional code here @using Syncfusion.Blazor.Data @using Syncfusion.Blazor.Charts @using System.Collections.ObjectModel @using System.Threading <SfChart EnableAnimation="true" DataSource="@_data" EnableCanvas="true"> <ChartPrimaryXAxis ValueType="Syncfusion.Blazor.Charts.ValueType.DateTime" IntervalType="IntervalType.Seconds"></ChartPrimaryXAxis> <ChartPrimaryYAxis ValueType="Syncfusion.Blazor.Charts.ValueType.Double" StartFromZero="false"> </ChartPrimaryYAxis> <ChartSeriesCollection> <ChartSeries XName="TimeStamp" YName="Y" Type="ChartSeriesType.Line"> </ChartSeries> </ChartSeriesCollection> </SfChart>
@code { public class ChartData { public DateTime TimeStamp { get; set; } public double Y { get; set; } } private ObservableCollection<ChartData> _data = new ObservableCollection<ChartData>() { }; private Timer _timer; private readonly Random _random = new Random(); private async void AddData(object? state) { await InvokeAsync(() => { if (_data.Count >= 60) { _data.RemoveAt(0); } _data.Add(new ChartData() { TimeStamp = DateTime.UtcNow, Y = _random.NextDouble() }); base.StateHasChanged(); }); } protected override void OnInitialized() { _timer = new Timer(AddData, null, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1)); base.OnInitialized(); } } |
|
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.20/lodash.min.js"></script>
</head> |