From fd63226051b742713b1ecced29bc9faf6cd924d5 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Wed, 13 Apr 2022 16:48:47 +0200 Subject: [PATCH] Fix time blink x errore C101 --- MP.Data/Controllers/MpMonController.cs | 9 ------ MP.Mon/Components/DetailMSE.razor | 18 ++++++------ MP.Mon/Components/DetailMSE.razor.cs | 37 ++++++++++++++++++++++-- MP.Mon/Components/LoadingData.razor | 2 +- MP.Mon/Components/LoadingDataSmall.razor | 6 ++++ MP.Mon/Data/MpDataService.cs | 7 ++++- MP.Mon/Pages/Index.razor.cs | 36 ++++++++++++++++++++--- 7 files changed, 89 insertions(+), 26 deletions(-) create mode 100644 MP.Mon/Components/LoadingDataSmall.razor diff --git a/MP.Data/Controllers/MpMonController.cs b/MP.Data/Controllers/MpMonController.cs index e93e6bbe..b6738ecd 100644 --- a/MP.Data/Controllers/MpMonController.cs +++ b/MP.Data/Controllers/MpMonController.cs @@ -81,15 +81,6 @@ namespace MP.Data.Controllers List dbResult = new List(); using (var dbCtx = new MoonProContext(_configuration)) { - //dbResult = dbCtx - //.DbSetMSE - //.OrderBy(x => x.RowNum) - //.ToList(); - - - - - var maxAgeSec = new SqlParameter("@maxAgeSec", maxAge); dbResult = dbCtx diff --git a/MP.Mon/Components/DetailMSE.razor b/MP.Mon/Components/DetailMSE.razor index 7c6997e3..38e5f47e 100644 --- a/MP.Mon/Components/DetailMSE.razor +++ b/MP.Mon/Components/DetailMSE.razor @@ -1,10 +1,10 @@ -@if (CurrRecord == null) -{ - -} -else -{ -
+
+ @if (CurrRecord == null || !dataLoaded) + { + + } + else + {
@CurrRecord.Nome @@ -48,5 +48,5 @@ else
-
-} \ No newline at end of file + } + \ No newline at end of file diff --git a/MP.Mon/Components/DetailMSE.razor.cs b/MP.Mon/Components/DetailMSE.razor.cs index a065ac6b..9d55507c 100644 --- a/MP.Mon/Components/DetailMSE.razor.cs +++ b/MP.Mon/Components/DetailMSE.razor.cs @@ -22,6 +22,8 @@ namespace MP.Mon.Components { protected string baseCss = ""; + protected bool dataLoaded { get; set; } = false; + protected int kaFactor = 60 / 2; [Parameter] public bool doAnimate { get; set; } = true; @@ -40,7 +42,7 @@ namespace MP.Mon.Components { DateTime lastUpdate = lastUpdateN.HasValue ? (DateTime)lastUpdateN : DateTime.Now.AddHours(-1); string answ = cssStatus(semaforo); - if (DateTime.Now.Subtract(lastUpdate).TotalSeconds > (keepAliveMin * 60 / 2)) + if (DateTime.Now.Subtract(lastUpdate).TotalSeconds > (keepAliveMin * kaFactor)) { answ = $"{baseCss}Ro"; } @@ -48,6 +50,10 @@ namespace MP.Mon.Components } protected override async Task OnInitializedAsync() { + StartTimer(); + Random rnd = new Random(); + //await Task.Delay(rnd.Next(500)); + dataLoaded = true; setupConf(); } private void setupConf() @@ -58,7 +64,7 @@ namespace MP.Mon.Components { DateTime lastUpdate = lastUpdateN.HasValue ? (DateTime)lastUpdateN : DateTime.Now.AddHours(-1); bool answ = false; - if (DateTime.Now.Subtract(lastUpdate).TotalSeconds > (keepAliveMin * 60 / 2)) + if (DateTime.Now.Subtract(lastUpdate).TotalSeconds > (keepAliveMin * kaFactor)) { answ = true; } @@ -78,5 +84,32 @@ namespace MP.Mon.Components { } return answ; } + public void Dispose() + { + aTimer.Stop(); + aTimer.Dispose(); + } + + private static System.Timers.Timer aTimer = new System.Timers.Timer(60 * 1000); + + public void StartTimer() + { + int tOutPeriod = 4000; + //int.TryParse(Configuration["ReloadStatusTimer"], out tOutPeriod); + aTimer = new System.Timers.Timer(tOutPeriod); + aTimer.Elapsed += ElapsedTimer; + aTimer.Enabled = true; + aTimer.Start(); + } + + public void ElapsedTimer(Object source, System.Timers.ElapsedEventArgs e) + { + var pUpd = Task.Run(async () => + { + await Task.Delay(1); + await InvokeAsync(StateHasChanged); + }); + pUpd.Wait(); + } } } \ No newline at end of file diff --git a/MP.Mon/Components/LoadingData.razor b/MP.Mon/Components/LoadingData.razor index d3228baf..db79a629 100644 --- a/MP.Mon/Components/LoadingData.razor +++ b/MP.Mon/Components/LoadingData.razor @@ -1,4 +1,4 @@ -
+

loading data

diff --git a/MP.Mon/Components/LoadingDataSmall.razor b/MP.Mon/Components/LoadingDataSmall.razor new file mode 100644 index 00000000..196dafc7 --- /dev/null +++ b/MP.Mon/Components/LoadingDataSmall.razor @@ -0,0 +1,6 @@ +
+
+ loading data + +
+
\ No newline at end of file diff --git a/MP.Mon/Data/MpDataService.cs b/MP.Mon/Data/MpDataService.cs index 44777b89..fa0a362c 100644 --- a/MP.Mon/Data/MpDataService.cs +++ b/MP.Mon/Data/MpDataService.cs @@ -44,7 +44,12 @@ namespace MP.Mon.Data public Task> MseGetAll() { - return Task.FromResult(dbController.MseGetAll().ToList()); + var dbResult = dbController.MseGetAll(); + if (dbResult == null) + { + dbResult = new List(); + } + return Task.FromResult(dbResult); } } } diff --git a/MP.Mon/Pages/Index.razor.cs b/MP.Mon/Pages/Index.razor.cs index b6848819..cc6c257b 100644 --- a/MP.Mon/Pages/Index.razor.cs +++ b/MP.Mon/Pages/Index.razor.cs @@ -20,7 +20,7 @@ using MP.Mon.Data; namespace MP.Mon.Pages { - public partial class Index + public partial class Index : IDisposable { protected List? ListMSE = null; @@ -32,17 +32,45 @@ namespace MP.Mon.Pages protected override async Task OnInitializedAsync() { - await reloadData(); + await ReloadData(); } [Inject] - protected MpDataService MMDataService { get; set; } + protected MpDataService MMDataService { get; set; } = null!; - private async Task reloadData() + private async Task ReloadData() { ListMSE = await MMDataService.MseGetAll(); } + public void Dispose() + { + aTimer.Stop(); + aTimer.Dispose(); + } + + private static System.Timers.Timer aTimer; + + public void StartTimer() + { + int tOutPeriod = 2000; + //int.TryParse(Configuration["ReloadStatusTimer"], out tOutPeriod); + aTimer = new System.Timers.Timer(tOutPeriod); + aTimer.Elapsed += ElapsedTimer; + aTimer.Enabled = true; + aTimer.Start(); + } + + public void ElapsedTimer(Object source, System.Timers.ElapsedEventArgs e) + { + var pUpd = Task.Run(async () => + { + await ReloadData(); + //await Task.Delay(1); + await InvokeAsync(StateHasChanged); + }); + pUpd.Wait(); + } } } \ No newline at end of file