Change how pages are loaded to prevent multi-load.

This commit is contained in:
2020-06-10 17:31:57 +01:00
parent 0ed1ea4301
commit df59f668d8
30 changed files with 239 additions and 41 deletions

View File

@@ -2,7 +2,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web"> <Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup> <PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework> <TargetFramework>netcoreapp3.1</TargetFramework>
<Version>4.0.0.1611</Version> <Version>4.0.0.1618</Version>
<Company>Canary Islands Computer Museum</Company> <Company>Canary Islands Computer Museum</Company>
<Copyright>Copyright © 2003-2020 Natalia Portillo</Copyright> <Copyright>Copyright © 2003-2020 Natalia Portillo</Copyright>
<Product>Canary Islands Computer Museum Website</Product> <Product>Canary Islands Computer Museum Website</Product>

View File

@@ -31,8 +31,17 @@ namespace Marechai.Pages.Admin
{ {
public partial class BrowserTests public partial class BrowserTests
{ {
bool _loaded;
List<BrowserTest> _tests; List<BrowserTest> _tests;
protected override async Task OnInitializedAsync() => _tests = await Service.GetAsync(); protected override async Task OnAfterRenderAsync(bool firstRender)
{
if(_loaded)
return;
_tests = await Service.GetAsync();
_loaded = true;
StateHasChanged();
}
} }
} }

View File

@@ -35,12 +35,20 @@ namespace Marechai.Pages.Admin
public partial class Companies public partial class Companies
{ {
List<CompanyViewModel> _companies; List<CompanyViewModel> _companies;
CompanyViewModel _currentCompany;
bool _deleteInProgress;
Modal _frmDelete;
bool _loaded;
CompanyViewModel _currentCompany; protected override async Task OnAfterRenderAsync(bool firstRender)
bool _deleteInProgress; {
Modal _frmDelete; if(_loaded)
return;
protected override async Task OnInitializedAsync() => _companies = await Service.GetAsync(); _companies = await Service.GetAsync();
_loaded = true;
StateHasChanged();
}
void ShowModal(int itemId) void ShowModal(int itemId)
{ {

View File

@@ -35,12 +35,20 @@ namespace Marechai.Pages.Admin
public partial class DocumentCompanies public partial class DocumentCompanies
{ {
List<DocumentCompanyViewModel> _companies; List<DocumentCompanyViewModel> _companies;
DocumentCompanyViewModel _currentCompany;
bool _deleteInProgress;
Modal _frmDelete;
bool _loaded;
DocumentCompanyViewModel _currentCompany; protected override async Task OnAfterRenderAsync(bool firstRender)
bool _deleteInProgress; {
Modal _frmDelete; if(_loaded)
return;
protected override async Task OnInitializedAsync() => _companies = await Service.GetAsync(); _companies = await Service.GetAsync();
_loaded = true;
StateHasChanged();
}
void ShowModal(int itemId) void ShowModal(int itemId)
{ {

View File

@@ -36,6 +36,7 @@ namespace Marechai.Pages.Admin
{ {
bool _deleteInProgress; bool _deleteInProgress;
Modal _frmDelete; Modal _frmDelete;
bool _loaded;
List<DocumentPersonViewModel> _people; List<DocumentPersonViewModel> _people;
DocumentPersonViewModel _person; DocumentPersonViewModel _person;
@@ -74,6 +75,14 @@ namespace Marechai.Pages.Admin
void ModalClosing(ModalClosingEventArgs obj) => _person = null; void ModalClosing(ModalClosingEventArgs obj) => _person = null;
protected override async Task OnInitializedAsync() => _people = await Service.GetAsync(); protected override async Task OnAfterRenderAsync(bool firstRender)
{
if(_loaded)
return;
_people = await Service.GetAsync();
_loaded = true;
StateHasChanged();
}
} }
} }

View File

@@ -38,6 +38,7 @@ namespace Marechai.Pages.Admin
Modal _frmDelete; Modal _frmDelete;
GpuViewModel _gpu; GpuViewModel _gpu;
List<GpuViewModel> _gpus; List<GpuViewModel> _gpus;
bool _loaded;
void ShowModal(int itemId) void ShowModal(int itemId)
{ {
@@ -74,6 +75,14 @@ namespace Marechai.Pages.Admin
void ModalClosing(ModalClosingEventArgs obj) => _gpu = null; void ModalClosing(ModalClosingEventArgs obj) => _gpu = null;
protected override async Task OnInitializedAsync() => _gpus = await Service.GetAsync(); protected override async Task OnAfterRenderAsync(bool firstRender)
{
if(_loaded)
return;
_gpus = await Service.GetAsync();
_loaded = true;
StateHasChanged();
}
} }
} }

View File

@@ -38,6 +38,7 @@ namespace Marechai.Pages.Admin
InstructionSetExtension _extension; InstructionSetExtension _extension;
List<InstructionSetExtension> _extensions; List<InstructionSetExtension> _extensions;
Modal _frmDelete; Modal _frmDelete;
bool _loaded;
void ShowModal(int itemId) void ShowModal(int itemId)
{ {
@@ -74,6 +75,14 @@ namespace Marechai.Pages.Admin
void ModalClosing(ModalClosingEventArgs obj) => _extension = null; void ModalClosing(ModalClosingEventArgs obj) => _extension = null;
protected override async Task OnInitializedAsync() => _extensions = await Service.GetAsync(); protected override async Task OnAfterRenderAsync(bool firstRender)
{
if(_loaded)
return;
_extensions = await Service.GetAsync();
_loaded = true;
StateHasChanged();
}
} }
} }

View File

@@ -38,6 +38,7 @@ namespace Marechai.Pages.Admin
Modal _frmDelete; Modal _frmDelete;
InstructionSet _instructionSet; InstructionSet _instructionSet;
List<InstructionSet> _instructionSets; List<InstructionSet> _instructionSets;
bool _loaded;
void ShowModal(int itemId) void ShowModal(int itemId)
{ {
@@ -74,6 +75,14 @@ namespace Marechai.Pages.Admin
void ModalClosing(ModalClosingEventArgs obj) => _instructionSet = null; void ModalClosing(ModalClosingEventArgs obj) => _instructionSet = null;
protected override async Task OnInitializedAsync() => _instructionSets = await Service.GetAsync(); protected override async Task OnAfterRenderAsync(bool firstRender)
{
if(_loaded)
return;
_instructionSets = await Service.GetAsync();
_loaded = true;
StateHasChanged();
}
} }
} }

