web UI
This commit is contained in:
108
VisionBuilder.UI.Blazor/Components/SingleCameraControl.razor.cs
Normal file
108
VisionBuilder.UI.Blazor/Components/SingleCameraControl.razor.cs
Normal file
@@ -0,0 +1,108 @@
|
||||
using System.ComponentModel;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using VisionBuilder.UI.Common;
|
||||
|
||||
namespace VisionBuilder.UI.Blazor.Components;
|
||||
|
||||
public partial class SingleCameraControl : ComponentBase, IDisposable
|
||||
{
|
||||
[Parameter] public SingleCameraVM? ViewModel { get; set; }
|
||||
|
||||
private string _cameraLabel = "";
|
||||
private string _currentRecipeName = "Select recipe";
|
||||
private bool _canSelectRecipe;
|
||||
private bool _canStart;
|
||||
private bool _canStop;
|
||||
private bool _canPause;
|
||||
private bool _canResume;
|
||||
private bool _canHotReload;
|
||||
private bool _showPauseButton;
|
||||
private SingleCameraVM? _subscribedVm;
|
||||
|
||||
protected override void OnParametersSet()
|
||||
{
|
||||
if (_subscribedVm != ViewModel)
|
||||
{
|
||||
Unsubscribe();
|
||||
Subscribe();
|
||||
}
|
||||
}
|
||||
|
||||
private void Subscribe()
|
||||
{
|
||||
_subscribedVm = ViewModel;
|
||||
if (ViewModel != null)
|
||||
{
|
||||
ViewModel.PropertyChanged += OnPropertyChanged;
|
||||
UpdateState();
|
||||
}
|
||||
}
|
||||
|
||||
private void Unsubscribe()
|
||||
{
|
||||
if (_subscribedVm != null)
|
||||
_subscribedVm.PropertyChanged -= OnPropertyChanged;
|
||||
_subscribedVm = null;
|
||||
}
|
||||
|
||||
private void UpdateState()
|
||||
{
|
||||
if (ViewModel == null) return;
|
||||
_cameraLabel = ViewModel.CameraLabelAndStatus;
|
||||
_currentRecipeName = ViewModel.CurrentRecipeName;
|
||||
_canSelectRecipe = ViewModel.IsNotRunning;
|
||||
_canStart = ViewModel.CanStart;
|
||||
_canStop = ViewModel.CanStop;
|
||||
_canPause = ViewModel.CanPause;
|
||||
_canResume = ViewModel.CanResume;
|
||||
_canHotReload = ViewModel.CanHotReload;
|
||||
_showPauseButton = ViewModel.CanPause || ViewModel.CanResume;
|
||||
}
|
||||
|
||||
private async void OnPropertyChanged(object? sender, PropertyChangedEventArgs e)
|
||||
{
|
||||
UpdateState();
|
||||
await InvokeAsync(StateHasChanged);
|
||||
}
|
||||
|
||||
private async Task OnSelectRecipe()
|
||||
{
|
||||
if (ViewModel?.SelectRecipeCommand.CanExecute(null) == true)
|
||||
await ViewModel.SelectRecipe();
|
||||
}
|
||||
|
||||
private async Task OnStart()
|
||||
{
|
||||
if (ViewModel?.StartCommand.CanExecute(null) == true)
|
||||
await ViewModel.Start();
|
||||
}
|
||||
|
||||
private async Task OnStop()
|
||||
{
|
||||
if (ViewModel?.StopCommand.CanExecute(null) == true)
|
||||
await ViewModel.Stop();
|
||||
}
|
||||
|
||||
private void OnPause()
|
||||
{
|
||||
if (ViewModel?.PauseCommand.CanExecute(null) == true)
|
||||
ViewModel.PauseCommand.Execute(null);
|
||||
}
|
||||
|
||||
private void OnResume()
|
||||
{
|
||||
if (ViewModel?.ResumeCommand.CanExecute(null) == true)
|
||||
ViewModel.ResumeCommand.Execute(null);
|
||||
}
|
||||
|
||||
private void OnHotReload()
|
||||
{
|
||||
if (ViewModel?.HotReloadCommand.CanExecute(null) == true)
|
||||
ViewModel.HotReloadCommand.Execute(null);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
Unsubscribe();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user