diff --git a/RutasDBUS/Components/Pages/PlanificadorRutas.Itinerarios.cs b/RutasDBUS/Components/Pages/PlanificadorRutas.Itinerarios.cs index 6e42b68..916742f 100644 --- a/RutasDBUS/Components/Pages/PlanificadorRutas.Itinerarios.cs +++ b/RutasDBUS/Components/Pages/PlanificadorRutas.Itinerarios.cs @@ -1503,7 +1503,7 @@ public partial class PlanificadorRutas : ComponentBase private bool _elevPopupMinimizado = false; - private const string _versionApp = "(v-20260918a)"; + private const string _versionApp = "(v-20260918b)"; private double? _paradaElevIdee; diff --git a/RutasDBUS/Components/Pages/PlanificadorRutas.Renderizado.cs b/RutasDBUS/Components/Pages/PlanificadorRutas.Renderizado.cs index 69021ec..f610127 100644 --- a/RutasDBUS/Components/Pages/PlanificadorRutas.Renderizado.cs +++ b/RutasDBUS/Components/Pages/PlanificadorRutas.Renderizado.cs @@ -1305,6 +1305,12 @@ public partial class PlanificadorRutas : ComponentBase await PersistirConfiguracionConfirmadaAsync(); MarcarConfiguracionAvanzadaComoGuardada(); + if (_usarHoraSimulada) + StopClock(); + else + StartClock(); + await RefrescarHoraUIAsync(); + if (_coordenadasOrigen is null || _coordenadasDestino is null) { StateHasChanged(); diff --git a/RutasDBUS/Components/Pages/PlanificadorRutas.TiempoYHorarios.cs b/RutasDBUS/Components/Pages/PlanificadorRutas.TiempoYHorarios.cs index 9197be1..229d8fe 100644 --- a/RutasDBUS/Components/Pages/PlanificadorRutas.TiempoYHorarios.cs +++ b/RutasDBUS/Components/Pages/PlanificadorRutas.TiempoYHorarios.cs @@ -253,15 +253,18 @@ public partial class PlanificadorRutas : ComponentBase var ahora = DateTime.Now; _fechaSimulada = DateOnly.FromDateTime(ahora); _horaSimulada = TimeOnly.FromDateTime(ahora); - StopClock(); } - else + + if (!_editandoConfiguracionAvanzada) { - StartClock(); + if (_usarHoraSimulada) + StopClock(); + else + StartClock(); + + await RefrescarHoraUIAsync(); + await PersistirConfiguracionAsync(); } - - await RefrescarHoraUIAsync(); - await PersistirConfiguracionAsync(); } // ====== HORA (real / simulada) ====== @@ -307,11 +310,14 @@ public partial class PlanificadorRutas : ComponentBase var s = e?.Value?.ToString(); if (!string.IsNullOrWhiteSpace(s) && DateOnly.TryParse(s, out var d)) _fechaSimulada = d; - - if (_usarHoraSimulada) - await RefrescarHoraUIAsync(); - await PersistirConfiguracionAsync(); + if (!_editandoConfiguracionAvanzada) + { + if (_usarHoraSimulada) + await RefrescarHoraUIAsync(); + + await PersistirConfiguracionAsync(); + } } /// @@ -322,11 +328,14 @@ public partial class PlanificadorRutas : ComponentBase var s = e?.Value?.ToString(); if (!string.IsNullOrWhiteSpace(s) && TimeOnly.TryParse(s, out var t)) _horaSimulada = t; - - if (_usarHoraSimulada) - await RefrescarHoraUIAsync(); - await PersistirConfiguracionAsync(); + if (!_editandoConfiguracionAvanzada) + { + if (_usarHoraSimulada) + await RefrescarHoraUIAsync(); + + await PersistirConfiguracionAsync(); + } } /// @@ -338,10 +347,13 @@ public partial class PlanificadorRutas : ComponentBase _fechaSimulada = DateOnly.FromDateTime(ahora); _horaSimulada = TimeOnly.FromDateTime(ahora); - if (_usarHoraSimulada) - await RefrescarHoraUIAsync(); + if (!_editandoConfiguracionAvanzada) + { + if (_usarHoraSimulada) + await RefrescarHoraUIAsync(); - await PersistirConfiguracionAsync(); + await PersistirConfiguracionAsync(); + } StateHasChanged(); } @@ -369,7 +381,11 @@ public partial class PlanificadorRutas : ComponentBase while (await _clockTimer.WaitForNextTickAsync(_clockCts.Token)) { // ✅ Solo actualizamos si NO estamos en simulada - if (_usarHoraSimulada) continue; + var usarHoraSimuladaAplicada = _editandoConfiguracionAvanzada && + _configuracionAvanzadaAplicada is not null + ? _configuracionAvanzadaAplicada.UsarHoraSimulada + : _usarHoraSimulada; + if (usarHoraSimuladaAplicada) continue; var now = DateTime.Now; var es = new CultureInfo("es-ES"); diff --git a/tests/RutasDBUS.RegressionTests/Program.cs b/tests/RutasDBUS.RegressionTests/Program.cs index 81a0a1a..579b764 100644 --- a/tests/RutasDBUS.RegressionTests/Program.cs +++ b/tests/RutasDBUS.RegressionTests/Program.cs @@ -438,6 +438,27 @@ Check((bool)puntoDentro.Invoke(null, new object?[] { 43.3155, -1.9845, parametro "Las paradas interiores a una zona se detectan antes de calcular"); var page = new PlanificadorRutas(); var flags = BindingFlags.Instance | BindingFlags.NonPublic; +var paginaRelojEnEdicion = new PlanificadorRutas(); +typeof(PlanificadorRutas).GetField("_editandoConfiguracionAvanzada", flags)! + .SetValue(paginaRelojEnEdicion, true); +typeof(PlanificadorRutas).GetField("_usarHoraSimulada", flags)! + .SetValue(paginaRelojEnEdicion, true); +typeof(PlanificadorRutas).GetField("_horaAhoraTxt", flags)! + .SetValue(paginaRelojEnEdicion, "Hora aplicada"); +var cambiarHoraSimulada = typeof(PlanificadorRutas).GetMethod( + "OnChangeHoraSimulada", flags)!; +await (Task)cambiarHoraSimulada.Invoke( + paginaRelojEnEdicion, + new object[] + { + new Microsoft.AspNetCore.Components.ChangeEventArgs { Value = "18:45" } + })!; +Check( + (string)typeof(PlanificadorRutas).GetField("_horaAhoraTxt", flags)! + .GetValue(paginaRelojEnEdicion)! == "Hora aplicada" && + (TimeOnly)typeof(PlanificadorRutas).GetField("_horaSimulada", flags)! + .GetValue(paginaRelojEnEdicion)! == new TimeOnly(18, 45), + "Editar la hora deja el reloj aplicado intacto hasta guardar y recalcular"); var fabricaHistorial = (ConfiguracionHistorialRuta)baseMethod.Invoke(null, null)!; fabricaHistorial.FactorEquilibradoAndarBus = 6; fabricaHistorial.UsarHoraSimulada = true;