diff --git a/EgwCoreLib.Lux.Data/Services/BaseServ.cs b/EgwCoreLib.Lux.Data/Services/BaseServ.cs
index 1bc85ec7..944f1610 100644
--- a/EgwCoreLib.Lux.Data/Services/BaseServ.cs
+++ b/EgwCoreLib.Lux.Data/Services/BaseServ.cs
@@ -14,19 +14,24 @@ using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Data.Services
{
///
- /// BaseServ class serves as a foundational service for handling Redis operations and message piping.
- /// It provides common configurations, caching strategies, and message delivery mechanisms for derived services.
- /// The class initializes Redis connections, sets up message channels, and manages JSON serialization with loop handling.
+ /// Classe base per i servizi che fornisce funzionalità comuni come
+ /// - connessione a Redis
+ /// - configurazione
+ /// - gestione dei messaggi
+ /// - strategie di caching.
+ ///
+ /// Questa classe agisce come modello per altri servizi derivati.
///
public class BaseServ
{
#region Public Constructors
///
- /// Initializes a new instance of the BaseServ class.
+ /// Inizializza una nuova istanza della classe BaseServ.
+ /// Configura la connessione Redis, carica le impostazioni di configurazione e inizializza il serializzatore JSON.
///
- /// Configuration object to retrieve application settings.
- /// Redis connection multiplexer for database operations.
+ /// Oggetto di configurazione per recuperare le impostazioni dell'applicazione.
+ /// Multiplexer di connessione Redis per operazioni sul database.
public BaseServ(IConfiguration Configuration, IConnectionMultiplexer RedisConn)
{
_config = Configuration;
@@ -51,18 +56,14 @@ namespace EgwCoreLib.Lux.Data.Services
updateChannel += ":*";
}
- // JSON serializer settings to prevent circular reference errors during serialization
- // ReferenceLoopHandling.Ignore ensures that circular references in objects are ignored instead of throwing exceptions
+ // Configurazione serializzatore JSON per risolvere errore di loop circolare
JSSettings = new JsonSerializerSettings()
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
};
- // Initializes a message pipe for communication between calculation services and UI components
- // Messages are sent via the specified Redis channel (svgChannel)
+ // Configurazione pipe dei messaggi
CalcDonePipe = new MessagePipe(redisConn, svgChannel);
-
- // init others channel
BomPipe = new MessagePipe(RedisConn, bomChannel);
UpdatePipe = new MessagePipe(RedisConn, updateChannel);
}
@@ -72,19 +73,18 @@ namespace EgwCoreLib.Lux.Data.Services
#region Public Properties
///
- /// Message pipe for BOM calculation update
+ /// Pipe dei messaggi per la comunicazione riguardo update calcolo BOM
///
public MessagePipe BomPipe { get; set; } = null!;
///
- /// Message pipe for delivering completion messages from calculation services to the UI.
- /// Uses Redis to publish messages on the svgChannel for real-time updates.
+ /// Pipe dei messaggi per la comunicazione tra servizi di calcolo e interfaccia utente.
+ /// I messaggi vengono inviati sul canale Redis definito da svgChannel.
///
public MessagePipe CalcDonePipe { get; set; } = null!;
///
- /// Message pipe for delivering generico update to the UI.
- /// Uses Redis to publish messages on the updateChannel for real-time updates.
+ /// Pipe dei messaggi per la comunicazione riguardo update generico UI
///
public MessagePipe UpdatePipe { get; set; } = null!;
@@ -93,26 +93,25 @@ namespace EgwCoreLib.Lux.Data.Services
#region Protected Fields
///
- /// Configuration object for accessing application settings (e.g., connection strings, service parameters).
- /// This is a static instance shared across all instances of BaseServ.
+ /// Oggetto di configurazione statico per accedere alle impostazioni dell'applicazione (es. stringhe di connessione).
+ /// Condiviso tra tutte le istanze di BaseServ.
///
protected static IConfiguration _config = null!;
///
- /// JSON serialization settings to handle circular references (e.g., object references to themselves).
- /// Prevents exceptions during serialization by ignoring loops.
+ /// Impostazioni del serializzatore JSON utilizzato per gestire oggetti con riferimenti circolari
+ /// (es. oggetti che si fanno riferimento reciprocamente).
///
protected JsonSerializerSettings? JSSettings;
///
- /// Redis connection multiplexer that provides access to Redis database operations.
- /// Used for reading and writing data in Redis.
+ /// Oggetto per la connessione a Redis utilizzato per operazioni di lettura/scrittura.
///
protected IConnectionMultiplexer redisConn = null!;
///
- /// Redis database instance used for performing read/write operations.
- /// This database is accessed via the redisConn.GetDatabase() method.
+ /// Database Redis utilizzato per le operazioni di lettura/scrittura
+ /// nb: ottenuto tramite redisConn.GetDatabase()
///
protected IDatabase redisDb = null!;
@@ -121,8 +120,7 @@ namespace EgwCoreLib.Lux.Data.Services
#region Protected Properties
///
- /// Cache duration for short-term operations (approximately 1 minute with ±10% variation).
- /// The actual duration is calculated dynamically with a random factor to avoid fixed TTLs.
+ /// Durata della cache breve (circa 1 minuto + variazione del +/-10%)
///
protected TimeSpan FastCache
{
@@ -130,8 +128,7 @@ namespace EgwCoreLib.Lux.Data.Services
}
///
- /// Cache duration for long-term operations (5 minutes with ±10% variation).
- /// Used for data that should be cached for longer periods but still allow some flexibility.
+ /// Durata della cache lunga (+ variazione del +/-10%)
///
protected TimeSpan LongCache
{
@@ -139,8 +136,7 @@ namespace EgwCoreLib.Lux.Data.Services
}
///
- /// Cache duration for very short-term operations (approximately 10 seconds with ±10% variation).
- /// Used for transient data that needs to be refreshed frequently.
+ /// Durata della cache molto breve (circa 10 secondi + variazione del +/-10%)
///
protected TimeSpan UltraFastCache
{
@@ -148,8 +144,7 @@ namespace EgwCoreLib.Lux.Data.Services
}
///
- /// Cache duration for very long-term operations (up to 50 minutes with ±10% variation).
- /// Designed for data that changes infrequently and requires long-term persistence.
+ /// Durata della cache molto lunga (+ variazione del +/-10%)
///
protected TimeSpan UltraLongCache
{
@@ -161,8 +156,8 @@ namespace EgwCoreLib.Lux.Data.Services
#region Private Fields
///
- /// Logger instance for logging events and errors at the class level.
- /// Used to track application behavior and diagnose issues.
+ /// Oggetto logger utilizzato per registrare eventi e errori a livello di classe.
+ /// Utile per il monitoraggio del comportamento dell'applicazione e la risoluzione di problemi.
///
private static Logger Log = LogManager.GetCurrentClassLogger();
@@ -172,31 +167,31 @@ namespace EgwCoreLib.Lux.Data.Services
private string bomChannel = "";
///
- /// Duration of long-term cache in seconds (default: 5 minutes).
- /// Used in the LongCache property to define how long data should be cached.
+ /// Durata della cache lunga in secondi (predefinito: 5 minuti)
+ /// Utilizzato nella proprietà LongCache per definire quanto a lungo i dati devono essere memorizzati in cache.
///
private int cacheTtlLong = 60 * 5;
///
- /// Duration of short-term cache in seconds (default: 1 minute).
- /// Used in the FastCache and UltraFastCache properties to define short-term cache durations.
+ /// Durata della cache breve in secondi (predefinito: 1 minuto)
+ /// Utilizzato nelle proprietà FastCache e UltraFastCache per definire la durata della cache breve.
///
private int cacheTtlShort = 60 * 1;
///
- /// Random number generator for introducing dynamic variability in cache durations.
- /// Used to simulate real-world variations in data freshness and TTL.
+ /// Generatore di numeri casuali utilizzato per introdurre variabilità dinamica nelle durate della cache
+ /// (simula variazioni reali nella freschezza dei dati e nei tempi di scadenza).
///
private Random rnd = new Random();
///
- /// The Redis channel name used for subscribing to and publishing messages.
- /// Default is "svg:img", with a wildcard suffix ":*" to enable dynamic message matching.
+ /// Nome del canale Redis utilizzato per l'invio/ricezione di messaggi relativi a img svg.
+ /// Predefinito a "svg:img" con suffisso ":*".
///
private string svgChannel = "";
///
- /// Redis channel for generic update info
+ /// Nome del canale Redis utilizzato per l'invio/ricezione di messaggi di update
///
private string updateChannel = "";
diff --git a/EgwCoreLib.Lux.Data/Services/DataLayerServices.cs b/EgwCoreLib.Lux.Data/Services/DataLayerServices.cs
index 810d628b..efe7a9c3 100644
--- a/EgwCoreLib.Lux.Data/Services/DataLayerServices.cs
+++ b/EgwCoreLib.Lux.Data/Services/DataLayerServices.cs
@@ -621,7 +621,7 @@ namespace EgwCoreLib.Lux.Data.Services
var bomList = JsonConvert.DeserializeObject>(bomContent);
if (bomList != null)
{
- // verifico 1:1 gli item ricevuti dalla BOM sul DB con eventuale insert in anagrafica
+ // verifico 1:1 gli item ricevuti dalla BOM sul DB con eventuale insert in anagrafica dei nuovi
dbController.ItemUpsertFromBom(bomList);
// salvo la BOM nel record del DB relativo all'oggetto richiesto
dbController.OfferUpsertFromBom(uID, bomList);
diff --git a/Lux.API/Lux.API.csproj b/Lux.API/Lux.API.csproj
index 2475a0ff..732cc7df 100644
--- a/Lux.API/Lux.API.csproj
+++ b/Lux.API/Lux.API.csproj
@@ -4,7 +4,7 @@
net8.0
enable
enable
- 0.9.2509.2417
+ 0.9.2509.2418
diff --git a/Lux.UI/Components/Compo/OfferRowMan.razor.cs b/Lux.UI/Components/Compo/OfferRowMan.razor.cs
index 495cf280..8596254c 100644
--- a/Lux.UI/Components/Compo/OfferRowMan.razor.cs
+++ b/Lux.UI/Components/Compo/OfferRowMan.razor.cs
@@ -197,17 +197,6 @@ namespace Lux.UI.Components.Compo
await EC_Updated.InvokeAsync(true);
}
- ///
- /// Legge i dati dei record completi
- ///
- private async Task ReloadData()
- {
- if (OfferID > 0)
- {
- AllRecords = await DLService.OfferRowGetByOffer(OfferID);
- totalCount = AllRecords.Count();
- }
- }
///
/// Svuota cache corrente + rilegge dati
///
@@ -222,6 +211,18 @@ namespace Lux.UI.Components.Compo
isLoading = false;
}
+ ///
+ /// Legge i dati dei record completi
+ ///
+ private async Task ReloadData()
+ {
+ if (OfferID > 0)
+ {
+ AllRecords = await DLService.OfferRowGetByOffer(OfferID);
+ totalCount = AllRecords.Count();
+ }
+ }
+
///
/// salva nel record corrente la BOM aggiornata e poi ricalcola importo...
///
diff --git a/Lux.UI/Lux.UI.csproj b/Lux.UI/Lux.UI.csproj
index ac3e0c79..7ea41b3b 100644
--- a/Lux.UI/Lux.UI.csproj
+++ b/Lux.UI/Lux.UI.csproj
@@ -5,7 +5,7 @@
enable
enable
aspnet-Lux.UI-a758c101-a2f4-4e38-977d-1c4887dbbd50
- 0.9.2509.2417
+ 0.9.2509.2418
diff --git a/Resources/ChangeLog.html b/Resources/ChangeLog.html
index 430ad22e..4092c32d 100644
--- a/Resources/ChangeLog.html
+++ b/Resources/ChangeLog.html
@@ -1,6 +1,6 @@
LUX - Web Windows MES
- Versione: 0.9.2509.2417
+ Versione: 0.9.2509.2418
Note di rilascio:
-
diff --git a/Resources/VersNum.txt b/Resources/VersNum.txt
index 647b6fa8..683e8e87 100644
--- a/Resources/VersNum.txt
+++ b/Resources/VersNum.txt
@@ -1 +1 @@
-0.9.2509.2417
+0.9.2509.2418
diff --git a/Resources/manifest.xml b/Resources/manifest.xml
index 0a85f6b6..55662aee 100644
--- a/Resources/manifest.xml
+++ b/Resources/manifest.xml
@@ -1,6 +1,6 @@
-
- 0.9.2509.2417
+ 0.9.2509.2418
http://nexus.steamware.net/repository/SWS/GPW/stable/GPW.UI.zip
http://nexus.steamware.net/repository/SWS/GPW/stable/ChangeLog.html
false