Sviluppo TradingBot
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
using System.Windows.Media;
|
||||
using DesktopBot.Services;
|
||||
|
||||
namespace DesktopBot.ViewModels
|
||||
{
|
||||
/// <summary>
|
||||
/// ViewModel per l'indicatore di ping verso Alpaca.
|
||||
/// Esposto in MainViewModel e mostrato nella sidebar.
|
||||
/// </summary>
|
||||
public class PingViewModel : BaseViewModel
|
||||
{
|
||||
private int _latencyMs = -1;
|
||||
private bool _isOnline;
|
||||
private string _statusText = "---";
|
||||
private Brush _statusColor;
|
||||
|
||||
private static readonly Brush BrushGood = new SolidColorBrush(Color.FromRgb(0x00, 0xC8, 0x5A)); // verde
|
||||
private static readonly Brush BrushFair = new SolidColorBrush(Color.FromRgb(0xFF, 0xBF, 0x00)); // giallo
|
||||
private static readonly Brush BrushPoor = new SolidColorBrush(Color.FromRgb(0xFF, 0x60, 0x00)); // arancione
|
||||
private static readonly Brush BrushOffline = new SolidColorBrush(Color.FromRgb(0xFF, 0x33, 0x33)); // rosso
|
||||
private static readonly Brush BrushIdle = new SolidColorBrush(Color.FromRgb(0x66, 0x66, 0x80)); // grigio
|
||||
|
||||
public int LatencyMs
|
||||
{
|
||||
get => _latencyMs;
|
||||
private set => SetProperty(ref _latencyMs, value);
|
||||
}
|
||||
|
||||
public bool IsOnline
|
||||
{
|
||||
get => _isOnline;
|
||||
private set => SetProperty(ref _isOnline, value);
|
||||
}
|
||||
|
||||
public string StatusText
|
||||
{
|
||||
get => _statusText;
|
||||
private set => SetProperty(ref _statusText, value);
|
||||
}
|
||||
|
||||
public Brush StatusColor
|
||||
{
|
||||
get => _statusColor ??= BrushIdle;
|
||||
private set => SetProperty(ref _statusColor, value);
|
||||
}
|
||||
|
||||
public void Update(PingResult result)
|
||||
{
|
||||
var dispatcher = System.Windows.Application.Current?.Dispatcher;
|
||||
if (dispatcher != null && !dispatcher.CheckAccess())
|
||||
{
|
||||
dispatcher.Invoke(() => Apply(result));
|
||||
return;
|
||||
}
|
||||
Apply(result);
|
||||
}
|
||||
|
||||
private void Apply(PingResult result)
|
||||
{
|
||||
LatencyMs = result.LatencyMs;
|
||||
IsOnline = result.IsSuccess;
|
||||
|
||||
switch (result.Status)
|
||||
{
|
||||
case PingStatus.Good:
|
||||
StatusText = $"{result.LatencyMs} ms";
|
||||
StatusColor = BrushGood;
|
||||
break;
|
||||
case PingStatus.Fair:
|
||||
StatusText = $"{result.LatencyMs} ms";
|
||||
StatusColor = BrushFair;
|
||||
break;
|
||||
case PingStatus.Poor:
|
||||
StatusText = $"{result.LatencyMs} ms";
|
||||
StatusColor = BrushPoor;
|
||||
break;
|
||||
default:
|
||||
StatusText = "OFFLINE";
|
||||
StatusColor = BrushOffline;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user