@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;
}
}