diff --git a/Marechai/Marechai.csproj b/Marechai/Marechai.csproj index aa78deb9..aa7d8346 100644 --- a/Marechai/Marechai.csproj +++ b/Marechai/Marechai.csproj @@ -2,7 +2,7 @@ netcoreapp3.1 - 4.0.0.1611 + 4.0.0.1618 Canary Islands Computer Museum Copyright © 2003-2020 Natalia Portillo Canary Islands Computer Museum Website diff --git a/Marechai/Pages/Admin/BrowserTests.razor.cs b/Marechai/Pages/Admin/BrowserTests.razor.cs index 6c56f550..df172da4 100644 --- a/Marechai/Pages/Admin/BrowserTests.razor.cs +++ b/Marechai/Pages/Admin/BrowserTests.razor.cs @@ -31,8 +31,17 @@ namespace Marechai.Pages.Admin { public partial class BrowserTests { + bool _loaded; List _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(); + } } } \ No newline at end of file diff --git a/Marechai/Pages/Admin/Companies.razor.cs b/Marechai/Pages/Admin/Companies.razor.cs index 425ad74b..8fabea88 100644 --- a/Marechai/Pages/Admin/Companies.razor.cs +++ b/Marechai/Pages/Admin/Companies.razor.cs @@ -35,12 +35,20 @@ namespace Marechai.Pages.Admin public partial class Companies { List _companies; + CompanyViewModel _currentCompany; + bool _deleteInProgress; + Modal _frmDelete; + bool _loaded; - CompanyViewModel _currentCompany; - bool _deleteInProgress; - Modal _frmDelete; + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if(_loaded) + return; - protected override async Task OnInitializedAsync() => _companies = await Service.GetAsync(); + _companies = await Service.GetAsync(); + _loaded = true; + StateHasChanged(); + } void ShowModal(int itemId) { diff --git a/Marechai/Pages/Admin/DocumentCompanies.razor.cs b/Marechai/Pages/Admin/DocumentCompanies.razor.cs index 5d509819..a0585a1e 100644 --- a/Marechai/Pages/Admin/DocumentCompanies.razor.cs +++ b/Marechai/Pages/Admin/DocumentCompanies.razor.cs @@ -35,12 +35,20 @@ namespace Marechai.Pages.Admin public partial class DocumentCompanies { List _companies; + DocumentCompanyViewModel _currentCompany; + bool _deleteInProgress; + Modal _frmDelete; + bool _loaded; - DocumentCompanyViewModel _currentCompany; - bool _deleteInProgress; - Modal _frmDelete; + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if(_loaded) + return; - protected override async Task OnInitializedAsync() => _companies = await Service.GetAsync(); + _companies = await Service.GetAsync(); + _loaded = true; + StateHasChanged(); + } void ShowModal(int itemId) { diff --git a/Marechai/Pages/Admin/DocumentPeople.razor.cs b/Marechai/Pages/Admin/DocumentPeople.razor.cs index 8bb68f9e..50bcc521 100644 --- a/Marechai/Pages/Admin/DocumentPeople.razor.cs +++ b/Marechai/Pages/Admin/DocumentPeople.razor.cs @@ -36,6 +36,7 @@ namespace Marechai.Pages.Admin { bool _deleteInProgress; Modal _frmDelete; + bool _loaded; List _people; DocumentPersonViewModel _person; @@ -74,6 +75,14 @@ namespace Marechai.Pages.Admin 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(); + } } } \ No newline at end of file diff --git a/Marechai/Pages/Admin/Gpus.razor.cs b/Marechai/Pages/Admin/Gpus.razor.cs index 55dc0836..d7f41d45 100644 --- a/Marechai/Pages/Admin/Gpus.razor.cs +++ b/Marechai/Pages/Admin/Gpus.razor.cs @@ -38,6 +38,7 @@ namespace Marechai.Pages.Admin Modal _frmDelete; GpuViewModel _gpu; List _gpus; + bool _loaded; void ShowModal(int itemId) { @@ -74,6 +75,14 @@ namespace Marechai.Pages.Admin 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(); + } } } \ No newline at end of file diff --git a/Marechai/Pages/Admin/InstructionSetExtensions.razor.cs b/Marechai/Pages/Admin/InstructionSetExtensions.razor.cs index 90c284ea..2cb4d223 100644 --- a/Marechai/Pages/Admin/InstructionSetExtensions.razor.cs +++ b/Marechai/Pages/Admin/InstructionSetExtensions.razor.cs @@ -38,6 +38,7 @@ namespace Marechai.Pages.Admin InstructionSetExtension _extension; List _extensions; Modal _frmDelete; + bool _loaded; void ShowModal(int itemId) { @@ -74,6 +75,14 @@ namespace Marechai.Pages.Admin 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(); + } } } \ No newline at end of file diff --git a/Marechai/Pages/Admin/InstructionSets.razor.cs b/Marechai/Pages/Admin/InstructionSets.razor.cs index aee41a40..25bde6a8 100644 --- a/Marechai/Pages/Admin/InstructionSets.razor.cs +++ b/Marechai/Pages/Admin/InstructionSets.razor.cs @@ -38,6 +38,7 @@ namespace Marechai.Pages.Admin Modal _frmDelete; InstructionSet _instructionSet; List _instructionSets; + bool _loaded; void ShowModal(int itemId) { @@ -74,6 +75,14 @@ namespace Marechai.Pages.Admin 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(); + } } } \ No newline at end of file diff --git a/Marechai/Pages/Admin/Licenses.razor.cs b/Marechai/Pages/Admin/Licenses.razor.cs index 0766c046..a1b19608 100644 --- a/Marechai/Pages/Admin/Licenses.razor.cs +++ b/Marechai/Pages/Admin/Licenses.razor.cs @@ -38,6 +38,7 @@ namespace Marechai.Pages.Admin Modal _frmDelete; License _license; List _licenses; + bool _loaded; void ShowModal(int itemId) { @@ -74,6 +75,14 @@ namespace Marechai.Pages.Admin 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(); + } } } \ No newline at end of file diff --git a/Marechai/Pages/Admin/MachineFamilies.razor.cs b/Marechai/Pages/Admin/MachineFamilies.razor.cs index 2ca32737..d7a3b9cf 100644 --- a/Marechai/Pages/Admin/MachineFamilies.razor.cs +++ b/Marechai/Pages/Admin/MachineFamilies.razor.cs @@ -36,6 +36,7 @@ namespace Marechai.Pages.Admin { bool _deleteInProgress; Modal _frmDelete; + bool _loaded; List _machineFamilies; MachineFamilyViewModel _machineFamily; @@ -74,6 +75,14 @@ namespace Marechai.Pages.Admin 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(); + } } } \ No newline at end of file diff --git a/Marechai/Pages/Admin/Machines.razor.cs b/Marechai/Pages/Admin/Machines.razor.cs index 8f1062dd..e295b2ce 100644 --- a/Marechai/Pages/Admin/Machines.razor.cs +++ b/Marechai/Pages/Admin/Machines.razor.cs @@ -36,6 +36,7 @@ namespace Marechai.Pages.Admin { bool _deleteInProgress; Modal _frmDelete; + bool _loaded; MachineViewModel _machine; List _machines; @@ -74,6 +75,14 @@ namespace Marechai.Pages.Admin 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(); + } } } \ No newline at end of file diff --git a/Marechai/Pages/Admin/News.razor.cs b/Marechai/Pages/Admin/News.razor.cs index 6541fce8..42edb67a 100644 --- a/Marechai/Pages/Admin/News.razor.cs +++ b/Marechai/Pages/Admin/News.razor.cs @@ -37,9 +37,18 @@ namespace Marechai.Pages.Admin NewsViewModel _currentNews; bool _deleteInProgress; Modal _frmDelete; + bool _loaded; List _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) { diff --git a/Marechai/Pages/Admin/People.razor.cs b/Marechai/Pages/Admin/People.razor.cs index 67525b3c..cba065af 100644 --- a/Marechai/Pages/Admin/People.razor.cs +++ b/Marechai/Pages/Admin/People.razor.cs @@ -36,6 +36,7 @@ namespace Marechai.Pages.Admin { bool _deleteInProgress; Modal _frmDelete; + bool _loaded; List _people; PersonViewModel _person; @@ -74,6 +75,14 @@ namespace Marechai.Pages.Admin 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(); + } } } \ No newline at end of file diff --git a/Marechai/Pages/Admin/Processors.razor.cs b/Marechai/Pages/Admin/Processors.razor.cs index e5e3d65e..6d1a1e32 100644 --- a/Marechai/Pages/Admin/Processors.razor.cs +++ b/Marechai/Pages/Admin/Processors.razor.cs @@ -36,6 +36,7 @@ namespace Marechai.Pages.Admin { bool _deleteInProgress; Modal _frmDelete; + bool _loaded; ProcessorViewModel _processor; List _processors; @@ -74,6 +75,14 @@ namespace Marechai.Pages.Admin 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(); + } } } \ No newline at end of file diff --git a/Marechai/Pages/Admin/Resolutions.razor.cs b/Marechai/Pages/Admin/Resolutions.razor.cs index 38ba1133..5527427f 100644 --- a/Marechai/Pages/Admin/Resolutions.razor.cs +++ b/Marechai/Pages/Admin/Resolutions.razor.cs @@ -36,6 +36,7 @@ namespace Marechai.Pages.Admin { bool _deleteInProgress; Modal _frmDelete; + bool _loaded; ResolutionViewModel _resolution; List _resolutions; @@ -74,6 +75,14 @@ namespace Marechai.Pages.Admin 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(); + } } } \ No newline at end of file diff --git a/Marechai/Pages/Admin/Screens.razor.cs b/Marechai/Pages/Admin/Screens.razor.cs index 50e7c548..9fd0b2f4 100644 --- a/Marechai/Pages/Admin/Screens.razor.cs +++ b/Marechai/Pages/Admin/Screens.razor.cs @@ -36,6 +36,7 @@ namespace Marechai.Pages.Admin { bool _deleteInProgress; Modal _frmDelete; + bool _loaded; ScreenViewModel _screen; List _screens; @@ -74,6 +75,14 @@ namespace Marechai.Pages.Admin 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(); + } } } \ No newline at end of file diff --git a/Marechai/Pages/Admin/SoundSynths.razor.cs b/Marechai/Pages/Admin/SoundSynths.razor.cs index b007d171..ac07ecbe 100644 --- a/Marechai/Pages/Admin/SoundSynths.razor.cs +++ b/Marechai/Pages/Admin/SoundSynths.razor.cs @@ -36,6 +36,7 @@ namespace Marechai.Pages.Admin { bool _deleteInProgress; Modal _frmDelete; + bool _loaded; SoundSynthViewModel _soundSynth; List _soundSynths; @@ -74,6 +75,14 @@ namespace Marechai.Pages.Admin 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(); + } } } \ No newline at end of file diff --git a/Marechai/Pages/Companies/Index.razor.cs b/Marechai/Pages/Companies/Index.razor.cs index 5b21d886..25128959 100644 --- a/Marechai/Pages/Companies/Index.razor.cs +++ b/Marechai/Pages/Companies/Index.razor.cs @@ -32,18 +32,21 @@ namespace Marechai.Pages.Companies { public partial class Index { - char? _character; - + char? _character; List _companies; string _countryName; + bool _loaded; [Parameter] public int? CountryId { get; set; } [Parameter] public string StartingCharacter { get; set; } - protected override async Task OnInitializedAsync() + protected override async Task OnAfterRenderAsync(bool firstRender) { + if(_loaded) + return; + _character = null; if(!string.IsNullOrWhiteSpace(StartingCharacter) && @@ -80,6 +83,8 @@ namespace Marechai.Pages.Companies } _companies ??= await Service.GetAsync(); + _loaded = true; + StateHasChanged(); } } } \ No newline at end of file diff --git a/Marechai/Pages/Companies/View.razor.cs b/Marechai/Pages/Companies/View.razor.cs index dc4d16d6..a2803b8f 100644 --- a/Marechai/Pages/Companies/View.razor.cs +++ b/Marechai/Pages/Companies/View.razor.cs @@ -49,8 +49,11 @@ namespace Marechai.Pages.Companies public bool ComputersCollapsed { 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) { _loaded = true; @@ -69,6 +72,7 @@ namespace Marechai.Pages.Companies _logos = await CompanyLogosService.GetByCompany(Id); _loaded = true; + StateHasChanged(); } void CollapseComputers() diff --git a/Marechai/Pages/Computers/Index.razor b/Marechai/Pages/Computers/Index.razor index 2c1f880e..6033eca5 100644 --- a/Marechai/Pages/Computers/Index.razor +++ b/Marechai/Pages/Computers/Index.razor @@ -31,7 +31,9 @@ @if (!_loaded) { - @L["Loading..."] +

@L["Loading..."]

+ + return; }