View File

@@ -38,6 +38,7 @@ namespace Marechai.Pages.Admin
Modal _frmDelete; Modal _frmDelete;
License _license; License _license;
List<License> _licenses; List<License> _licenses;
bool _loaded;
void ShowModal(int itemId) void ShowModal(int itemId)
{ {
@@ -74,6 +75,14 @@ namespace Marechai.Pages.Admin
void ModalClosing(ModalClosingEventArgs obj) => _license = null; void ModalClosing(ModalClosingEventArgs obj) => _license = null;
protected override async Task OnInitializedAsync() => _licenses = await Service.GetAsync(); protected override async Task OnAfterRenderAsync(bool firstRender)
{
if(_loaded)
return;
_licenses = await Service.GetAsync();
_loaded = true;
StateHasChanged();
}
} }
} }

View File

@@ -36,6 +36,7 @@ namespace Marechai.Pages.Admin
{ {
bool _deleteInProgress; bool _deleteInProgress;
Modal _frmDelete; Modal _frmDelete;
bool _loaded;
List<MachineFamilyViewModel> _machineFamilies; List<MachineFamilyViewModel> _machineFamilies;
MachineFamilyViewModel _machineFamily; MachineFamilyViewModel _machineFamily;
@@ -74,6 +75,14 @@ namespace Marechai.Pages.Admin
void ModalClosing(ModalClosingEventArgs obj) => _machineFamily = null; void ModalClosing(ModalClosingEventArgs obj) => _machineFamily = null;
protected override async Task OnInitializedAsync() => _machineFamilies = await Service.GetAsync(); protected override async Task OnAfterRenderAsync(bool firstRender)
{
if(_loaded)
return;
_machineFamilies = await Service.GetAsync();
_loaded = true;
StateHasChanged();
}
} }
} }

View File

@@ -36,6 +36,7 @@ namespace Marechai.Pages.Admin
{ {
bool _deleteInProgress; bool _deleteInProgress;
Modal _frmDelete; Modal _frmDelete;
bool _loaded;
MachineViewModel _machine; MachineViewModel _machine;
List<MachineViewModel> _machines; List<MachineViewModel> _machines;
@@ -74,6 +75,14 @@ namespace Marechai.Pages.Admin
void ModalClosing(ModalClosingEventArgs obj) => _machine = null; void ModalClosing(ModalClosingEventArgs obj) => _machine = null;
protected override async Task OnInitializedAsync() => _machines = await Service.GetAsync(); protected override async Task OnAfterRenderAsync(bool firstRender)
{
if(_loaded)
return;
_machines = await Service.GetAsync();
_loaded = true;
StateHasChanged();
}
} }
} }

