@inject IHttpClientFactory HttpClientFactory @inject ISnackbar Snackbar
Edge
Chiều dài tối thiểu khi tạo Edge (m)
Vận tốc lớn nhất cho phép khi di chuyển trên Edge (thẳng) (m/s)
Vận tốc lớn nhất cho phép khi di chuyển trên Edge (cong) (m/s)
Chiều cao lớn nhất cho phép di chuyển trên Edge (m)
Chiều cao tối thiểu cho phép di chuyển trên Edge (m)
Vận tốc quay lớn nhất cho phép di chuyển trên Edge (rad/s)
Sai số cho phép về tọa độ X,Y khi đi qua Edge (m)
Sai số cho phép về góc khi đi qua Edge (degree)
Node
Sai số cho phép về tọa độ X,Y khi đi qua Node (m)
Sai số cho phép về góc khi đi qua Node (degree)
Zone
Diện tích tối thiểu khi tạo Zone (m2)
@code { [Parameter, EditorRequired] public Guid Id { get; set; } private readonly MapSettingDefaultDto MapSettingDefaultDto = new(); private readonly MapSettingDefaultDto MapSettingDefaultResetDto = new(); private bool OverlayVisible; private HttpClient Http = default!; protected override async Task OnAfterRenderAsync(bool firstRender) { await base.OnAfterRenderAsync(firstRender); if (!firstRender) return; Http = HttpClientFactory.CreateClient("MapManagerAPI"); await LoadMapVersionConfig(); StateHasChanged(); } private async Task LoadMapVersionConfig() { OverlayVisible = true; StateHasChanged(); var result = await Http.GetFromJsonAsync>($"api/MapsSetting/{Id}"); if (result == null) { Snackbar.Add("Lỗi giao tiếp với hệ thống", Severity.Error); return; } if (!result.IsSuccess) { Snackbar.Add(result.Message, Severity.Error); return; } if (result.Data == null) { Snackbar.Add("Không tìm thấy cấu hình mặc định cho bản đồ này", Severity.Error); return; } SetConfigBindingDto(result.Data); SetConfigResetDto(result.Data); OverlayVisible = false; StateHasChanged(); } private void SetConfigResetDto(MapSettingDefaultDto dto) { MapSettingDefaultResetDto.Id = dto.Id; MapSettingDefaultResetDto.EdgeMinLength = dto.EdgeMinLength; MapSettingDefaultResetDto.EdgeMinHeight = dto.EdgeMinHeight; MapSettingDefaultResetDto.EdgeMaxHeight = dto.EdgeMaxHeight; MapSettingDefaultResetDto.EdgeMaxRotationSpeed = dto.EdgeMaxRotationSpeed; MapSettingDefaultResetDto.EdgeStraightMaxSpeed = dto.EdgeStraightMaxSpeed; MapSettingDefaultResetDto.EdgeCurveMaxSpeed = dto.EdgeCurveMaxSpeed; MapSettingDefaultResetDto.EdgeDirectionAllowed = dto.EdgeDirectionAllowed; MapSettingDefaultResetDto.EdgeRotationAllowed = dto.EdgeRotationAllowed; MapSettingDefaultResetDto.EdgeAllowedDeviationXy = dto.EdgeAllowedDeviationXy; MapSettingDefaultResetDto.EdgeAllowedDeviationTheta = dto.EdgeAllowedDeviationTheta; MapSettingDefaultResetDto.NodeAllowedDeviationXy = dto.NodeAllowedDeviationXy; MapSettingDefaultResetDto.NodeAllowedDeviationTheta = dto.NodeAllowedDeviationTheta; MapSettingDefaultResetDto.NodeNameAutoGenerate = dto.NodeNameAutoGenerate; MapSettingDefaultResetDto.NodeNameTemplate = dto.NodeNameTemplate; MapSettingDefaultResetDto.ZoneMinSquare = dto.ZoneMinSquare; } private void SetConfigBindingDto(MapSettingDefaultDto dto) { MapSettingDefaultDto.Id = dto.Id; MapSettingDefaultDto.EdgeMinLength = dto.EdgeMinLength; MapSettingDefaultDto.EdgeMinHeight = dto.EdgeMinHeight; MapSettingDefaultDto.EdgeMaxHeight = dto.EdgeMaxHeight; MapSettingDefaultDto.EdgeMaxRotationSpeed = dto.EdgeMaxRotationSpeed; MapSettingDefaultDto.EdgeStraightMaxSpeed = dto.EdgeStraightMaxSpeed; MapSettingDefaultDto.EdgeCurveMaxSpeed = dto.EdgeCurveMaxSpeed; MapSettingDefaultDto.EdgeDirectionAllowed = dto.EdgeDirectionAllowed; MapSettingDefaultDto.EdgeRotationAllowed = dto.EdgeRotationAllowed; MapSettingDefaultDto.EdgeAllowedDeviationXy = dto.EdgeAllowedDeviationXy; MapSettingDefaultDto.EdgeAllowedDeviationTheta = dto.EdgeAllowedDeviationTheta; MapSettingDefaultDto.NodeAllowedDeviationXy = dto.NodeAllowedDeviationXy; MapSettingDefaultDto.NodeAllowedDeviationTheta = dto.NodeAllowedDeviationTheta; MapSettingDefaultDto.NodeNameAutoGenerate = dto.NodeNameAutoGenerate; MapSettingDefaultDto.NodeNameTemplate = dto.NodeNameTemplate; MapSettingDefaultDto.ZoneMinSquare = dto.ZoneMinSquare; } public void Reset() { SetConfigBindingDto(MapSettingDefaultResetDto); StateHasChanged(); } public async Task Save() { if (!ValidateUpdateData(MapSettingDefaultResetDto, MapSettingDefaultDto)) { Snackbar.Add("Không có sự thay đổi", Severity.Warning); return; } var result = await (await Http.PutAsJsonAsync("api/MapsSetting", MapSettingDefaultDto)).Content.ReadFromJsonAsync(); if (result == null) { Snackbar.Add("Lỗi giao tiếp với hệ thống", Severity.Error); return; } else if (!result.IsSuccess) { Snackbar.Add(result.Message, Severity.Error); return; } SetConfigResetDto(MapSettingDefaultDto); Snackbar.Add("Cập nhật thành công", Severity.Success); StateHasChanged(); } private bool ValidateUpdateData(MapSettingDefaultDto old, MapSettingDefaultDto update) { if (old.EdgeStraightMaxSpeed != update.EdgeStraightMaxSpeed) return true; if (old.EdgeCurveMaxSpeed != update.EdgeCurveMaxSpeed) return true; if (old.EdgeMaxRotationSpeed != update.EdgeMaxRotationSpeed) return true; if (old.EdgeMinLength != update.EdgeMinLength) return true; if (old.EdgeMinHeight != update.EdgeMinHeight) return true; if (old.EdgeMaxHeight != update.EdgeMaxHeight) return true; if (old.EdgeDirectionAllowed != update.EdgeDirectionAllowed) return true; if (old.EdgeRotationAllowed != update.EdgeRotationAllowed) return true; if (old.EdgeAllowedDeviationXy != update.EdgeAllowedDeviationXy) return true; if (old.EdgeAllowedDeviationTheta != update.EdgeAllowedDeviationTheta) return true; if (old.NodeAllowedDeviationXy != update.NodeAllowedDeviationXy) return true; if (old.NodeAllowedDeviationTheta != update.NodeAllowedDeviationTheta) return true; if (old.NodeNameAutoGenerate != update.NodeNameAutoGenerate) return true; if (old.NodeNameTemplate != update.NodeNameTemplate) return true; if (old.ZoneMinSquare != update.ZoneMinSquare) return true; return false; } }