diff --git a/Marechai/Pages/Computers/Index.razor.cs b/Marechai/Pages/Computers/Index.razor.cs index 45b472ac..b3267e92 100644 --- a/Marechai/Pages/Computers/Index.razor.cs +++ b/Marechai/Pages/Computers/Index.razor.cs @@ -34,13 +34,17 @@ namespace Marechai.Pages.Computers int _maxYear; int _minYear; - protected override async Task OnInitializedAsync() + protected override async Task OnAfterRenderAsync(bool firstRender) { + if(_loaded) + return; + _computers = await Service.GetComputersCountAsync(); _minYear = await Service.GetMinimumYearAsync(); _maxYear = await Service.GetMaximumYearAsync(); _loaded = true; + StateHasChanged(); } } } \ No newline at end of file diff --git a/Marechai/Pages/Computers/Search.razor b/Marechai/Pages/Computers/Search.razor index 57343289..d8408afe 100644 --- a/Marechai/Pages/Computers/Search.razor +++ b/Marechai/Pages/Computers/Search.razor @@ -33,7 +33,9 @@ @if (_computers is null) { - @L["Loading..."] +

@L["Loading..."]

+ + return; }

@L["Search results:"]

diff --git a/Marechai/Pages/Computers/Search.razor.cs b/Marechai/Pages/Computers/Search.razor.cs index f451adc8..9057976b 100644 --- a/Marechai/Pages/Computers/Search.razor.cs +++ b/Marechai/Pages/Computers/Search.razor.cs @@ -32,17 +32,20 @@ namespace Marechai.Pages.Computers { public partial class Search { - char? _character; - + char? _character; List _computers; + bool _loaded; [Parameter] public int? Year { get; set; } [Parameter] public string StartingCharacter { get; set; } - protected override async Task OnInitializedAsync() + protected override async Task OnAfterRenderAsync(bool firstRender) { + if(_loaded) + return; + _character = null; if(!string.IsNullOrWhiteSpace(StartingCharacter) && @@ -70,6 +73,8 @@ namespace Marechai.Pages.Computers _computers = await Service.GetComputersByYearAsync(Year.Value); _computers ??= await Service.GetComputersAsync(); + _loaded = true; + StateHasChanged(); } } } \ No newline at end of file diff --git a/Marechai/Pages/Consoles/Index.razor b/Marechai/Pages/Consoles/Index.razor index 415d907c..6b96c61c 100644 --- a/Marechai/Pages/Consoles/Index.razor +++ b/Marechai/Pages/Consoles/Index.razor @@ -31,7 +31,9 @@ @if (!_loaded) { - @L["Loading..."] +

@L["Loading..."]

+ + return; }

diff --git a/Marechai/Pages/Consoles/Index.razor.cs b/Marechai/Pages/Consoles/Index.razor.cs index ce60de16..1027b3d4 100644 --- a/Marechai/Pages/Consoles/Index.razor.cs +++ b/Marechai/Pages/Consoles/Index.razor.cs @@ -34,13 +34,17 @@ namespace Marechai.Pages.Consoles int _maxYear; int _minYear; - protected override async Task OnInitializedAsync() + protected override async Task OnAfterRenderAsync(bool firstRender) { + if(_loaded) + return; + _consoles = await Service.GetConsolesCountAsync(); _minYear = await Service.GetMinimumYearAsync(); _maxYear = await Service.GetMaximumYearAsync(); _loaded = true; + StateHasChanged(); } } } \ No newline at end of file diff --git a/Marechai/Pages/Consoles/Search.razor b/Marechai/Pages/Consoles/Search.razor index 632cec7c..81157712 100644 --- a/Marechai/Pages/Consoles/Search.razor +++ b/Marechai/Pages/Consoles/Search.razor @@ -33,7 +33,9 @@ @if (_consoles is null) { - @L["Loading..."] +

@L["Loading..."]

+ + return; }

