Optimizacion de codigo, limpieza residual y actualizacionde hover de elevaciones

This commit is contained in:
2026-07-14 12:13:53 +02:00
parent 4c71402e24
commit ba502e8ebf
12 changed files with 22 additions and 2931 deletions

View File

@@ -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>