57 lines
1.6 KiB
C#
57 lines
1.6 KiB
C#
using Microsoft.AspNetCore.Components;
|
|
using System;
|
|
using System.Diagnostics;
|
|
|
|
namespace GWMS.UI.Components
|
|
{
|
|
public abstract class BaseComp : ComponentBase, IDisposable
|
|
{
|
|
#region Public Methods
|
|
|
|
public virtual void Dispose()
|
|
{
|
|
// Opzionale: logga quando l'utente lascia la pagina/componente
|
|
}
|
|
|
|
#endregion Public Methods
|
|
|
|
#region Protected Fields
|
|
|
|
/// <summary>
|
|
/// Sorgente statica condivisa per tutto il layer UI
|
|
/// </summary>
|
|
protected static readonly ActivitySource UIActivitySource = new ActivitySource("GWMS.UI");
|
|
|
|
#endregion Protected Fields
|
|
|
|
#region Protected Properties
|
|
|
|
[Inject]
|
|
protected NavigationManager Navigation { get; set; } = default!;
|
|
|
|
#endregion Protected Properties
|
|
|
|
#region Protected Methods
|
|
|
|
/// <summary>
|
|
/// Avvia un'attività tracciata con metadati standard del componente
|
|
/// </summary>
|
|
protected Activity? StartTracing(string operationName)
|
|
{
|
|
// Verifica se qualcuno sta ascoltando questa sorgente
|
|
if (!UIActivitySource.HasListeners()) return null;
|
|
|
|
// init activity con nome gestito
|
|
var activity = UIActivitySource.StartActivity($"{GetType().Name}:{operationName}");
|
|
|
|
// Aggiungiamo tag standard utili per il debug su Uptrace
|
|
activity?.SetTag("ui.component_type", GetType().Name);
|
|
activity?.SetTag("ui.url", Navigation.Uri);
|
|
activity?.SetTag("data.source", "UI");
|
|
|
|
return activity;
|
|
}
|
|
|
|
#endregion Protected Methods
|
|
}
|
|
} |