cambios n el horiario del taxibus

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
This commit is contained in:
2026-08-28 13:53:19 +02:00
parent 3a629de887
commit b52cea97b1
9 changed files with 150 additions and 11 deletions

View File

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

View File

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

View File

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

View File

@@ -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");

View File

@@ -1831,7 +1831,10 @@
</label>
<label class="pendientes-config-modal__field">
<span>Umbral Subida (%)</span>
<span class="pendientes-config-modal__threshold-label">
<span class="pendientes-config-modal__swatch pendientes-config-modal__swatch--suave" aria-hidden="true"></span>
Umbral Subida (%)
</span>
<input type="text"
class="config-input"
inputmode="decimal"
@@ -1840,6 +1843,32 @@
@onchange="@(e => CambiarUmbralElevacionRutaAsync(e, true))" />
</label>
<label class="pendientes-config-modal__field">
<span class="pendientes-config-modal__threshold-label">
<span class="pendientes-config-modal__swatch pendientes-config-modal__swatch--media" aria-hidden="true"></span>
Subida Media (%)
</span>
<input type="text"
class="config-input"
inputmode="decimal"
value="@_umbralPendienteSubidaMediaRuta.ToString("0.#", CultureInfo.InvariantCulture)"
disabled="@_pintandoElevacionesRuta"
@onchange="@(e => CambiarUmbralColorSubidaRutaAsync(e, false))" />
</label>
<label class="pendientes-config-modal__field">
<span class="pendientes-config-modal__threshold-label">
<span class="pendientes-config-modal__swatch pendientes-config-modal__swatch--fuerte" aria-hidden="true"></span>
Subida Fuerte (%)
</span>
<input type="text"
class="config-input"
inputmode="decimal"
value="@_umbralPendienteSubidaFuerteRuta.ToString("0.#", CultureInfo.InvariantCulture)"
disabled="@_pintandoElevacionesRuta"
@onchange="@(e => CambiarUmbralColorSubidaRutaAsync(e, true))" />
</label>
<label class="pendientes-config-modal__field">
<span>Umbral Bajada (%)</span>
<input type="text"