diff --git a/MP.SPEC/Components/ParamsFilter.razor b/MP.SPEC/Components/ParamsFilter.razor index 5cf43c6c..43e53201 100644 --- a/MP.SPEC/Components/ParamsFilter.razor +++ b/MP.SPEC/Components/ParamsFilter.razor @@ -1,34 +1,36 @@ -
-
+ +
+
+
-
-
-
-
-
- -
-
- -
-
+
+ @if (isLoading) + { + + } + else + { + + }
diff --git a/MP.SPEC/Components/ParamsFilter.razor.cs b/MP.SPEC/Components/ParamsFilter.razor.cs index 338e99af..7c5f8579 100644 --- a/MP.SPEC/Components/ParamsFilter.razor.cs +++ b/MP.SPEC/Components/ParamsFilter.razor.cs @@ -37,14 +37,17 @@ namespace MP.SPEC.Components { if (!SelFilter.IdxMacchina.Equals(value)) { + isLoading = true; + Task.Delay(1); + //StateHasChanged(); SelFilter.IdxMacchina = value; SelFilter.CodFlux = "*"; - Task.Delay(1); ListFlux = MDService.ParametriGetFilt(selMacchina).Result; Task.Delay(1); StateHasChanged(); Task.Delay(1); reportChange(); + isLoading = false; } } } @@ -79,6 +82,8 @@ namespace MP.SPEC.Components } + private bool isLoading = false; + private List? ListFlux; private List? ListMacchine; diff --git a/MP.SPEC/Data/MpDataService.cs b/MP.SPEC/Data/MpDataService.cs index 7b12dfe0..080ca3ac 100644 --- a/MP.SPEC/Data/MpDataService.cs +++ b/MP.SPEC/Data/MpDataService.cs @@ -391,6 +391,7 @@ namespace MP.SPEC.Data { return Task.FromResult(dbController.MacchineGetAll()); } + /// /// Elenco ID macchine con dati FluxLog gestite /// @@ -438,9 +439,40 @@ namespace MP.SPEC.Data /// /// * = tutte, altrimenti solo x una data macchina /// - public Task> ParametriGetFilt(string IdxMacchina) + public async Task> ParametriGetFilt(string IdxMacchina) { - return Task.FromResult(dbController.ParametriGetFilt(IdxMacchina)); + List? result = new List(); + result = await Task.FromResult(dbController.ParametriGetFilt(IdxMacchina)); +#if false + // 2 minuti valore cache + int maxAgeMin = 5; + Stopwatch stopWatch = new Stopwatch(); + stopWatch.Start(); + // cerco in redis dato valore sel macchina... + RedisValue rawData = await redisDb.StringGetAsync($"{redisFluxByMac}:{IdxMacchina}"); + if (!string.IsNullOrEmpty($"{rawData}")) + { + result = JsonConvert.DeserializeObject>($"{rawData}"); + stopWatch.Stop(); + TimeSpan ts = stopWatch.Elapsed; + Log.Debug($"ParametriGetFilt | Read from REDIS: {ts.TotalMilliseconds}ms"); + } + else + { + result = await Task.FromResult(dbController.ParametriGetFilt(IdxMacchina)); + // serializzp e salvo... + rawData = JsonConvert.SerializeObject(result); + await redisDb.StringSetAsync($"{redisFluxByMac}:{IdxMacchina}", rawData, TimeSpan.FromMinutes(maxAgeMin)); + stopWatch.Stop(); + TimeSpan ts = stopWatch.Elapsed; + Log.Debug($"ParametriGetFilt | Read from DB: {ts.TotalMilliseconds}ms"); + } + if (result == null) + { + result = new List(); + } +#endif + return result; } /// @@ -499,6 +531,7 @@ namespace MP.SPEC.Data private string redisMseKey = "MP:MON:Cache:MSE"; private string redisStatoCom = "MP:MON:Cache:StatoCom"; private string redisTipoArt = "MP:MON:Cache:TipoArt"; + private string redisFluxByMac = "MP:MON:Cache:FluxByMac"; #endregion Private Fields