diff --git a/Aaru.Server/Components/Pages/Statistics/Devices.razor.cs b/Aaru.Server/Components/Pages/Statistics/Devices.razor.cs index 479b0bf9..6962ebff 100644 --- a/Aaru.Server/Components/Pages/Statistics/Devices.razor.cs +++ b/Aaru.Server/Components/Pages/Statistics/Devices.razor.cs @@ -15,6 +15,7 @@ public partial class Devices List _devicesByManufacturerCounts = []; string[] _devicesByManufacturerLabels = []; Carousel? _devicesCarousel; + bool _isAlreadyInitialized; List DevicesList { get; set; } = []; /// @@ -29,6 +30,15 @@ public partial class Devices .ThenBy(static device => device.Revision) .ThenBy(static device => device.Bus) .ToList(); + } + + /// + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if(_isAlreadyInitialized) return; + + _isAlreadyInitialized = true; + await using DbContext ctx = await DbContextFactory.CreateDbContextAsync(); var data = await ctx.DeviceStats.Select(static d => d.Bus) .Distinct() diff --git a/Aaru.Server/Components/Pages/Statistics/Filesystems.razor.cs b/Aaru.Server/Components/Pages/Statistics/Filesystems.razor.cs index e6966584..89d02df4 100644 --- a/Aaru.Server/Components/Pages/Statistics/Filesystems.razor.cs +++ b/Aaru.Server/Components/Pages/Statistics/Filesystems.razor.cs @@ -10,6 +10,7 @@ public partial class Filesystems PieChart? _filesystemsChart; List _filesystemsCounts = []; string[] _filesystemsLabels = []; + bool _isAlreadyInitialized; List FilesystemsList { get; set; } = []; /// @@ -20,6 +21,15 @@ public partial class Filesystems await using DbContext ctx = await DbContextFactory.CreateDbContextAsync(); FilesystemsList = await ctx.Filesystems.OrderBy(static filesystem => filesystem.Name).ToListAsync(); + } + + /// + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if(_isAlreadyInitialized) return; + + _isAlreadyInitialized = true; + await using DbContext ctx = await DbContextFactory.CreateDbContextAsync(); _filesystemsLabels = await ctx.Filesystems.OrderByDescending(static o => o.Count) .Take(10) diff --git a/Aaru.Server/Components/Pages/Statistics/Filters.razor.cs b/Aaru.Server/Components/Pages/Statistics/Filters.razor.cs index 0a4baa0d..a8b0efe9 100644 --- a/Aaru.Server/Components/Pages/Statistics/Filters.razor.cs +++ b/Aaru.Server/Components/Pages/Statistics/Filters.razor.cs @@ -10,6 +10,7 @@ public partial class Filters PieChart? _filtersChart; List _filtersCounts = []; string[] _filtersLabels = []; + bool _isAlreadyInitialized; List FiltersList { get; set; } = []; /// @@ -20,6 +21,15 @@ public partial class Filters await using DbContext ctx = await DbContextFactory.CreateDbContextAsync(); FiltersList = await ctx.Filters.OrderBy(static filter => filter.Name).ToListAsync(); + } + + /// + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if(_isAlreadyInitialized) return; + + _isAlreadyInitialized = true; + await using DbContext ctx = await DbContextFactory.CreateDbContextAsync(); _filtersLabels = await ctx.Filters.OrderByDescending(static o => o.Count) .Take(10) diff --git a/Aaru.Server/Components/Pages/Statistics/Formats.razor.cs b/Aaru.Server/Components/Pages/Statistics/Formats.razor.cs index e8c93107..5857ffd4 100644 --- a/Aaru.Server/Components/Pages/Statistics/Formats.razor.cs +++ b/Aaru.Server/Components/Pages/Statistics/Formats.razor.cs @@ -10,6 +10,7 @@ public partial class Formats PieChart? _formatsChart; List _formatsCounts = []; string[] _formatsLabels = []; + bool _isAlreadyInitialized; List MediaImages { get; set; } = []; /// @@ -18,7 +19,15 @@ public partial class Formats await base.OnInitializedAsync(); await using DbContext ctx = await DbContextFactory.CreateDbContextAsync(); + } + /// + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if(_isAlreadyInitialized) return; + + _isAlreadyInitialized = true; + await using DbContext ctx = await DbContextFactory.CreateDbContextAsync(); MediaImages = await ctx.MediaFormats.OrderBy(static format => format.Name).ToListAsync(); diff --git a/Aaru.Server/Components/Pages/Statistics/OperatingSystems.razor.cs b/Aaru.Server/Components/Pages/Statistics/OperatingSystems.razor.cs index 60093e83..744c3571 100644 --- a/Aaru.Server/Components/Pages/Statistics/OperatingSystems.razor.cs +++ b/Aaru.Server/Components/Pages/Statistics/OperatingSystems.razor.cs @@ -10,6 +10,7 @@ namespace Aaru.Server.Components.Pages.Statistics; public partial class OperatingSystems { + bool _isAlreadyInitialized; PieChart? _linuxChart; List _linuxCounts = []; string[] _linuxLabels = []; @@ -43,6 +44,17 @@ public partial class OperatingSystems }) .ToListAsync()).OrderBy(static os => os.name) .ToList(); + } + + /// + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if(_isAlreadyInitialized) return; + + _isAlreadyInitialized = true; + + // TODO: Cache real OS name in database, lookups would be much faster + await using DbContext ctx = await DbContextFactory.CreateDbContextAsync(); var osQuery = ctx.OperatingSystems.GroupBy(static x => new { diff --git a/Aaru.Server/Components/Pages/Statistics/Partitions.razor.cs b/Aaru.Server/Components/Pages/Statistics/Partitions.razor.cs index b135fd57..a6eec0f2 100644 --- a/Aaru.Server/Components/Pages/Statistics/Partitions.razor.cs +++ b/Aaru.Server/Components/Pages/Statistics/Partitions.razor.cs @@ -7,6 +7,7 @@ namespace Aaru.Server.Components.Pages.Statistics; public partial class Partitions { + bool _isAlreadyInitialized; PieChart? _partitionsChart; List _partitionsCounts = []; string[] _partitionsLabels = []; @@ -18,6 +19,15 @@ public partial class Partitions await base.OnInitializedAsync(); await using DbContext ctx = await DbContextFactory.CreateDbContextAsync(); + } + + /// + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if(_isAlreadyInitialized) return; + + _isAlreadyInitialized = true; + await using DbContext ctx = await DbContextFactory.CreateDbContextAsync(); PartitionsList = await ctx.Partitions.OrderBy(static partition => partition.Name).ToListAsync(); diff --git a/Aaru.Server/Components/Pages/Statistics/RealMedias.razor.cs b/Aaru.Server/Components/Pages/Statistics/RealMedias.razor.cs index 1b794ddd..4207ebbf 100644 --- a/Aaru.Server/Components/Pages/Statistics/RealMedias.razor.cs +++ b/Aaru.Server/Components/Pages/Statistics/RealMedias.razor.cs @@ -9,6 +9,7 @@ namespace Aaru.Server.Components.Pages.Statistics; public partial class RealMedias { + bool _isAlreadyInitialized; PieChart? _realMediaChart; List _realMediaCounts = []; string[] _realMediaLabels = []; @@ -20,6 +21,15 @@ public partial class RealMedias await base.OnInitializedAsync(); await using DbContext ctx = await DbContextFactory.CreateDbContextAsync(); + } + + /// + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if(_isAlreadyInitialized) return; + + _isAlreadyInitialized = true; + await using DbContext ctx = await DbContextFactory.CreateDbContextAsync(); Media[] realMedias = await ctx.Medias.Where(static o => o.Real) .OrderByDescending(static o => o.Count) diff --git a/Aaru.Server/Components/Pages/Statistics/Versions.razor.cs b/Aaru.Server/Components/Pages/Statistics/Versions.razor.cs index 8192fe4a..0ad0bf3c 100644 --- a/Aaru.Server/Components/Pages/Statistics/Versions.razor.cs +++ b/Aaru.Server/Components/Pages/Statistics/Versions.razor.cs @@ -7,6 +7,7 @@ namespace Aaru.Server.Components.Pages.Statistics; public partial class Versions { + bool _isAlreadyInitialized; PieChart? _versionsChart; List _versionsCounts = []; string[] _versionsLabels = []; @@ -26,6 +27,15 @@ public partial class Versions }) .ToListAsync()).OrderBy(static version => version.name) .ToList(); + } + + /// + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if(_isAlreadyInitialized) return; + + _isAlreadyInitialized = true; + await using DbContext ctx = await DbContextFactory.CreateDbContextAsync(); _versionsLabels = await ctx.Versions.OrderByDescending(static o => o.Count) .Take(10) diff --git a/Aaru.Server/Components/Pages/Statistics/VirtualMedias.razor.cs b/Aaru.Server/Components/Pages/Statistics/VirtualMedias.razor.cs index 5a876532..cfaf0ef1 100644 --- a/Aaru.Server/Components/Pages/Statistics/VirtualMedias.razor.cs +++ b/Aaru.Server/Components/Pages/Statistics/VirtualMedias.razor.cs @@ -9,6 +9,7 @@ namespace Aaru.Server.Components.Pages.Statistics; public partial class VirtualMedias { + bool _isAlreadyInitialized; PieChart? _virtualMediaChart; List _virtualMediaCounts = []; string[] _virtualMediaLabels = []; @@ -20,6 +21,15 @@ public partial class VirtualMedias await base.OnInitializedAsync(); await using DbContext ctx = await DbContextFactory.CreateDbContextAsync(); + } + + /// + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if(_isAlreadyInitialized) return; + + _isAlreadyInitialized = true; + await using DbContext ctx = await DbContextFactory.CreateDbContextAsync(); Media[] virtualMedias = await ctx.Medias.Where(static o => !o.Real) .OrderByDescending(static o => o.Count)