Continuo modifica x eliminare SamplerMSE singoli

This commit is contained in:
Samuele Locatelli
2024-02-26 15:58:15 +01:00
parent 553fa000b5
commit ab429c1c67
9 changed files with 123 additions and 41 deletions
+8 -10
View File
@@ -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
}
}
+1 -1
View File
@@ -1,6 +1,6 @@
@page "/status-map"
<MseSampler SampleMult="1.5" E_Updated="SaveData"></MseSampler>
@* <MseSampler SampleMult="1.5" E_Updated="SaveData"></MseSampler> *@
<div class="pe-2">
<div class="row mb-2">
@if (ListMSE == null || ListMSE.Count == 0 || isCalcSize)
+92 -6
View File
@@ -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<MappaStatoExpl>? 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<string> --> allarmi
if (!string.IsNullOrEmpty(currArgs.newMessage))
{
try
{
var dataRaw = JsonConvert.DeserializeObject<string>(currArgs.newMessage);
if (dataRaw != null)
{
bool.TryParse($"{dataRaw}", out doBlink);
}
}
catch
{ }
InvokeAsync(() =>
{
StateHasChanged();
});
}
}
/// <summary>
/// Ricevuto nuovi dati da mostrare!
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
/// <exception cref="NotImplementedException"></exception>
private void DataPipe_EA_NewMessage(object? sender, EventArgs e)
{
PubSubEventArgs currArgs = (PubSubEventArgs)e;
// conversione on-the-fly List<string> --> allarmi
if (!string.IsNullOrEmpty(currArgs.newMessage))
{
try
{
List<MappaStatoExpl>? dataList = JsonConvert.DeserializeObject<List<MappaStatoExpl>>(currArgs.newMessage);
if (dataList != null)
{
#if false
// se ho filtro macchine --> tengo solo quelle che mi tornano...
if (listMacchine != null && listMacchine.Count > 0)
{
List<MappaStatoExpl> listaFilt = new List<MappaStatoExpl>();
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
+3
View File
@@ -26,6 +26,9 @@ builder.Services.AddSingleton<IConnectionMultiplexer>(redisMultiplexer);
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
builder.Services.AddSingleton<IConnectionMultiplexer>(redisMultiplexer);
builder.Services.AddSingleton<TabDataFeeder>();
builder.Services.AddSingleton<StatusData>();
builder.Services.AddSingleton<ListSelectDataSrv>();
builder.Services.AddSingleton<OrderDataSrv>();
+1 -1
View File
@@ -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/",
+8 -2
View File
@@ -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
+5 -1
View File
@@ -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
/// </summary>
private TimeSpan FastCache = TimeSpan.FromSeconds(5);
/// <summary>
/// Cache brevissima durata
/// </summary>
private TimeSpan UltraFastCache = TimeSpan.FromMilliseconds(1000);
/// <summary>
/// Cache lunga durata
+3 -20
View File
@@ -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
/// <summary>
/// Richiesta attivazione --&gt; sposto avanti 1 minuto il periodo limite x fast running
/// </summary>
public void doActivate()
{
fastLimit = DateTime.Now.AddMinutes(1);
}
#endif
/// <summary>
/// Impostazione forzata timer refresh
/// </summary>
@@ -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
/// <summary>
/// Limite in formato data-ora per inviare dati rapidamente (incrementato come now + 1 min
/// ad ogni chiamata client)
/// </summary>
private DateTime fastLimit = DateTime.Now;
#endif
private int fastRefreshMs = 1000;
+2
View File
@@ -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();
}