View File

@@ -37,9 +37,18 @@ namespace Marechai.Pages.Admin
NewsViewModel _currentNews; NewsViewModel _currentNews;
bool _deleteInProgress; bool _deleteInProgress;
Modal _frmDelete; Modal _frmDelete;
bool _loaded;
List<NewsViewModel> _news; List<NewsViewModel> _news;
protected override async Task OnInitializedAsync() => _news = await Service.GetAsync(); protected override async Task OnAfterRenderAsync(bool firstRender)
{
if(_loaded)
return;
_news = await Service.GetAsync();
_loaded = true;
StateHasChanged();
}
void ShowModal(int itemId) void ShowModal(int itemId)
{ {

View File

@@ -36,6 +36,7 @@ namespace Marechai.Pages.Admin
{ {
bool _deleteInProgress; bool _deleteInProgress;
Modal _frmDelete; Modal _frmDelete;
bool _loaded;
List<PersonViewModel> _people; List<PersonViewModel> _people;
PersonViewModel _person; PersonViewModel _person;
@@ -74,6 +75,14 @@ namespace Marechai.Pages.Admin
void ModalClosing(ModalClosingEventArgs obj) => _person = null; void ModalClosing(ModalClosingEventArgs obj) => _person = null;
protected override async Task OnInitializedAsync() => _people = await Service.GetAsync(); protected override async Task OnAfterRenderAsync(bool firstRender)
{
if(_loaded)
return;
_people = await Service.GetAsync();
_loaded = true;
StateHasChanged();
}
} }
} }

View File

@@ -36,6 +36,7 @@ namespace Marechai.Pages.Admin
{ {
bool _deleteInProgress; bool _deleteInProgress;
Modal _frmDelete; Modal _frmDelete;
bool _loaded;
ProcessorViewModel _processor; ProcessorViewModel _processor;
List<ProcessorViewModel> _processors; List<ProcessorViewModel> _processors;
@@ -74,6 +75,14 @@ namespace Marechai.Pages.Admin
void ModalClosing(ModalClosingEventArgs obj) => _processor = null; void ModalClosing(ModalClosingEventArgs obj) => _processor = null;
protected override async Task OnInitializedAsync() => _processors = await Service.GetAsync(); protected override async Task OnAfterRenderAsync(bool firstRender)
{
if(_loaded)
return;
_processors = await Service.GetAsync();
_loaded = true;
StateHasChanged();
}
} }
} }

View File

@@ -36,6 +36,7 @@ namespace Marechai.Pages.Admin
{ {
bool _deleteInProgress; bool _deleteInProgress;
Modal _frmDelete; Modal _frmDelete;
bool _loaded;
ResolutionViewModel _resolution; ResolutionViewModel _resolution;
List<ResolutionViewModel> _resolutions; List<ResolutionViewModel> _resolutions;
@@ -74,6 +75,14 @@ namespace Marechai.Pages.Admin
void ModalClosing(ModalClosingEventArgs obj) => _resolution = null; void ModalClosing(ModalClosingEventArgs obj) => _resolution = null;
protected override async Task OnInitializedAsync() => _resolutions = await Service.GetAsync(); protected override async Task OnAfterRenderAsync(bool firstRender)
{
if(_loaded)
return;
_resolutions = await Service.GetAsync();
_loaded = true;
StateHasChanged();
}
} }
} }

View File

@@ -36,6 +36,7 @@ namespace Marechai.Pages.Admin
{ {
bool _deleteInProgress; bool _deleteInProgress;
Modal _frmDelete; Modal _frmDelete;
bool _loaded;
ScreenViewModel _screen; ScreenViewModel _screen;
List<ScreenViewModel> _screens; List<ScreenViewModel> _screens;
@@ -74,6 +75,14 @@ namespace Marechai.Pages.Admin
void ModalClosing(ModalClosingEventArgs obj) => _screen = null; void ModalClosing(ModalClosingEventArgs obj) => _screen = null;
protected override async Task OnInitializedAsync() => _screens = await Service.GetAsync(); protected override async Task OnAfterRenderAsync(bool firstRender)
{
if(_loaded)
return;
_screens = await Service.GetAsync();
_loaded = true;
StateHasChanged();
}
} }
} }

View File

