@* Component: RobotModelDetailsPanel Purpose: Displays detailed information about a selected robot model. Shows image preview with navigation point, dimensions, and usage statistics. *@ @using RobotNet10.FleetManager.Shared.DTOs.RobotModel @using RobotNet10.FleetManager.Client.Services @using RobotNet10.FleetManager.Client.Components.RobotModelManager.Dialogs @using RobotNet10.MapEditor.Services.API @using RobotNet10.MapEditor.Shared.DTOs.VehicleType @inject IDialogService DialogService @inject MapManagerApiService MapApiService Model Name: @RobotModel.ModelName Navigation Type: @RobotModel.NavigationType Vehicle Type: @if (RobotModel.VehicleTypeId.HasValue) { @if (vehicleTypeName != null) { @vehicleTypeName } else if (isLoadingVehicleType) { } else { @RobotModel.VehicleTypeId.Value.ToString("N") } } else { Not assigned } Dimensions: @($"{RobotModel.Length}m × {RobotModel.Width}m") Image Size: @($"{RobotModel.ImageWidth} × {RobotModel.ImageHeight} px") Navigation Point: @($"X: {RobotModel.NavigationPointX}m, Y: {RobotModel.NavigationPointY}m") Robot Count: @RobotModel.RobotCount Created: @RobotModel.CreatedDate.ToString("g") @if (RobotModel.UpdatedDate.HasValue) { Updated: @RobotModel.UpdatedDate.Value.ToString("g") } @code { [Parameter] public RobotModelDto RobotModel { get; set; } = null!; private string? vehicleTypeName; private bool isLoadingVehicleType = false; protected override async Task OnInitializedAsync() { if (RobotModel.VehicleTypeId.HasValue) { await LoadVehicleTypeNameAsync(); } } protected override async Task OnParametersSetAsync() { if (RobotModel.VehicleTypeId.HasValue) { await LoadVehicleTypeNameAsync(); } else { vehicleTypeName = null; } } private async Task LoadVehicleTypeNameAsync() { if (!RobotModel.VehicleTypeId.HasValue) { vehicleTypeName = null; return; } isLoadingVehicleType = true; StateHasChanged(); try { var vehicleType = await MapApiService.GetVehicleTypeAsync(RobotModel.VehicleTypeId.Value); if (vehicleType != null) { vehicleTypeName = $"{vehicleType.VehicleTypeId} - {vehicleType.VehicleTypeName}"; } else { vehicleTypeName = null; } } catch (Exception) { vehicleTypeName = null; } finally { isLoadingVehicleType = false; StateHasChanged(); } } }