From 30109b640c414aab0b12a8e625a4d7879b287a27 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Sat, 4 May 2024 14:08:32 +0100 Subject: [PATCH] Put stats charts in carousels. --- Aaru.Server.New/Components/Pages/Stats.razor | 29 ++++++++-- .../Components/Pages/Stats.razor.cs | 56 +++++++++++-------- 2 files changed, 55 insertions(+), 30 deletions(-) diff --git a/Aaru.Server.New/Components/Pages/Stats.razor b/Aaru.Server.New/Components/Pages/Stats.razor index 7f7f49ae..731ed797 100644 --- a/Aaru.Server.New/Components/Pages/Stats.razor +++ b/Aaru.Server.New/Components/Pages/Stats.razor @@ -2,6 +2,7 @@ @using Aaru.CommonTypes.Metadata @using Aaru.Server.Database @using Aaru.Server.Database.Models +@using Blazorise @using Blazorise.Charts @using Blazorise.DataGrid @rendermode InteractiveServer @@ -19,10 +20,20 @@

All operating systems Aaru has run on...

- - - - + + + + + + + + + + + + + + @@ -123,8 +134,14 @@

All devices found...

- - + + + + + + + + diff --git a/Aaru.Server.New/Components/Pages/Stats.razor.cs b/Aaru.Server.New/Components/Pages/Stats.razor.cs index 61828327..4075e325 100644 --- a/Aaru.Server.New/Components/Pages/Stats.razor.cs +++ b/Aaru.Server.New/Components/Pages/Stats.razor.cs @@ -1,9 +1,11 @@ using Aaru.CommonTypes.Interop; using Aaru.CommonTypes.Metadata; using Aaru.Server.Database.Models; +using Blazorise; using Blazorise.Charts; using Microsoft.EntityFrameworkCore; using DbContext = Aaru.Server.Database.DbContext; +using Media = Aaru.Server.Database.Models.Media; using PlatformID = Aaru.CommonTypes.Interop.PlatformID; namespace Aaru.Server.New.Components.Pages; @@ -29,6 +31,7 @@ public partial class Stats PieChart? _devicesByManufacturerChart; List _devicesByManufacturerCounts = []; string[] _devicesByManufacturerLabels = []; + Carousel? _devicesCarousel; PieChart? _filesystemsChart; List _filesystemsCounts = []; string[] _filesystemsLabels = []; @@ -42,11 +45,12 @@ public partial class Stats List _linuxCounts = []; string[] _linuxLabels = []; PieChart? _macosChart; - List _macosCounts = []; - string[] _macosLabels = []; - List _operatingSystemCounts = []; - string[] _operatingSystemLabels = []; + List _macosCounts = []; + string[] _macosLabels = []; + Carousel? _operatingSystemsCarousel; PieChart? _operatingSystemsChart; + List _operatingSystemsCounts = []; + string[] _operatingSystemsLabels = []; PieChart? _partitionsChart; List _partitionsCounts = []; string[] _partitionsLabels = []; @@ -103,13 +107,13 @@ public partial class Stats Count = g.Sum() }); - _operatingSystemLabels = await osQuery.Select(static x => x.Name).ToArrayAsync(); - _operatingSystemCounts = await osQuery.Select(static x => x.Count).ToListAsync(); + _operatingSystemsLabels = await osQuery.Select(static x => x.Name).ToArrayAsync(); + _operatingSystemsCounts = await osQuery.Select(static x => x.Count).ToListAsync(); - for(var i = 0; i < _operatingSystemLabels.Length; i++) + for(var i = 0; i < _operatingSystemsLabels.Length; i++) { - _operatingSystemLabels[i] = - DetectOS.GetPlatformName((PlatformID)Enum.Parse(typeof(PlatformID), _operatingSystemLabels[i])); + _operatingSystemsLabels[i] = + DetectOS.GetPlatformName((PlatformID)Enum.Parse(typeof(PlatformID), _operatingSystemsLabels[i])); } _linuxLabels = await _ctx.OperatingSystems.Where(static o => o.Name == PlatformID.Linux.ToString()) @@ -498,25 +502,29 @@ public partial class Stats #pragma warning disable CS8604 // Possible null reference argument. await - Task.WhenAll(HandleRedraw(_operatingSystemsChart, _operatingSystemLabels, GetOperatingSystemsChartDataset), - HandleRedraw(_linuxChart, _linuxLabels, GetLinuxChartDataset), - HandleRedraw(_macosChart, _macosLabels, GetMacosChartDataset), - HandleRedraw(_windowsChart, _windowsLabels, GetWindowsChartDataset), - HandleRedraw(_versionsChart, _versionsLabels, GetVersionsChartDataset), - HandleRedraw(_commandsChart, _commandsLabels, GetCommandsChartDataset), - HandleRedraw(_filtersChart, _filtersLabels, GetFiltersChartDataset), - HandleRedraw(_formatsChart, _formatsLabels, GetFormatsChartDataset), - HandleRedraw(_partitionsChart, _partitionsLabels, GetPartitionsChartDataset), - HandleRedraw(_filesystemsChart, _filesystemsLabels, GetFilesystemsChartDataset), - HandleRedraw(_virtualMediaChart, _virtualMediaLabels, GetVirtualMediaChartDataset), - HandleRedraw(_realMediaChart, _realMediaLabels, GetRealMediaChartDataset), - HandleRedraw(_devicesByBusChart, _devicesByBusLabels, GetDevicesByBusChartDataset), + Task.WhenAll(HandleRedraw(_operatingSystemsChart, _operatingSystemsLabels, GetOperatingSystemsChartDataset), + HandleRedraw(_linuxChart, _linuxLabels, GetLinuxChartDataset), + HandleRedraw(_macosChart, _macosLabels, GetMacosChartDataset), + HandleRedraw(_windowsChart, _windowsLabels, GetWindowsChartDataset), + HandleRedraw(_versionsChart, _versionsLabels, GetVersionsChartDataset), + HandleRedraw(_commandsChart, _commandsLabels, GetCommandsChartDataset), + HandleRedraw(_filtersChart, _filtersLabels, GetFiltersChartDataset), + HandleRedraw(_formatsChart, _formatsLabels, GetFormatsChartDataset), + HandleRedraw(_partitionsChart, _partitionsLabels, GetPartitionsChartDataset), + HandleRedraw(_filesystemsChart, _filesystemsLabels, GetFilesystemsChartDataset), + HandleRedraw(_virtualMediaChart, _virtualMediaLabels, GetVirtualMediaChartDataset), + HandleRedraw(_realMediaChart, _realMediaLabels, GetRealMediaChartDataset), + HandleRedraw(_devicesByBusChart, _devicesByBusLabels, GetDevicesByBusChartDataset), HandleRedraw(_devicesByManufacturerChart, _devicesByManufacturerLabels, GetDevicesByManufacturerChartDataset)); - } #pragma warning restore CS8604 // Possible null reference argument. + // Upstream: https://github.com/Megabit/Blazorise/issues/5491 + _operatingSystemsCarousel.Interval = 5000; + _devicesCarousel.Interval = 5000; + } + static async Task HandleRedraw( BaseChart chart, string[] labels, Func getDataSet) where TDataSet : ChartDataset where TOptions : ChartOptions where TModel : ChartModel @@ -529,7 +537,7 @@ public partial class Stats PieChartDataset GetOperatingSystemsChartDataset() => new() { Label = "Operating systems", - Data = _operatingSystemCounts, + Data = _operatingSystemsCounts, BackgroundColor = _backgroundColors, BorderColor = _borderColors, BorderWidth = 1