@page "/admin" @using ApexCharts
@code { private List Data { get; set; } = new(); private ApexChartOptions Options; private ApexChart ApexChart; private int Counter = 0; private int IndexCounter = 0; protected override void OnInitialized() { Options = new() { Stroke = new() { Curve = new CurveSelections() { Curve.Smooth }, Width = 4 }, Title = new() { Text = "" }, Chart = new() { Toolbar = new() { Show = false }, Animations = new() { Easing = Easing.Linear, DynamicAnimation = new() { Speed = 950 } }, Zoom = new Zoom { Enabled = false }, Height = "100%", Sparkline = new() { Enabled = false } }, Tooltip = new() { Enabled = false }, Xaxis = new() { Range = 20, Tooltip = new() { Enabled = false }, Labels = new() { Show = false }, AxisTicks = new() { Show = false }, AxisBorder = new() { Show = false } }, Yaxis = new(), Series = new(), Grid = new() { Show = false, Padding = new Padding() { Bottom = 0, Left = 0, Right = 0, Top = 0 } }, }; Options.Yaxis.Add(new() { Labels = new() { Show = false, Style = new() { CssClass = "fs-6", Colors = new("#FFFFFF") }, Formatter = $"function (value) {{ return Math.round(value) + ' Users' }}", }, Show = false }); for (int i = 0; i < 20; i++) { IndexCounter++; Data.Add(new MyData { Index = IndexCounter, Value = 0 }); } Task.Run(async () => { await Task.Delay(1000); var random = new Random(); while (true) { var x = random.Next(0, 100); await HandleData(x); await Task.Delay(1000); } }); } public async Task HandleData(int newValue) { if (Counter > 30) { await ApexChart.UpdateSeriesAsync(); Counter = 0; } IndexCounter++; var item = new MyData() { Index = IndexCounter, Value = newValue }; Data.Add(item); if (Data.Count > 30) Data.RemoveAt(0); try { await ApexChart.AppendDataAsync(new[] { item }); } catch (TaskCanceledException) { /* ignore task canceled exception */ } Counter++; } public class MyData { public int Index { get; set; } public int Value { get; set; } } }