@using ApexCharts @using System.Collections.Generic @using PanoptesFrontend.Data; @using System @using System.Timers @implements IDisposable @inject IHttpService httpService @using PanoptesFrontend.Services @code { private ApexChart chart; private bool timerInitialized; private Timer timer; private Dictionary SeriesTypes = new Dictionary { {"line", SeriesType.Line}, {"area", SeriesType.Area}, {"bar", SeriesType.Bar}, {"pie", SeriesType.Pie}, {"donut", SeriesType.Donut}, {"radial-bar", SeriesType.RadialBar}, }; [Parameter] public string ChartTitle {get; set;} [Parameter] public List StatsList { get; set; } [Parameter] public string SelectedChartType {get; set;} [Parameter] public int ChartId {get; set;} [Parameter] public string module {get; set;} protected override void OnAfterRender(bool firstRender) { if (firstRender && !timerInitialized) { timerInitialized = true; timer = new Timer(5000); timer.Elapsed += async delegate { await UpdateChartSeries(); }; timer.Enabled = true; } } private async Task UpdateChartSeries() { var panoptesHost = Environment.GetEnvironmentVariable("PANOPTESHOST"); var response = await httpService.GetAsync($"http://{panoptesHost}/component/{module}/{ChartId}"); StatsList = response.Stats; await chart.UpdateSeriesAsync(true); await InvokeAsync(() => StateHasChanged()); } public void Dispose() { timer?.Stop(); timer = null; } }