reloj desancalado de la configuracion hasta recalcular

This commit is contained in:
2026-09-18 13:52:15 +02:00
parent 19377e07c2
commit 43f32fd93a
4 changed files with 62 additions and 19 deletions

View File

@@ -1503,7 +1503,7 @@ public partial class PlanificadorRutas : ComponentBase
private bool _elevPopupMinimizado = false; private bool _elevPopupMinimizado = false;
private const string _versionApp = "(v-20260918a)"; private const string _versionApp = "(v-20260918b)";
private double? _paradaElevIdee; private double? _paradaElevIdee;

View File

@@ -1305,6 +1305,12 @@ public partial class PlanificadorRutas : ComponentBase
await PersistirConfiguracionConfirmadaAsync(); await PersistirConfiguracionConfirmadaAsync();
MarcarConfiguracionAvanzadaComoGuardada(); MarcarConfiguracionAvanzadaComoGuardada();
if (_usarHoraSimulada)
StopClock();
else
StartClock();
await RefrescarHoraUIAsync();
if (_coordenadasOrigen is null || _coordenadasDestino is null) if (_coordenadasOrigen is null || _coordenadasDestino is null)
{ {
StateHasChanged(); StateHasChanged();

View File

@@ -253,15 +253,18 @@ public partial class PlanificadorRutas : ComponentBase
var ahora = DateTime.Now; var ahora = DateTime.Now;
_fechaSimulada = DateOnly.FromDateTime(ahora); _fechaSimulada = DateOnly.FromDateTime(ahora);
_horaSimulada = TimeOnly.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) ====== // ====== HORA (real / simulada) ======
@@ -307,11 +310,14 @@ public partial class PlanificadorRutas : ComponentBase
var s = e?.Value?.ToString(); var s = e?.Value?.ToString();
if (!string.IsNullOrWhiteSpace(s) && DateOnly.TryParse(s, out var d)) if (!string.IsNullOrWhiteSpace(s) && DateOnly.TryParse(s, out var d))
_fechaSimulada = d; _fechaSimulada = d;
if (_usarHoraSimulada)
await RefrescarHoraUIAsync();
await PersistirConfiguracionAsync(); if (!_editandoConfiguracionAvanzada)
{
if (_usarHoraSimulada)
await RefrescarHoraUIAsync();
await PersistirConfiguracionAsync();
}
} }
/// <summary> /// <summary>
@@ -322,11 +328,14 @@ public partial class PlanificadorRutas : ComponentBase
var s = e?.Value?.ToString(); var s = e?.Value?.ToString();
if (!string.IsNullOrWhiteSpace(s) && TimeOnly.TryParse(s, out var t)) if (!string.IsNullOrWhiteSpace(s) && TimeOnly.TryParse(s, out var t))
_horaSimulada = t; _horaSimulada = t;
if (_usarHoraSimulada)
await RefrescarHoraUIAsync();
await PersistirConfiguracionAsync(); if (!_editandoConfiguracionAvanzada)
{
if (_usarHoraSimulada)
await RefrescarHoraUIAsync();
await PersistirConfiguracionAsync();
}
} }
/// <summary> /// <summary>
@@ -338,10 +347,13 @@ public partial class PlanificadorRutas : ComponentBase
_fechaSimulada = DateOnly.FromDateTime(ahora); _fechaSimulada = DateOnly.FromDateTime(ahora);
_horaSimulada = TimeOnly.FromDateTime(ahora); _horaSimulada = TimeOnly.FromDateTime(ahora);
if (_usarHoraSimulada) if (!_editandoConfiguracionAvanzada)
await RefrescarHoraUIAsync(); {
if (_usarHoraSimulada)
await RefrescarHoraUIAsync();
await PersistirConfiguracionAsync(); await PersistirConfiguracionAsync();
}
StateHasChanged(); StateHasChanged();
} }
@@ -369,7 +381,11 @@ public partial class PlanificadorRutas : ComponentBase
while (await _clockTimer.WaitForNextTickAsync(_clockCts.Token)) while (await _clockTimer.WaitForNextTickAsync(_clockCts.Token))
{ {
// ✅ Solo actualizamos si NO estamos en simulada // ✅ 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 now = DateTime.Now;
var es = new CultureInfo("es-ES"); var es = new CultureInfo("es-ES");

View File

@@ -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"); "Las paradas interiores a una zona se detectan antes de calcular");
var page = new PlanificadorRutas(); var page = new PlanificadorRutas();
var flags = BindingFlags.Instance | BindingFlags.NonPublic; 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)!; var fabricaHistorial = (ConfiguracionHistorialRuta)baseMethod.Invoke(null, null)!;
fabricaHistorial.FactorEquilibradoAndarBus = 6; fabricaHistorial.FactorEquilibradoAndarBus = 6;
fabricaHistorial.UsarHoraSimulada = true; fabricaHistorial.UsarHoraSimulada = true;