From b52cea97b154229304ad0af6f424dc5a83bd657f Mon Sep 17 00:00:00 2001 From: Pedro Date: Fri, 28 Aug 2026 13:53:19 +0200 Subject: [PATCH] cambios n el horiario del taxibus MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit arreglado buscador de asti arreglado buscador con la ñ añadido 2 niveles de colores en cuestas añadido 2 niveles de umbrales en la configuracion de alturas --- .../Pages/PlanificadorRutas.Estado.cs | 4 ++ .../Pages/PlanificadorRutas.Itinerarios.cs | 2 +- .../Pages/PlanificadorRutas.Persistencia.cs | 19 +++++++ .../Pages/PlanificadorRutas.Renderizado.cs | 54 ++++++++++++++++++- .../Components/Pages/PlanificadorRutas.razor | 31 ++++++++++- .../GeocodificadorLocalServicio.cs | 11 ++-- .../Importacion/SimuladorHorariosTaxibus.cs | 10 ++-- RutasDBUS/Servicios/TaxibusDbus.cs | 2 +- RutasDBUS/wwwroot/app.css | 28 ++++++++++ 9 files changed, 150 insertions(+), 11 deletions(-) diff --git a/RutasDBUS/Components/Pages/PlanificadorRutas.Estado.cs b/RutasDBUS/Components/Pages/PlanificadorRutas.Estado.cs index c488c98..e666dd5 100644 --- a/RutasDBUS/Components/Pages/PlanificadorRutas.Estado.cs +++ b/RutasDBUS/Components/Pages/PlanificadorRutas.Estado.cs @@ -53,6 +53,8 @@ public partial class PlanificadorRutas : ComponentBase private const double PendienteMaximaEsfuerzoPorcentaje = 80.0; private const double FactorEquilibradoAndarBusPorDefecto = 6.0; private const double UmbralPendienteSubidaRutaPorDefecto = 2.0; + private const double UmbralPendienteSubidaMediaRutaPorDefecto = 5.0; + private const double UmbralPendienteSubidaFuerteRutaPorDefecto = 10.0; private const double UmbralPendienteBajadaRutaPorDefecto = 5.0; private const double UmbralAlturaAlertaPendienteRutaMetrosPorDefecto = 6.0; private const double MetrosPorPiso = 3.0; @@ -368,6 +370,8 @@ public partial class PlanificadorRutas : ComponentBase private bool _mostrarConfiguracionPendientesRuta = false; private bool _panelRutasMovilContraido = false; private double _umbralPendienteSubidaRuta = UmbralPendienteSubidaRutaPorDefecto; + private double _umbralPendienteSubidaMediaRuta = UmbralPendienteSubidaMediaRutaPorDefecto; + private double _umbralPendienteSubidaFuerteRuta = UmbralPendienteSubidaFuerteRutaPorDefecto; private double _umbralPendienteBajadaRuta = UmbralPendienteBajadaRutaPorDefecto; private double _umbralAlturaAlertaPendienteRutaMetros = UmbralAlturaAlertaPendienteRutaMetrosPorDefecto; private double _alturaPendientePositivaSignificativaRutaMetros = 0.0; diff --git a/RutasDBUS/Components/Pages/PlanificadorRutas.Itinerarios.cs b/RutasDBUS/Components/Pages/PlanificadorRutas.Itinerarios.cs index 5793427..33483b6 100644 --- a/RutasDBUS/Components/Pages/PlanificadorRutas.Itinerarios.cs +++ b/RutasDBUS/Components/Pages/PlanificadorRutas.Itinerarios.cs @@ -1202,7 +1202,7 @@ public partial class PlanificadorRutas : ComponentBase private bool _elevPopupMinimizado = false; - private const string _versionApp = "(v-20260827b)"; + private const string _versionApp = "(v-20260828a)"; private double? _paradaElevIdee; diff --git a/RutasDBUS/Components/Pages/PlanificadorRutas.Persistencia.cs b/RutasDBUS/Components/Pages/PlanificadorRutas.Persistencia.cs index e94e55b..99988e1 100644 --- a/RutasDBUS/Components/Pages/PlanificadorRutas.Persistencia.cs +++ b/RutasDBUS/Components/Pages/PlanificadorRutas.Persistencia.cs @@ -49,6 +49,8 @@ public partial class PlanificadorRutas public int? VersionFuenteElevacion { get; set; } public int? VersionPendientes { get; set; } public double? UmbralPendienteSubidaRuta { get; set; } + public double? UmbralPendienteSubidaMediaRuta { get; set; } + public double? UmbralPendienteSubidaFuerteRuta { get; set; } public double? UmbralPendienteBajadaRuta { get; set; } public double? UmbralAlturaAlertaPendienteRutaMetros { get; set; } // Compatibilidad con configuraciones guardadas cuando el umbral se expresaba en pisos. @@ -167,6 +169,8 @@ public partial class PlanificadorRutas VersionFuenteElevacion = VersionPersistenciaFuenteElevacion, VersionPendientes = VersionPersistenciaPendientes, UmbralPendienteSubidaRuta = _umbralPendienteSubidaRuta, + UmbralPendienteSubidaMediaRuta = _umbralPendienteSubidaMediaRuta, + UmbralPendienteSubidaFuerteRuta = _umbralPendienteSubidaFuerteRuta, UmbralPendienteBajadaRuta = _umbralPendienteBajadaRuta, UmbralAlturaAlertaPendienteRutaMetros = _umbralAlturaAlertaPendienteRutaMetros, VelocidadPieKmH = _velocidadPieKmH, @@ -262,6 +266,17 @@ public partial class PlanificadorRutas _umbralPendienteSubidaRuta = Math.Abs(umbralSubida - 3.0) < 0.0001 ? UmbralPendienteSubidaRutaPorDefecto : NormalizarUmbralPendienteRuta(umbralSubida); + _umbralPendienteSubidaMediaRuta = + config.UmbralPendienteSubidaMediaRuta is { } umbralSubidaMedia && + double.IsFinite(umbralSubidaMedia) + ? NormalizarUmbralPendienteRuta(umbralSubidaMedia) + : UmbralPendienteSubidaMediaRutaPorDefecto; + _umbralPendienteSubidaFuerteRuta = + config.UmbralPendienteSubidaFuerteRuta is { } umbralSubidaFuerte && + double.IsFinite(umbralSubidaFuerte) + ? NormalizarUmbralPendienteRuta(umbralSubidaFuerte) + : UmbralPendienteSubidaFuerteRutaPorDefecto; + NormalizarOrdenUmbralesColorSubidaRuta(); if (config.UmbralPendienteBajadaRuta is { } umbralBajada && double.IsFinite(umbralBajada)) _umbralPendienteBajadaRuta = Math.Abs(umbralBajada - 3.0) < 0.0001 || @@ -391,6 +406,8 @@ public partial class PlanificadorRutas _mostrarElevacionesRutaConfiguracion = true; _fuenteElevacionCalculo = FuenteElevacionLocal5; _umbralPendienteSubidaRuta = UmbralPendienteSubidaRutaPorDefecto; + _umbralPendienteSubidaMediaRuta = UmbralPendienteSubidaMediaRutaPorDefecto; + _umbralPendienteSubidaFuerteRuta = UmbralPendienteSubidaFuerteRutaPorDefecto; _umbralPendienteBajadaRuta = UmbralPendienteBajadaRutaPorDefecto; _umbralAlturaAlertaPendienteRutaMetros = UmbralAlturaAlertaPendienteRutaMetrosPorDefecto; _velocidadPieKmH = 3.6; @@ -444,6 +461,8 @@ public partial class PlanificadorRutas _mostrarElevacionesRutaConfiguracion = true; _fuenteElevacionCalculo = FuenteElevacionLocal5; _umbralPendienteSubidaRuta = UmbralPendienteSubidaRutaPorDefecto; + _umbralPendienteSubidaMediaRuta = UmbralPendienteSubidaMediaRutaPorDefecto; + _umbralPendienteSubidaFuerteRuta = UmbralPendienteSubidaFuerteRutaPorDefecto; _umbralPendienteBajadaRuta = UmbralPendienteBajadaRutaPorDefecto; _umbralAlturaAlertaPendienteRutaMetros = UmbralAlturaAlertaPendienteRutaMetrosPorDefecto; _velocidadPieKmH = 3.6; diff --git a/RutasDBUS/Components/Pages/PlanificadorRutas.Renderizado.cs b/RutasDBUS/Components/Pages/PlanificadorRutas.Renderizado.cs index c10148b..35c9940 100644 --- a/RutasDBUS/Components/Pages/PlanificadorRutas.Renderizado.cs +++ b/RutasDBUS/Components/Pages/PlanificadorRutas.Renderizado.cs @@ -106,7 +106,10 @@ public partial class PlanificadorRutas : ComponentBase var nuevo = ParseUmbralPendienteRuta(e.Value, actual); if (esSubida) + { _umbralPendienteSubidaRuta = nuevo; + NormalizarOrdenUmbralesColorSubidaRuta(); + } else _umbralPendienteBajadaRuta = nuevo; @@ -114,6 +117,23 @@ public partial class PlanificadorRutas : ComponentBase StateHasChanged(); } + private async Task CambiarUmbralColorSubidaRutaAsync(ChangeEventArgs e, bool esFuerte) + { + var actual = esFuerte + ? _umbralPendienteSubidaFuerteRuta + : _umbralPendienteSubidaMediaRuta; + var nuevo = ParseUmbralPendienteRuta(e.Value, actual); + + if (esFuerte) + _umbralPendienteSubidaFuerteRuta = nuevo; + else + _umbralPendienteSubidaMediaRuta = nuevo; + + NormalizarOrdenUmbralesColorSubidaRuta(); + await PersistirConfiguracionAsync(); + StateHasChanged(); + } + private async Task RecalcularRankingTrasCambioEsfuerzoPendienteAsync(bool forzarRepintado = false) { if (_opcionesRuta.Count == 0) @@ -207,6 +227,23 @@ public partial class PlanificadorRutas : ComponentBase ? Math.Clamp(Math.Abs(valor), 0.0, 100.0) : UmbralPendienteSubidaRutaPorDefecto; + private void NormalizarOrdenUmbralesColorSubidaRuta() + { + var umbralSubida = NormalizarUmbralPendienteRuta(_umbralPendienteSubidaRuta); + var umbralMedia = double.IsFinite(_umbralPendienteSubidaMediaRuta) + ? NormalizarUmbralPendienteRuta(_umbralPendienteSubidaMediaRuta) + : UmbralPendienteSubidaMediaRutaPorDefecto; + var umbralFuerte = double.IsFinite(_umbralPendienteSubidaFuerteRuta) + ? NormalizarUmbralPendienteRuta(_umbralPendienteSubidaFuerteRuta) + : UmbralPendienteSubidaFuerteRutaPorDefecto; + + _umbralPendienteSubidaMediaRuta = Math.Clamp(umbralMedia, umbralSubida, 100.0); + _umbralPendienteSubidaFuerteRuta = Math.Clamp( + umbralFuerte, + _umbralPendienteSubidaMediaRuta, + 100.0); + } + private static double ParseUmbralAlturaAlertaPendienteRutaMetros(object? valor, double actual) { var texto = Convert.ToString(valor, CultureInfo.InvariantCulture)?.Replace(',', '.'); @@ -426,8 +463,23 @@ public partial class PlanificadorRutas : ComponentBase var umbralSubida = NormalizarUmbralPendienteRuta(_umbralPendienteSubidaRuta); var umbralBajada = NormalizarUmbralPendienteRuta(_umbralPendienteBajadaRuta); + var umbralSubidaMedia = Math.Clamp( + NormalizarUmbralPendienteRuta(_umbralPendienteSubidaMediaRuta), + umbralSubida, + 100.0); + var umbralSubidaFuerte = Math.Clamp( + NormalizarUmbralPendienteRuta(_umbralPendienteSubidaFuerteRuta), + umbralSubidaMedia, + 100.0); + + if (pendientePorcentaje.Value >= umbralSubidaFuerte) + return ("subida-fuerte", "#000000"); + + if (pendientePorcentaje.Value >= umbralSubidaMedia) + return ("subida-media", "#4c1d95"); + if (pendientePorcentaje.Value >= umbralSubida) - return ("subida", "#000000"); + return ("subida-suave", "#d946ef"); if (pendientePorcentaje.Value <= -umbralBajada) return ("bajada", "#2563eb"); diff --git a/RutasDBUS/Components/Pages/PlanificadorRutas.razor b/RutasDBUS/Components/Pages/PlanificadorRutas.razor index e4c1275..23990f6 100644 --- a/RutasDBUS/Components/Pages/PlanificadorRutas.razor +++ b/RutasDBUS/Components/Pages/PlanificadorRutas.razor @@ -1831,7 +1831,10 @@ + + + +