@page "/admin/statistics" @using Moonlight.App.Models.Misc @using Moonlight.App.Services.Statistics @using Moonlight.App.Database.Entities @using ApexCharts @inject StatisticsViewService StatisticsViewService
@foreach (var charts in Charts.Chunk(2)) {
@foreach (var chart in charts) {
@chart.Header
}
}
@code { private StatisticsTimeSpan StatisticsTimeSpan = StatisticsTimeSpan.Day; private LazyLoader Loader; private List<(string Header, StatisticsData[] Data)> Charts = new(); private int bind { get { return (int) StatisticsTimeSpan; } set { StatisticsTimeSpan = (StatisticsTimeSpan) value; Task.Run(async() => await Loader.Reload()); } } private async Task Load(LazyLoader loader) { Charts.Clear(); Charts.Add(("Servers", StatisticsViewService.GetData("statistics.serversCount", StatisticsTimeSpan))); Charts.Add(("Users", StatisticsViewService.GetData("statistics.usersCount", StatisticsTimeSpan))); Charts.Add(("Domains", StatisticsViewService.GetData("statistics.domainsCount", StatisticsTimeSpan))); Charts.Add(("Databases", StatisticsViewService.GetData("statistics.databasesCount", StatisticsTimeSpan))); Charts.Add(("Websites", StatisticsViewService.GetData("statistics.websitesCount", StatisticsTimeSpan))); } private string FormatDate(DateTime e) { string i2s(int i) { if (i.ToString().Length < 2) return "0" + i; return i.ToString(); } return $"{i2s(e.Day)}.{i2s(e.Month)}.{e.Year} {i2s(e.Hour)}:{i2s(e.Minute)}"; } private ApexChartOptions GenerateOptions() { return new() { Legend = new Legend() { Show = false }, DataLabels = new DataLabels() { Enabled = false }, Xaxis = new XAxis() { Labels = new XAxisLabels() { Show = false } }, Chart = new Chart() { RedrawOnParentResize = true, Toolbar = new Toolbar() { Show = false }, Height = 300 } }; } private async Task OnChartRendered() { } }