Optimizacion de codigo, limpieza residual y actualizacionde hover de elevaciones
This commit is contained in:
@@ -29,9 +29,6 @@ public partial class PlanificadorRutas : ComponentBase
|
||||
private bool _pintandoParadas = false;
|
||||
private Task? _tareaCargaRed;
|
||||
|
||||
private readonly RealTimeMap.PointSymbol _simboloOrigen = new() { color = "green", fillColor = "green", radius = 8 };
|
||||
private readonly RealTimeMap.PointSymbol _simboloDestino = new() { color = "red", fillColor = "red", radius = 8 };
|
||||
|
||||
private int _versionCalculo = 0;
|
||||
private int _versionPintadoRuta = 0;
|
||||
private CancellationTokenSource? _ctsCalculo;
|
||||
@@ -511,23 +508,6 @@ public partial class PlanificadorRutas : ComponentBase
|
||||
return stops;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Construye el payload JS de paradas de un tramo de bus.
|
||||
/// </summary>
|
||||
private List<object> BuildStopsForTramoBus(TramoBus tramo)
|
||||
=> BuildStopsDesdeParadas(BuildParadasForTramoBus(tramo));
|
||||
|
||||
/// <summary>
|
||||
/// Registra paradas visibles de un itinerario activo para permitir popup aunque la capa general esté oculta.
|
||||
/// </summary>
|
||||
private void RegistrarParadasItinerarioVisibles(string id, IEnumerable<Parada> paradas)
|
||||
{
|
||||
_paradasItinerarioVisiblesPorId[id] = paradas
|
||||
.GroupBy(p => p.Codigo, StringComparer.OrdinalIgnoreCase)
|
||||
.Select(g => g.First())
|
||||
.ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Elimina el registro de paradas visibles de un itinerario activo.
|
||||
/// </summary>
|
||||
@@ -638,53 +618,12 @@ public partial class PlanificadorRutas : ComponentBase
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Gestiona linea completa variante.
|
||||
/// </summary>
|
||||
private double[,]? ConstruirLineaCompletaVariante(InfoVariante v)
|
||||
{
|
||||
if (v is null || v.CodigosParadas is null || v.CodigosParadas.Count < 2) return null;
|
||||
|
||||
var pts = new List<double[]>(v.CodigosParadas.Count);
|
||||
|
||||
foreach (var cod in v.CodigosParadas)
|
||||
{
|
||||
if (_paradaByCode.TryGetValue(cod, out var p))
|
||||
pts.Add(new[] { p.Latitud, p.Longitud });
|
||||
}
|
||||
|
||||
if (pts.Count < 2) return null;
|
||||
|
||||
var arr = new double[pts.Count, 2];
|
||||
for (int i = 0; i < pts.Count; i++)
|
||||
{
|
||||
arr[i, 0] = pts[i][0];
|
||||
arr[i, 1] = pts[i][1];
|
||||
}
|
||||
return arr;
|
||||
}
|
||||
|
||||
|
||||
// ✅ Rango de líneas
|
||||
private bool _activarRangoLineas = false;
|
||||
private int _lineaMin = 1;
|
||||
private int _lineaMax = 200;
|
||||
private readonly HashSet<int> _lineasPermitidas = new();
|
||||
|
||||
/// <summary>
|
||||
/// Gestiona dentro rango.
|
||||
/// </summary>
|
||||
private bool LineaDentroRango(InfoVariante v)
|
||||
{
|
||||
if (!_activarRangoLineas) return true;
|
||||
|
||||
int codLinea = CodigoLineaAsInt(v); // ya lo tienes hecho
|
||||
if (codLinea == int.MaxValue) return false; // si no se puede parsear, fuera
|
||||
|
||||
return _lineasPermitidas.Contains(codLinea);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
@@ -859,19 +798,6 @@ public partial class PlanificadorRutas : ComponentBase
|
||||
linea[0, 1] = punto[1];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sobrescribe el ultimo punto de una linea.
|
||||
/// </summary>
|
||||
private static void EstablecerUltimoPunto(double[,]? linea, double[]? punto)
|
||||
{
|
||||
if (linea is null || punto is null || linea.GetLength(0) == 0)
|
||||
return;
|
||||
|
||||
var ultimo = linea.GetLength(0) - 1;
|
||||
linea[ultimo, 0] = punto[0];
|
||||
linea[ultimo, 1] = punto[1];
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Obtiene la distancia entre dos puntos geograficos.
|
||||
/// </summary>
|
||||
@@ -1617,45 +1543,6 @@ public partial class PlanificadorRutas : ComponentBase
|
||||
? alternativa.Etiqueta
|
||||
: $"Opcion {indice + 1}";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Obtiene las siglas compactas de categorías adicionales para una alternativa final.
|
||||
/// </summary>
|
||||
private List<string> ObtenerSiglasExtrasAlternativa(AlternativaRuta alternativa)
|
||||
{
|
||||
if (alternativa.EsSoloAPie)
|
||||
return new();
|
||||
|
||||
var alternativasBus = _opcionesRuta
|
||||
.Where(x => !x.EsSoloAPie && x.AlternativaBus is not null)
|
||||
.ToList();
|
||||
|
||||
if (alternativasBus.Count == 0)
|
||||
return new();
|
||||
|
||||
var extras = new List<string>(2);
|
||||
var etiqueta = alternativa.Etiqueta ?? string.Empty;
|
||||
|
||||
var minCoste = alternativasBus.Min(x => x.PuntuacionCoste);
|
||||
if (!EtiquetaPrincipalEs(etiqueta, "Más rápida") && alternativa.PuntuacionCoste <= minCoste + 0.001)
|
||||
extras.Add("MR");
|
||||
|
||||
var minTransbordos = alternativasBus.Min(x => x.NumeroTransbordosReales);
|
||||
if (!EtiquetaPrincipalEs(etiqueta, "Menos transbordos") && alternativa.NumeroTransbordosReales == minTransbordos)
|
||||
extras.Add("MT");
|
||||
|
||||
var minDistanciaPie = alternativasBus.Min(x => x.DistanciaPieTotalAprox);
|
||||
if (!EtiquetaPrincipalEs(etiqueta, "Menos andar") && alternativa.DistanciaPieTotalAprox <= minDistanciaPie + 0.001)
|
||||
extras.Add("MA");
|
||||
|
||||
return extras;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Comprueba si la etiqueta principal ya corresponde a una categoría destacada concreta.
|
||||
/// </summary>
|
||||
private static bool EtiquetaPrincipalEs(string? etiquetaActual, string etiquetaEsperada)
|
||||
=> string.Equals(etiquetaActual?.Trim(), etiquetaEsperada, StringComparison.OrdinalIgnoreCase);
|
||||
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user