@@ -36,6 +36,7 @@ namespace Marechai.Pages.Admin
{ {
bool _deleteInProgress; bool _deleteInProgress;
Modal _frmDelete; Modal _frmDelete;
bool _loaded;
SoundSynthViewModel _soundSynth; SoundSynthViewModel _soundSynth;
List<SoundSynthViewModel> _soundSynths; List<SoundSynthViewModel> _soundSynths;
@@ -74,6 +75,14 @@ namespace Marechai.Pages.Admin
void ModalClosing(ModalClosingEventArgs obj) => _soundSynth = null; void ModalClosing(ModalClosingEventArgs obj) => _soundSynth = null;
protected override async Task OnInitializedAsync() => _soundSynths = await Service.GetAsync(); protected override async Task OnAfterRenderAsync(bool firstRender)
{
if(_loaded)
return;
_soundSynths = await Service.GetAsync();
_loaded = true;
StateHasChanged();
}
} }
} }

View File

@@ -32,18 +32,21 @@ namespace Marechai.Pages.Companies
{ {
public partial class Index public partial class Index
{ {
char? _character; char? _character;
List<CompanyViewModel> _companies; List<CompanyViewModel> _companies;
string _countryName; string _countryName;
bool _loaded;
[Parameter] [Parameter]
public int? CountryId { get; set; } public int? CountryId { get; set; }
[Parameter] [Parameter]
public string StartingCharacter { get; set; } public string StartingCharacter { get; set; }
protected override async Task OnInitializedAsync() protected override async Task OnAfterRenderAsync(bool firstRender)
{ {
if(_loaded)
return;
_character = null; _character = null;
if(!string.IsNullOrWhiteSpace(StartingCharacter) && if(!string.IsNullOrWhiteSpace(StartingCharacter) &&
@@ -80,6 +83,8 @@ namespace Marechai.Pages.Companies
} }
_companies ??= await Service.GetAsync(); _companies ??= await Service.GetAsync();
_loaded = true;
StateHasChanged();
} }
} }
} }

View File

@@ -49,8 +49,11 @@ namespace Marechai.Pages.Companies
public bool ComputersCollapsed { get; set; } = true; public bool ComputersCollapsed { get; set; } = true;
public bool ConsolesCollapsed { get; set; } = true; public bool ConsolesCollapsed { get; set; } = true;
protected override async Task OnInitializedAsync() protected override async Task OnAfterRenderAsync(bool firstRender)
{ {
if(_loaded)
return;
if(Id <= 0) if(Id <= 0)
{ {
_loaded = true; _loaded = true;
@@ -69,6 +72,7 @@ namespace Marechai.Pages.Companies
_logos = await CompanyLogosService.GetByCompany(Id); _logos = await CompanyLogosService.GetByCompany(Id);
_loaded = true; _loaded = true;
StateHasChanged();
} }
void CollapseComputers() void CollapseComputers()

View File

@@ -31,7 +31,9 @@
@if (!_loaded) @if (!_loaded)
{ {
@L["Loading..."] <p align="center">@L["Loading..."]</p>
return;
} }
<p> <p>

View File

@@ -34,13 +34,17 @@ namespace Marechai.Pages.Computers
int _maxYear; int _maxYear;
int _minYear; int _minYear;
protected override async Task OnInitializedAsync() protected override async Task OnAfterRenderAsync(bool firstRender)
{ {
if(_loaded)
return;
_computers = await Service.GetComputersCountAsync(); _computers = await Service.GetComputersCountAsync();
_minYear = await Service.GetMinimumYearAsync(); _minYear = await Service.GetMinimumYearAsync();
_maxYear = await Service.GetMaximumYearAsync(); _maxYear = await Service.GetMaximumYearAsync();
_loaded = true; _loaded = true;
StateHasChanged();
} }
} }
} }

View File

@@ -33,7 +33,9 @@
@if (_computers is null) @if (_computers is null)
{ {
@L["Loading..."] <p align="center">@L["Loading..."]</p>
return;
} }
<p>@L["Search results:"]</p> <p>@L["Search results:"]</p>

View File

