Files
mapo-core/MP-TAB/MP-TAB.Client/Components/MachineBlock.razor
T
2023-09-26 13:13:13 +02:00

90 lines
2.4 KiB
Plaintext

@if (RecMSE == null)
{
<div class="card text-white mapBlock rCAll bg-secondary p-0 m-0">
<div class="card-body">
<div class="placeholder-glow">
<span class="placeholder col-7"></span>
<span class="placeholder col-4"></span>
<span class="placeholder col-4"></span>
<span class="placeholder col-7"></span>
</div>
</div>
</div>
}
else
{
<div class="card mapBlock rCAll @cssStatus(RecMSE.Semaforo) p-0 m-0">
<div class="card-body ">
<div class="fs-2">
@RecMSE.IdxMacchina
<div class="small">
@RecMSE.DescrizioneStato
</div>
</div>
</div>
</div>
}
@code {
[Parameter]
public MappaStatoExpl? RecMSE { get; set; } = null;
[Parameter]
public bool DoBlink { get; set; } = false;
[Parameter]
public bool DoAnimate { get; set; } = false;
[Parameter]
public int keepAliveMin { get; set; } = 5;
protected int kaFactor = 60 / 2;
protected override async Task OnParametersSetAsync()
{
Console.WriteLine($"MachineBlock | Parameter SET! | Macc: {RecMSE?.IdxMacchina}");
await InvokeAsync(StateHasChanged);
}
private string cssComStatus(string semaforo, DateTime? lastUpdateN)
{
DateTime lastUpdate = lastUpdateN.HasValue ? (DateTime)lastUpdateN : DateTime.Now.AddHours(-1);
string answ = cssStatus(semaforo);
if (DateTime.Now.Subtract(lastUpdate).TotalSeconds > (keepAliveMin * kaFactor))
{
answ = $"{baseCss}Ro";
// blink se secondo pari...
DateTime adesso = DateTime.Now;
int resto = 0;
Math.DivRem(adesso.Second, 2, out resto);
if (resto == 0)
{
answ += "_b";
}
}
return answ;
}
private string cssStatus(string codSemaforo)
{
// se vuoto --> mostra nero!
if (string.IsNullOrEmpty(codSemaforo))
{
codSemaforo = "sNe";
}
string codColore = codSemaforo.Substring(1, 2);
string answ = $"{baseCss}{codColore}";
if (DoAnimate && codColore != "Ve")
{
if (DoBlink)
{
answ += "_b";
}
}
return answ;
}
protected string baseCss = "sem";
}