@L["Search results:"]

diff --git a/Marechai/Pages/Consoles/Search.razor.cs b/Marechai/Pages/Consoles/Search.razor.cs index aea31474..cac1e88e 100644 --- a/Marechai/Pages/Consoles/Search.razor.cs +++ b/Marechai/Pages/Consoles/Search.razor.cs @@ -32,17 +32,20 @@ namespace Marechai.Pages.Consoles { public partial class Search { - char? _character; - + char? _character; List _consoles; + bool _loaded; [Parameter] public int? Year { get; set; } [Parameter] public string StartingCharacter { get; set; } - protected override async Task OnInitializedAsync() + protected override async Task OnAfterRenderAsync(bool firstRender) { + if(_loaded) + return; + _character = null; if(!string.IsNullOrWhiteSpace(StartingCharacter) && @@ -70,6 +73,8 @@ namespace Marechai.Pages.Consoles _consoles = await Service.GetConsolesByYearAsync(Year.Value); _consoles ??= await Service.GetConsolesAsync(); + _loaded = true; + StateHasChanged(); } } } \ No newline at end of file diff --git a/Marechai/Pages/Home/Index.razor b/Marechai/Pages/Home/Index.razor index 16613a2e..d3f036e6 100644 --- a/Marechai/Pages/Home/Index.razor +++ b/Marechai/Pages/Home/Index.razor @@ -29,6 +29,14 @@ @inject IStringLocalizer L

@L["News"]

+ +@if (!_loaded) +{ +

@L["Loading..."]

+ + return; +} + @foreach (var news in _news) { diff --git a/Marechai/Pages/Home/Index.razor.cs b/Marechai/Pages/Home/Index.razor.cs index fd32e0d2..616dba41 100644 --- a/Marechai/Pages/Home/Index.razor.cs +++ b/Marechai/Pages/Home/Index.razor.cs @@ -30,8 +30,17 @@ namespace Marechai.Pages.Home { public partial class Index { + bool _loaded; List _news; - protected override void OnInitialized() => _news = Service.GetNews(); + protected override void OnAfterRender(bool firstRender) + { + if(_loaded) + return; + + _news = Service.GetNews(); + _loaded = true; + StateHasChanged(); + } } } \ No newline at end of file diff --git a/Marechai/Pages/Machines/View.razor.cs b/Marechai/Pages/Machines/View.razor.cs index 49ebee00..66ace7e9 100644 --- a/Marechai/Pages/Machines/View.razor.cs +++ b/Marechai/Pages/Machines/View.razor.cs @@ -42,8 +42,11 @@ namespace Marechai.Pages.Machines [Parameter] 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); _processorVisible = new bool[_machine.Processors.Count]; @@ -52,6 +55,7 @@ namespace Marechai.Pages.Machines _photos = await MachinePhotosService.GetGuidsByMachineAsync(Id); _loaded = true; + StateHasChanged(); } } } \ No newline at end of file