@@ -32,17 +32,20 @@ namespace Marechai.Pages.Computers
{ {
public partial class Search public partial class Search
{ {
char? _character; char? _character;
List<MachineViewModel> _computers; List<MachineViewModel> _computers;
bool _loaded;
[Parameter] [Parameter]
public int? Year { get; set; } public int? Year { get; set; }
[Parameter] [Parameter]
public string StartingCharacter { get; set; } public string StartingCharacter { get; set; }
protected override async Task OnInitializedAsync() protected override async Task OnAfterRenderAsync(bool firstRender)
{ {
if(_loaded)
return;
_character = null; _character = null;
if(!string.IsNullOrWhiteSpace(StartingCharacter) && if(!string.IsNullOrWhiteSpace(StartingCharacter) &&
@@ -70,6 +73,8 @@ namespace Marechai.Pages.Computers
_computers = await Service.GetComputersByYearAsync(Year.Value); _computers = await Service.GetComputersByYearAsync(Year.Value);
_computers ??= await Service.GetComputersAsync(); _computers ??= await Service.GetComputersAsync();
_loaded = true;
StateHasChanged();
} }
} }
} }

View File

@@ -31,7 +31,9 @@
@if (!_loaded) @if (!_loaded)
{ {
@L["Loading..."] <p align="center">@L["Loading..."]</p>
return;
} }
<p> <p>

View File

@@ -34,13 +34,17 @@ namespace Marechai.Pages.Consoles
int _maxYear; int _maxYear;
int _minYear; int _minYear;
protected override async Task OnInitializedAsync() protected override async Task OnAfterRenderAsync(bool firstRender)
{ {
if(_loaded)
return;
_consoles = await Service.GetConsolesCountAsync(); _consoles = await Service.GetConsolesCountAsync();
_minYear = await Service.GetMinimumYearAsync(); _minYear = await Service.GetMinimumYearAsync();
_maxYear = await Service.GetMaximumYearAsync(); _maxYear = await Service.GetMaximumYearAsync();
_loaded = true; _loaded = true;
StateHasChanged();
} }
} }
} }

View File

@@ -33,7 +33,9 @@
@if (_consoles is null) @if (_consoles is null)
{ {
@L["Loading..."] <p align="center">@L["Loading..."]</p>
return;
} }
<p>@L["Search results:"]</p> <p>@L["Search results:"]</p>

View File

@@ -32,17 +32,20 @@ namespace Marechai.Pages.Consoles
{ {
public partial class Search public partial class Search
{ {
char? _character; char? _character;
List<MachineViewModel> _consoles; List<MachineViewModel> _consoles;
bool _loaded;
[Parameter] [Parameter]
public int? Year { get; set; } public int? Year { get; set; }
[Parameter] [Parameter]
public string StartingCharacter { get; set; } public string StartingCharacter { get; set; }
protected override async Task OnInitializedAsync() protected override async Task OnAfterRenderAsync(bool firstRender)
{ {
if(_loaded)
return;
_character = null; _character = null;
if(!string.IsNullOrWhiteSpace(StartingCharacter) && if(!string.IsNullOrWhiteSpace(StartingCharacter) &&
@@ -70,6 +73,8 @@ namespace Marechai.Pages.Consoles
_consoles = await Service.GetConsolesByYearAsync(Year.Value); _consoles = await Service.GetConsolesByYearAsync(Year.Value);
_consoles ??= await Service.GetConsolesAsync(); _consoles ??= await Service.GetConsolesAsync();
_loaded = true;
StateHasChanged();
} }
} }
} }

View File

@@ -29,6 +29,14 @@
@inject IStringLocalizer<NewsService> L @inject IStringLocalizer<NewsService> L
<h2>@L["News"]</h2> <h2>@L["News"]</h2>
@if (!_loaded)
{
<p align="center">@L["Loading..."]</p>
return;
}
@foreach (var news in _news) @foreach (var news in _news)
{ {
<table border="0" width="100%"> <table border="0" width="100%">

View File

@@ -30,8 +30,17 @@ namespace Marechai.Pages.Home
{ {
public partial class Index public partial class Index
{ {
bool _loaded;
List<NewsViewModel> _news; List<NewsViewModel> _news;
protected override void OnInitialized() => _news = Service.GetNews(); protected override void OnAfterRender(bool firstRender)
{
if(_loaded)
return;
_news = Service.GetNews();
_loaded = true;
StateHasChanged();
}
} }
} }

View File

@@ -42,8 +42,11 @@ namespace Marechai.Pages.Machines
[Parameter] [Parameter]
public int Id { get; set; } public int Id { get; set; }
protected override async Task OnInitializedAsync() protected override async Task OnAfterRenderAsync(bool firstRender)
{ {
if(_loaded)
return;
_machine = await Service.GetMachine(Id); _machine = await Service.GetMachine(Id);
_processorVisible = new bool[_machine.Processors.Count]; _processorVisible = new bool[_machine.Processors.Count];
@@ -52,6 +55,7 @@ namespace Marechai.Pages.Machines
_photos = await MachinePhotosService.GetGuidsByMachineAsync(Id); _photos = await MachinePhotosService.GetGuidsByMachineAsync(Id);
_loaded = true; _loaded = true;
StateHasChanged();
} }
} }
} }