- Añadida info del punto z anterior
+ Titulo cambiado
+ Direccion
+ Distancia andando
- Lugares reubicados en el modal del punto Z
- Añadida Configuracion completa al json del historial
- Modo por defecto añadido al switch de configuracion de historial
- Foco añadido a las versiones andando
123 lines
4.3 KiB
C#
123 lines
4.3 KiB
C#
using System.Globalization;
|
|
|
|
namespace RutasDBUS.Components.Pages;
|
|
|
|
public partial class PlanificadorRutas
|
|
{
|
|
private PuntoInspectorAnterior? _inspectorPuntoAnterior;
|
|
|
|
private sealed record PuntoInspectorAnterior(
|
|
double Latitud,
|
|
double Longitud,
|
|
double? ElevacionIdee,
|
|
double? ElevacionLocal5,
|
|
double? ElevacionLocal2,
|
|
double? ElevacionLocal1,
|
|
string Direccion,
|
|
double? DistanciaAndandoMetros,
|
|
bool CalculandoDatosAdicionales);
|
|
|
|
private double? ObtenerElevacionPuntoInspectorAnterior(PuntoInspectorAnterior punto)
|
|
=> UsarElevacionLocal1ParaCalculo
|
|
? punto.ElevacionLocal1
|
|
: UsarElevacionLocal2ParaCalculo
|
|
? punto.ElevacionLocal2
|
|
: UsarElevacionLocal5ParaCalculo
|
|
? punto.ElevacionLocal5
|
|
: punto.ElevacionIdee;
|
|
|
|
private double? ObtenerElevacionPuntoInspectorActual()
|
|
=> UsarElevacionLocal1ParaCalculo
|
|
? _inspectorElevLocal1
|
|
: UsarElevacionLocal2ParaCalculo
|
|
? _inspectorElevLocal2
|
|
: UsarElevacionLocal5ParaCalculo
|
|
? _inspectorElevLocal5
|
|
: _inspectorElevIdee;
|
|
|
|
private static string FormatearDistanciaPuntoInspector(double distanciaMetros)
|
|
=> distanciaMetros < 1000
|
|
? distanciaMetros.ToString("0.0", CultureInfo.InvariantCulture) + " m"
|
|
: (distanciaMetros / 1000.0).ToString("0.000", CultureInfo.InvariantCulture) + " km";
|
|
|
|
private static string FormatearAlturaPuntoInspector(double? altura)
|
|
=> altura is { } valor
|
|
? valor.ToString("0.00", CultureInfo.InvariantCulture) + " m"
|
|
: "-";
|
|
|
|
private static string FormatearDiferenciaAlturaPuntoInspector(
|
|
double? alturaActual,
|
|
double? alturaAnterior)
|
|
=> alturaActual is { } actual && alturaAnterior is { } anterior
|
|
? (actual - anterior).ToString("+0.00;-0.00;0.00", CultureInfo.InvariantCulture) + " m"
|
|
: "-";
|
|
|
|
private string ObtenerDireccionPuntoInspectorActual()
|
|
=> FormatearLugarCallejeroResumen(_inspectorLugaresCercanos.FirstOrDefault());
|
|
|
|
private async Task<string> ResolverDireccionPuntoInspectorAnteriorAsync(PuntoInspectorAnterior punto)
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(punto.Direccion))
|
|
return punto.Direccion;
|
|
|
|
try
|
|
{
|
|
var cercano = await GeocodificadorLocal.BuscarMasCercanoAsync(
|
|
punto.Latitud,
|
|
punto.Longitud,
|
|
CancellationToken.None);
|
|
return FormatearLugarCallejeroResumen(cercano);
|
|
}
|
|
catch
|
|
{
|
|
return string.Empty;
|
|
}
|
|
}
|
|
|
|
private async Task CompletarDatosPuntoInspectorAnteriorAsync(
|
|
PuntoInspectorAnterior punto,
|
|
int versionInspector)
|
|
{
|
|
try
|
|
{
|
|
var tareaDireccion = ResolverDireccionPuntoInspectorAnteriorAsync(punto);
|
|
var tareaCaminata = WalkCached(
|
|
punto.Latitud,
|
|
punto.Longitud,
|
|
_inspectorLat,
|
|
_inspectorLon);
|
|
|
|
await Task.WhenAll(tareaDireccion, tareaCaminata);
|
|
|
|
if (versionInspector != _versionInspector || _inspectorPuntoAnterior is not { } puntoVigente ||
|
|
puntoVigente.Latitud != punto.Latitud || puntoVigente.Longitud != punto.Longitud)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var caminata = await tareaCaminata;
|
|
_inspectorPuntoAnterior = puntoVigente with
|
|
{
|
|
Direccion = await tareaDireccion,
|
|
DistanciaAndandoMetros = caminata.line is not null && caminata.dist > 0
|
|
? caminata.dist
|
|
: null,
|
|
CalculandoDatosAdicionales = false
|
|
};
|
|
|
|
await InvokeAsync(StateHasChanged);
|
|
}
|
|
catch
|
|
{
|
|
if (versionInspector != _versionInspector || _inspectorPuntoAnterior is not { } puntoVigente ||
|
|
puntoVigente.Latitud != punto.Latitud || puntoVigente.Longitud != punto.Longitud)
|
|
{
|
|
return;
|
|
}
|
|
|
|
_inspectorPuntoAnterior = puntoVigente with { CalculandoDatosAdicionales = false };
|
|
await InvokeAsync(StateHasChanged);
|
|
}
|
|
}
|
|
}
|