@page "/robot-monitor"
@rendermode InteractiveWebAssemblyNoPrerender
@inject RobotApp.Client.Services.RobotMonitorService MonitorService
@implements IAsyncDisposable
Robot Monitor
@code {
private RobotMonitorDto? _monitorData;
private RobotApp.Client.Pages.Components.Monitor.RobotMonitorView? RobotMonitorViewRef;
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender)
{
MonitorService.OnDataReceived += OnMonitorDataReceived;
await MonitorService.StartAsync();
}
}
private void OnMonitorDataReceived(RobotMonitorDto data)
{
_monitorData = data;
RobotMonitorViewRef?.UpdatePath();
InvokeAsync(StateHasChanged);
}
public async ValueTask DisposeAsync()
{
MonitorService.OnDataReceived -= OnMonitorDataReceived;
await MonitorService.StopAsync();
}
}