From ab429c1c67532363736cc2cf7ee95b73d5a1dd09 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Mon, 26 Feb 2024 15:58:15 +0100 Subject: [PATCH] Continuo modifica x eliminare SamplerMSE singoli --- MP-TAB3/Pages/Index.razor.cs | 18 +++--- MP-TAB3/Pages/StatusMap.razor | 2 +- MP-TAB3/Pages/StatusMap.razor.cs | 98 +++++++++++++++++++++++++++++-- MP-TAB3/Program.cs | 3 + MP-TAB3/appsettings.json | 2 +- MP.Data/MessagePipe.cs | 10 +++- MP.Data/Services/StatusData.cs | 6 +- MP.Data/Services/TabDataFeeder.cs | 23 +------- MP.Mon/Pages/Index.razor.cs | 2 + 9 files changed, 123 insertions(+), 41 deletions(-) diff --git a/MP-TAB3/Pages/Index.razor.cs b/MP-TAB3/Pages/Index.razor.cs index 3c9cb87a..746aa7a8 100644 --- a/MP-TAB3/Pages/Index.razor.cs +++ b/MP-TAB3/Pages/Index.razor.cs @@ -1,3 +1,11 @@ +using Microsoft.AspNetCore.Components; +using MP.Data.DatabaseModels; +using MP.Data; +using MP.Data.Services; +using MP_TAB3.Shared; +using NLog.Fluent; +using Newtonsoft.Json; + namespace MP_TAB3.Pages { public partial class Index : IDisposable @@ -18,16 +26,6 @@ namespace MP_TAB3.Pages await Task.Delay(1); } - protected override async Task OnInitializedAsync() - { - await Task.Delay(1); - } - - protected override async Task OnParametersSetAsync() - { - await Task.Delay(1); - } - #endregion Protected Methods } } \ No newline at end of file diff --git a/MP-TAB3/Pages/StatusMap.razor b/MP-TAB3/Pages/StatusMap.razor index e977f993..026b4b6e 100644 --- a/MP-TAB3/Pages/StatusMap.razor +++ b/MP-TAB3/Pages/StatusMap.razor @@ -1,6 +1,6 @@ @page "/status-map" - +@* *@
@if (ListMSE == null || ListMSE.Count == 0 || isCalcSize) diff --git a/MP-TAB3/Pages/StatusMap.razor.cs b/MP-TAB3/Pages/StatusMap.razor.cs index fdaf2a46..86c56f47 100644 --- a/MP-TAB3/Pages/StatusMap.razor.cs +++ b/MP-TAB3/Pages/StatusMap.razor.cs @@ -1,9 +1,11 @@ using global::Microsoft.AspNetCore.Components; using Microsoft.JSInterop; +using MP.Data; using MP.Data.Conf; using MP.Data.DatabaseModels; using MP.Data.Services; using MP_TAB3.Shared; +using Newtonsoft.Json; using NLog; using System.Runtime.ExceptionServices; @@ -16,6 +18,8 @@ namespace MP_TAB3.Pages public void Dispose() { ListMSE = null; + TDFeeder.dataPipe.EA_NewMessage -= DataPipe_EA_NewMessage; + TDFeeder.blinkPipe.EA_NewMessage -= BlinkPipe_EA_NewMessage; GC.Collect(); } @@ -39,8 +43,6 @@ namespace MP_TAB3.Pages protected bool _showCard = false; - protected int maxCol = 6; - protected string showArt = ""; #endregion Protected Fields @@ -79,6 +81,9 @@ namespace MP_TAB3.Pages [Inject] protected TabDataService TabDServ { get; set; } = null!; + [Inject] + protected TabDataFeeder TDFeeder { get; set; } = null!; + protected int Width { get; set; } = 0; #endregion Protected Properties @@ -129,10 +134,15 @@ namespace MP_TAB3.Pages } } + protected override async Task OnInitializedAsync() { - setDefaults(); ListMSE = null; + setDefaults(); + TDFeeder.dataPipe.EA_NewMessage += DataPipe_EA_NewMessage; + TDFeeder.blinkPipe.EA_NewMessage += BlinkPipe_EA_NewMessage; + Random rnd = new Random(); + await Task.Delay(rnd.Next(10, 20)); SetupConf(); var LastOpenedPage = await MsgServ.LastOpenedPageGet(); var currMacc = await MsgServ.IdxMaccGet(); @@ -143,7 +153,6 @@ namespace MP_TAB3.Pages { NavMan.NavigateTo(LastOpenedPage); } - //NavMan.NavigateTo($"machine-detail"); } } @@ -158,11 +167,14 @@ namespace MP_TAB3.Pages private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); + private bool doBlink = false; + #endregion Private Fields #region Private Properties private string baseLang { get; set; } = ""; + private List? ListMSE { get; set; } = null; private string tcMode { get; set; } = ""; @@ -171,6 +183,80 @@ namespace MP_TAB3.Pages #region Private Methods + private void BlinkPipe_EA_NewMessage(object? sender, EventArgs e) + { + PubSubEventArgs currArgs = (PubSubEventArgs)e; + // conversione on-the-fly List --> allarmi + if (!string.IsNullOrEmpty(currArgs.newMessage)) + { + try + { + var dataRaw = JsonConvert.DeserializeObject(currArgs.newMessage); + if (dataRaw != null) + { + bool.TryParse($"{dataRaw}", out doBlink); + } + } + catch + { } + InvokeAsync(() => + { + StateHasChanged(); + }); + } + } + + /// + /// Ricevuto nuovi dati da mostrare! + /// + /// + /// + /// + private void DataPipe_EA_NewMessage(object? sender, EventArgs e) + { + PubSubEventArgs currArgs = (PubSubEventArgs)e; + // conversione on-the-fly List --> allarmi + if (!string.IsNullOrEmpty(currArgs.newMessage)) + { + try + { + List? dataList = JsonConvert.DeserializeObject>(currArgs.newMessage); + if (dataList != null) + { +#if false + // se ho filtro macchine --> tengo solo quelle che mi tornano... + if (listMacchine != null && listMacchine.Count > 0) + { + List listaFilt = new List(); + foreach (var item in listMacchine) + { + var rigaFilt = dataList.FirstOrDefault(x => x.IdxMacchina == item.IdxMacchina); + if (rigaFilt != null) + { + listaFilt.Add(rigaFilt); + } + } + dataList = listaFilt; + } + ListMSE = dataList; +#endif + SaveData(dataList); + } + } + catch + { } + } + InvokeAsync(() => + { +#if false + // attesa random 0-50ms... + Random rnd = new Random(); + Task.Delay(rnd.Next(5, 50)); +#endif + StateHasChanged(); + }); + } + private void setDefaults() { string df = MsgServ.UserPrefSetup("DefCardMode", "full"); @@ -180,12 +266,12 @@ namespace MP_TAB3.Pages isCalcSize = true; } + private void SetupConf() { // sistemo i parametri opzionali... - TabDServ.ConfigGetVal("MON_maxCol", ref maxCol); TabDServ.ConfigGetVal("sART", ref showArt); - Log.Info($"setupConf | Effettuato setup parametri | MaxCol: {maxCol}"); + Log.Info($"setupConf | Effettuato setup parametri | showArt: {showArt}"); } #endregion Private Methods diff --git a/MP-TAB3/Program.cs b/MP-TAB3/Program.cs index cfe31508..ae572504 100644 --- a/MP-TAB3/Program.cs +++ b/MP-TAB3/Program.cs @@ -26,6 +26,9 @@ builder.Services.AddSingleton(redisMultiplexer); builder.Services.AddRazorPages(); builder.Services.AddServerSideBlazor(); +builder.Services.AddSingleton(redisMultiplexer); +builder.Services.AddSingleton(); + builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); diff --git a/MP-TAB3/appsettings.json b/MP-TAB3/appsettings.json index 684b54e4..96acfc3c 100644 --- a/MP-TAB3/appsettings.json +++ b/MP-TAB3/appsettings.json @@ -17,7 +17,7 @@ "MP.Mag": "Server=SQL2016DEV;Database=MoonPro_MAG; User ID=sa;Password=keyhammer16; integrated security=False; MultipleActiveResultSets=True; App=MP.TAB3;" }, "OptConf": { - "msRefresh": "4000", + "msRefresh": "1100", "BaseAddr": "https://localhost:7295/MP/TAB3/", "BaseUrl": "/MP/TAB3", "ImgBasePath": "https://iis01.egalware.com/MP/images/macchine/small/", diff --git a/MP.Data/MessagePipe.cs b/MP.Data/MessagePipe.cs index cd8cf7b7..588428e5 100644 --- a/MP.Data/MessagePipe.cs +++ b/MP.Data/MessagePipe.cs @@ -113,7 +113,10 @@ namespace MP.Data //Subscribe to the channel named messages sub.Subscribe(_channel, (channel, message) => { - Log.Trace($"req setup ch {channel} | {message}"); + if (enableLog) + { + Log.Trace($"req setup ch {channel} | {message}"); + } // messaggio PubSubEventArgs mea = new PubSubEventArgs(message); // se qualcuno ascolta sollevo evento nuovo valore... @@ -122,7 +125,10 @@ namespace MP.Data EA_NewMessage(this, mea); } }); - Log.Info($"Subscribed {_channel}"); + if (enableLog) + { + Log.Info($"Subscribed {_channel}"); + } } #endregion Private Methods diff --git a/MP.Data/Services/StatusData.cs b/MP.Data/Services/StatusData.cs index 3f89c3d4..f70bf9e6 100644 --- a/MP.Data/Services/StatusData.cs +++ b/MP.Data/Services/StatusData.cs @@ -266,7 +266,7 @@ namespace MP.Data.Services result = await Task.FromResult(dbController.MseGetAll(maxAge)); // serializzp e salvo... rawData = JsonConvert.SerializeObject(result); - await redisDb.StringSetAsync(Constants.redisMseKey, rawData, FastCache); + await redisDb.StringSetAsync(Constants.redisMseKey, rawData, UltraFastCache); } if (result == null) { @@ -304,6 +304,10 @@ namespace MP.Data.Services /// Cache breve durata /// private TimeSpan FastCache = TimeSpan.FromSeconds(5); + /// + /// Cache brevissima durata + /// + private TimeSpan UltraFastCache = TimeSpan.FromMilliseconds(1000); /// /// Cache lunga durata diff --git a/MP.Data/Services/TabDataFeeder.cs b/MP.Data/Services/TabDataFeeder.cs index e8e26806..3a06692a 100644 --- a/MP.Data/Services/TabDataFeeder.cs +++ b/MP.Data/Services/TabDataFeeder.cs @@ -15,8 +15,8 @@ namespace MP.Data.Services { // setup canali pub/sub - dataPipe = new MessagePipe(redisConn, Constants.TAB_ACT_MSE_DATA_KEY); - blinkPipe = new MessagePipe(redisConn, Constants.TAB_ACT_BLINK_KEY); + dataPipe = new MessagePipe(redisConn, Constants.TAB_ACT_MSE_DATA_KEY, false); + blinkPipe = new MessagePipe(redisConn, Constants.TAB_ACT_BLINK_KEY, false); // avvio timers... startTimers(); @@ -40,16 +40,6 @@ namespace MP.Data.Services stopTimers(); } -#if false - /// - /// Richiesta attivazione --> sposto avanti 1 minuto il periodo limite x fast running - /// - public void doActivate() - { - fastLimit = DateTime.Now.AddMinutes(1); - } -#endif - /// /// Impostazione forzata timer refresh /// @@ -85,15 +75,8 @@ namespace MP.Data.Services private static System.Timers.Timer fastTimer = new System.Timers.Timer(4000); - private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); + private static Logger Log = LogManager.GetCurrentClassLogger(); -#if false - /// - /// Limite in formato data-ora per inviare dati rapidamente (incrementato come now + 1 min - /// ad ogni chiamata client) - /// - private DateTime fastLimit = DateTime.Now; -#endif private int fastRefreshMs = 1000; diff --git a/MP.Mon/Pages/Index.razor.cs b/MP.Mon/Pages/Index.razor.cs index 5c6f56d2..3a24c696 100644 --- a/MP.Mon/Pages/Index.razor.cs +++ b/MP.Mon/Pages/Index.razor.cs @@ -16,6 +16,8 @@ namespace MP.Mon.Pages public void Dispose() { + MMDataService.dataPipe.EA_NewMessage -= DataPipe_EA_NewMessage; + MMDataService.blinkPipe.EA_NewMessage -= BlinkPipe_EA_NewMessage; disposeTimers(); }