72 lines
2.1 KiB
Plaintext
72 lines
2.1 KiB
Plaintext
@using ApexCharts
|
|
@using System.Collections.Generic
|
|
@using PanoptesFrontend.Data;
|
|
@using System
|
|
@using System.Timers
|
|
@implements IDisposable
|
|
@inject IHttpService httpService
|
|
@using PanoptesFrontend.Services
|
|
|
|
|
|
<ApexChart @ref=chart TItem="Stats" Title="@ChartTitle">
|
|
|
|
<ApexPointSeries TItem="Stats"
|
|
Items="@StatsList"
|
|
SeriesType="@SeriesTypes[@SelectedChartType]"
|
|
Name="Gross Value"
|
|
XValue="@(e => e.Label)"
|
|
YValue="@(e => e.Value)"
|
|
OrderByDescending="e=>e.Y" />
|
|
</ApexChart>
|
|
|
|
@code {
|
|
private ApexChart<Stats> chart;
|
|
private bool timerInitialized;
|
|
private Timer timer;
|
|
private Dictionary<string, SeriesType> SeriesTypes = new Dictionary<string, SeriesType>
|
|
{
|
|
{"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<Stats> 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<GraphComponent>($"http://{panoptesHost}/component/{module}/{ChartId}");
|
|
StatsList = response.Stats;
|
|
await chart.UpdateSeriesAsync(true);
|
|
await InvokeAsync(() => StateHasChanged());
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
timer?.Stop();
|
|
timer = null;
|
|
}
|
|
}
|