@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();
}