From de889ef8c7318fc5540e232ba1bb9f5868f85ff7 Mon Sep 17 00:00:00 2001 From: MarcoE Date: Tue, 29 Sep 2026 10:27:22 +0200 Subject: [PATCH] Mostra nell'ispezione le bozze senza reparto Co-Authored-By: Claude Opus 5.5 (1M context) --- .../Components/Pages/IspezionePage.razor | 36 ++++++++++++------- .../SingleElements/Card/SchedaCard.razor | 4 +-- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/SteUp.Shared/Components/Pages/IspezionePage.razor b/SteUp.Shared/Components/Pages/IspezionePage.razor index 94296bb..0174ae1 100644 --- a/SteUp.Shared/Components/Pages/IspezionePage.razor +++ b/SteUp.Shared/Components/Pages/IspezionePage.razor @@ -157,6 +157,7 @@ @foreach (var group in SchedeGrouped) { var reparto = group.Key; + var senzaReparto = ReferenceEquals(reparto, SenzaReparto); var chiuso = IsCollapsed(reparto); var daInviare = group.Value.CountDaInviare(); @@ -172,7 +173,9 @@
- @if (!IsCompleted) + @* Il gruppo "Senza reparto" raccoglie solo bozze da + sistemare: non ha un "+" ne' un invio suo. *@ + @if (!IsCompleted && !senzaReparto) { @* Da qui la scheda nasce gia' con il suo reparto: e' l'unica differenza con il "+" della barra. *@ @@ -326,13 +329,15 @@ // schermata, non del documento. private readonly HashSet _collapsed = new(StringComparer.OrdinalIgnoreCase); - private bool IsCollapsed(JtbFasiDto reparto) => - reparto.CodJfas is not null && _collapsed.Contains(reparto.CodJfas); + // Il gruppo "Senza reparto" non ha codice: la chiave vuota e' la sua. + private static string CollapseKey(JtbFasiDto reparto) => reparto.CodJfas ?? string.Empty; + + private bool IsCollapsed(JtbFasiDto reparto) => _collapsed.Contains(CollapseKey(reparto)); private void Toggle(JtbFasiDto reparto) { - if (reparto.CodJfas is null) return; - if (!_collapsed.Remove(reparto.CodJfas)) _collapsed.Add(reparto.CodJfas); + var key = CollapseKey(reparto); + if (!_collapsed.Remove(key)) _collapsed.Add(key); } private static string Conteggi(List schede) @@ -542,15 +547,22 @@ StateHasChanged(); }); + // Una bozza si puo' salvare anche senza reparto: senza questo gruppo + // sparirebbe dall'elenco pur restando sul dispositivo e contata fra le bozze. + private static readonly JtbFasiDto SenzaReparto = new() { Descrizione = "Senza reparto" }; + private void GroupSchede() { - SchedeGrouped = SchedeList - .Where(s => s.Reparto != null) - .GroupBy(s => s.CodJfas) - .ToDictionary( - g => g.First().Reparto!, - g => g.ToList() - ); + var grouped = new Dictionary>(); + + // In testa: sono schede a meta' che chiedono di essere completate. + var senzaReparto = SchedeList.FindAll(s => s.Reparto == null); + if (senzaReparto.Count > 0) grouped[SenzaReparto] = senzaReparto; + + foreach (var g in SchedeList.Where(s => s.Reparto != null).GroupBy(s => s.CodJfas)) + grouped[g.First().Reparto!] = g.ToList(); + + SchedeGrouped = grouped; } private void OnSchedaModified(Scheda obj) diff --git a/SteUp.Shared/Components/SingleElements/Card/SchedaCard.razor b/SteUp.Shared/Components/SingleElements/Card/SchedaCard.razor index aefaf54..f1c2411 100644 --- a/SteUp.Shared/Components/SingleElements/Card/SchedaCard.razor +++ b/SteUp.Shared/Components/SingleElements/Card/SchedaCard.razor @@ -16,7 +16,7 @@
-
@Scheda.DescrizioneReparto
+
@(Scheda.DescrizioneReparto ?? "Senza reparto")

@Titolo

@@ -125,7 +125,7 @@ }; private string SemanticLabel => - $"Scheda {Titolo}, reparto {Scheda.DescrizioneReparto}, {SyncState.ToBadge().Label}, {ArticoliLabel}, {FotoLabel}"; + $"Scheda {Titolo}, reparto {Scheda.DescrizioneReparto ?? "non indicato"},{SyncState.ToBadge().Label}, {ArticoliLabel}, {FotoLabel}"; private async Task SetBusy(bool value) {