4e61dc011f
La schermata era dichiarata a tutto schermo ma usciva dentro un riquadro con lo sfondo visibile ai lati: la misura da dialog di conferma si applicava anche ai dialog FullScreen, perche' nulla la escludeva. Ora le schermate a tutto schermo riempiono il display. Ogni punto vendita era un <div> con role="button": adesso e' un bottone vero, raggiungibile da tastiera e annunciato per quello che e', con il chevron che dice che porta altrove. L'indirizzo si ferma a due righe: serve a distinguere due negozi con lo stesso nome, non a essere letto per intero, e teneva l'elenco lungo da scorrere. I punti vendita su cui c'e' gia' un'ispezione aperta oggi lo dichiarano: quel tocco riapre l'ispezione esistente invece di crearne una nuova, ed e' meglio saperlo prima. (Il CSS della riga e' entrato nel commit precedente, adiacente a quello delle azioni di testata.) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
75 lines
2.6 KiB
Plaintext
75 lines
2.6 KiB
Plaintext
@using SteUp.Shared.Core.Dto
|
|
@using SteUp.Shared.Core.Helpers
|
|
@using SteUp.Shared.Core.Interface.LocalDb
|
|
@inject IIspezioniService IspezioniService
|
|
|
|
@*
|
|
Riga di scelta di un punto vendita. E' un <button>: si raggiunge da
|
|
tastiera, il lettore di schermo la annuncia per quello che e', e il tocco
|
|
si comporta come quello nativo. Il chevron dice che porta altrove.
|
|
*@
|
|
|
|
<button type="button" class="list-card shop-card panel--tappable" @onclick="StartInspection"
|
|
aria-label="@AriaLabel">
|
|
<span class="shop-card__text">
|
|
<span class="t-ident">@PuntoVendita.CodMdep</span>
|
|
<span class="list-card__title">@PuntoVendita.Descrizione</span>
|
|
|
|
@if (!Luogo.IsNullOrEmpty())
|
|
{
|
|
<span class="list-card__meta">@Luogo</span>
|
|
}
|
|
|
|
@if (Aperta)
|
|
{
|
|
@* Toccando si riapre l'ispezione di oggi invece di crearne una
|
|
nuova: meglio dirlo prima del tocco. *@
|
|
<span class="list-card__badges badge-row">
|
|
<Badge Spec="@ApertaBadge"/>
|
|
</span>
|
|
}
|
|
</span>
|
|
|
|
<i class="shop-card__chevron ri-arrow-right-s-line" aria-hidden="true"></i>
|
|
</button>
|
|
|
|
@code {
|
|
[Parameter] public PuntoVenditaDto PuntoVendita { get; set; } = null!;
|
|
|
|
[Parameter] public EventCallback OnStarting { get; set; }
|
|
|
|
/// Vero se il rilevatore ha gia' un'ispezione aperta oggi su questo punto vendita.
|
|
[Parameter] public bool Aperta { get; set; }
|
|
|
|
private static readonly StatusBadgeHelper.BadgeSpec ApertaBadge =
|
|
new("info", "ri-play-circle-line", "Ispezione di oggi");
|
|
|
|
// Indirizzo, citta', CAP e provincia su una riga sola con separatore " · ":
|
|
// sono metadati, non meritano tre chip che fanno rumore.
|
|
private string Luogo => string.Join(" · ", new[]
|
|
{
|
|
PuntoVendita.Indirizzo,
|
|
PuntoVendita.Citta,
|
|
string.Join(" ", new[] { PuntoVendita.Cap, PuntoVendita.Provincia }
|
|
.Where(x => !x.IsNullOrEmpty()))
|
|
}
|
|
.Where(x => !x.IsNullOrEmpty()));
|
|
|
|
private string AriaLabel => Aperta
|
|
? $"Riprendi l'ispezione di oggi su {PuntoVendita.CodMdep} {PuntoVendita.Descrizione}"
|
|
: $"Apri ispezione su {PuntoVendita.CodMdep} {PuntoVendita.Descrizione}";
|
|
|
|
private async Task StartInspection()
|
|
{
|
|
await OnStarting.InvokeAsync();
|
|
|
|
SteupDataService.InspectionPageState.Ispezione = await IspezioniService.GetOrCreateIspezioneAsync(
|
|
PuntoVendita.CodMdep!,
|
|
DateTime.Now,
|
|
UserSession.User.Username
|
|
);
|
|
|
|
NavigationManager.NavigateTo("/ispezione");
|
|
}
|
|
}
|