Add XML documentation across gateway, worker, and .NET client
This commit is contained in:
@@ -2,6 +2,11 @@ namespace MxGateway.Server.Dashboard.Components;
|
||||
|
||||
public static class DashboardDisplay
|
||||
{
|
||||
/// <summary>
|
||||
/// Formats a nullable date and time value for display.
|
||||
/// </summary>
|
||||
/// <param name="value">The date and time to format.</param>
|
||||
/// <returns>Formatted date and time string or "-" if null.</returns>
|
||||
public static string DateTime(DateTimeOffset? value)
|
||||
{
|
||||
return value.HasValue
|
||||
@@ -9,6 +14,11 @@ public static class DashboardDisplay
|
||||
: "-";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Formats a time span duration for display.
|
||||
/// </summary>
|
||||
/// <param name="value">The duration to format.</param>
|
||||
/// <returns>Formatted duration string.</returns>
|
||||
public static string Duration(TimeSpan value)
|
||||
{
|
||||
return value.TotalDays >= 1
|
||||
@@ -16,16 +26,33 @@ public static class DashboardDisplay
|
||||
: value.ToString(@"hh\:mm\:ss", System.Globalization.CultureInfo.InvariantCulture);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Formats a nullable text value for display.
|
||||
/// </summary>
|
||||
/// <param name="value">The text to format.</param>
|
||||
/// <returns>Formatted text or "-" if null or empty.</returns>
|
||||
public static string Text(string? value)
|
||||
{
|
||||
return string.IsNullOrWhiteSpace(value) ? "-" : value;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Formats a long count value for display with thousands separator.
|
||||
/// </summary>
|
||||
/// <param name="value">The count to format.</param>
|
||||
/// <returns>Formatted count string.</returns>
|
||||
public static string Count(long value)
|
||||
{
|
||||
return value.ToString("N0", System.Globalization.CultureInfo.InvariantCulture);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Retrieves a metric value from a snapshot by name and optional dimension.
|
||||
/// </summary>
|
||||
/// <param name="snapshot">Dashboard snapshot.</param>
|
||||
/// <param name="name">Metric name.</param>
|
||||
/// <param name="dimension">Optional metric dimension.</param>
|
||||
/// <returns>Metric value or zero if not found.</returns>
|
||||
public static long MetricValue(DashboardSnapshot snapshot, string name, string? dimension = null)
|
||||
{
|
||||
return snapshot.Metrics.FirstOrDefault(metric =>
|
||||
|
||||
@@ -2,21 +2,32 @@ using Microsoft.AspNetCore.Components;
|
||||
|
||||
namespace MxGateway.Server.Dashboard.Components;
|
||||
|
||||
/// <summary>
|
||||
/// Base class for Blazor dashboard pages that watch gateway metrics snapshots.
|
||||
/// </summary>
|
||||
public abstract class DashboardPageBase : ComponentBase, IAsyncDisposable
|
||||
{
|
||||
private readonly CancellationTokenSource _disposeCancellation = new();
|
||||
private Task? _watchTask;
|
||||
|
||||
/// <summary>
|
||||
/// Service that provides gateway metric snapshots.
|
||||
/// </summary>
|
||||
[Inject]
|
||||
protected IDashboardSnapshotService SnapshotService { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// The most recent gateway metric snapshot, updated as it changes.
|
||||
/// </summary>
|
||||
protected DashboardSnapshot? Snapshot { get; private set; }
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void OnInitialized()
|
||||
{
|
||||
_watchTask = WatchSnapshotsAsync();
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public async ValueTask DisposeAsync()
|
||||
{
|
||||
await _disposeCancellation.CancelAsync().ConfigureAwait(false);
|
||||
@@ -29,6 +40,9 @@ public abstract class DashboardPageBase : ComponentBase, IAsyncDisposable
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Watches snapshot changes and triggers component refresh.
|
||||
/// </summary>
|
||||
private async Task WatchSnapshotsAsync()
|
||||
{
|
||||
try
|
||||
|
||||
Reference in New Issue
Block a user