++ scheda territorio: aperta dalla Home non mostra lo storico delle assegnazioni

I link della Home portano ?dalla_home=1; la scheda nasconde lo storico
(e non lo carica), con "Mostra lo storico delle assegnazioni" per aprirlo.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Francesco Picone
2026-10-20 15:52:00 +02:00
parent 6f88c65d73
commit f1f340803a
6 changed files with 62 additions and 12 deletions

View File

@@ -248,6 +248,13 @@ non diventa una scheda). Ordine esplicito: anni dal più recente
proclamatore la colonna Campagna ora dice "Sì — …" / "No" come in quella del proclamatore la colonna Campagna ora dice "Sì — …" / "No" come in quella del
territorio, e c'è il badge "via gruppo …". Test: `StoricoAssegnazioniTest`. territorio, e c'è il badge "via gruppo …". Test: `StoricoAssegnazioniTest`.
Poi, su richiesta dell'utente: **aperta dalla Home la scheda del territorio
non mostra lo storico**. I link della Home ("Da assegnare", "Da rientrare")
portano `?dalla_home=1` e `TerritorioShow::$storicoNascosto` salta anche la
query; resta "Mostra lo storico delle assegnazioni". Non si usa il `?da=` del
ritorno per capirlo: si trasmette di pagina in pagina, e un territorio aperto
da *Assegna* (a sua volta aperta dalla Home) sembrerebbe venire dalla Home.
### Rientro dall'elenco dei territori assegnati (20 ottobre 2026) ### Rientro dall'elenco dei territori assegnati (20 ottobre 2026)
Richiesta dell'utente ("un tasto che va alla registrazione", dallo screenshot Richiesta dell'utente ("un tasto che va alla registrazione", dallo screenshot

View File

@@ -700,7 +700,9 @@ docker compose --profile dev up -d --build
- Badge di stato colorati e indicatore di priorità (manuale o automatica) - Badge di stato colorati e indicatore di priorità (manuale o automatica)
- Dettaglio con visualizzatore PDF e storico assegnazioni per anno teocratico: - Dettaglio con visualizzatore PDF e storico assegnazioni per anno teocratico:
una tabella sola con le colonne in linea, l'anno come riga di separazione, una tabella sola con le colonne in linea, l'anno come riga di separazione,
dal più recente (lo stesso nella scheda del proclamatore) dal più recente (lo stesso nella scheda del proclamatore). Aperta dalla
Home, la scheda non mostra lo storico ("Mostra lo storico delle
assegnazioni" lo apre)
- Link PDF pubblico condivisibile, a scadenza configurabile - Link PDF pubblico condivisibile, a scadenza configurabile
- Soft delete con cestino (ripristino o eliminazione definitiva) - Soft delete con cestino (ripristino o eliminazione definitiva)
- Import massivo di PDF da cartella o archivio ZIP, elaborato in background - Import massivo di PDF da cartella o archivio ZIP, elaborato in background

View File

@@ -13,14 +13,29 @@ class TerritorioShow extends Component
public Territorio $territorio; public Territorio $territorio;
/**
* Aperta dalla Home (?dalla_home=1, lo mettono solo i link della Home) la
* scheda non mostra lo storico delle assegnazioni: lì serve il territorio,
* non la sua storia. "Mostra lo storico" lo apre comunque.
*/
public bool $storicoNascosto = false;
public function mount(Territorio $territorio) public function mount(Territorio $territorio)
{ {
$this->territorio = $territorio->load(['zona', 'tipologia', 'assegnazioneCorrente.proclamatore', 'ultimaAssegnazione']); $this->territorio = $territorio->load(['zona', 'tipologia', 'assegnazioneCorrente.proclamatore', 'ultimaAssegnazione']);
$this->storicoNascosto = request()->boolean('dalla_home');
}
public function mostraStorico(): void
{
$this->storicoNascosto = false;
} }
public function render() public function render()
{ {
$assegnazioni = Assegnazione::where('territorio_id', $this->territorio->id) $assegnazioni = $this->storicoNascosto
? collect()
: Assegnazione::where('territorio_id', $this->territorio->id)
->with(['proclamatore', 'annoTeocratico', 'campagna', 'creatoDa', 'rientratoDa']) ->with(['proclamatore', 'annoTeocratico', 'campagna', 'creatoDa', 'rientratoDa'])
->orderByDesc('assigned_at') ->orderByDesc('assigned_at')
->orderByDesc('id') ->orderByDesc('id')

View File

@@ -109,7 +109,7 @@
<li class="px-5 py-3 flex items-center justify-between hover:bg-gray-50 transition-colors"> <li class="px-5 py-3 flex items-center justify-between hover:bg-gray-50 transition-colors">
<div> <div>
<div class="flex items-center gap-2"> <div class="flex items-center gap-2">
<a data-ritorno href="{{ route('territori.show', $t) }}" class="text-sm font-semibold text-gray-900 hover:text-indigo-600 transition-colors">N° {{ $t->numero }}</a> <a data-ritorno href="{{ route('territori.show', ['territorio' => $t, 'dalla_home' => 1]) }}" class="text-sm font-semibold text-gray-900 hover:text-indigo-600 transition-colors">N° {{ $t->numero }}</a>
@if($t->in_priorita) @if($t->in_priorita)
<span class="inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-semibold uppercase tracking-wide badge-pulse" style="background:#fef3c7;color:#92400e">★ Prioritario</span> <span class="inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-semibold uppercase tracking-wide badge-pulse" style="background:#fef3c7;color:#92400e">★ Prioritario</span>
@endif @endif
@@ -164,7 +164,7 @@
@php($assegnazioneCorrente = $t->assegnazioneCorrente) @php($assegnazioneCorrente = $t->assegnazioneCorrente)
<li class="px-5 py-3 flex items-center justify-between hover:bg-gray-50 transition-colors"> <li class="px-5 py-3 flex items-center justify-between hover:bg-gray-50 transition-colors">
<div> <div>
<a data-ritorno href="{{ route('territori.show', $t) }}" class="text-sm font-semibold text-gray-900 hover:text-indigo-600 transition-colors">N° {{ $t->numero }}</a> <a data-ritorno href="{{ route('territori.show', ['territorio' => $t, 'dalla_home' => 1]) }}" class="text-sm font-semibold text-gray-900 hover:text-indigo-600 transition-colors">N° {{ $t->numero }}</a>
<p class="text-xs text-gray-500"> <p class="text-xs text-gray-500">
{{ $assegnazioneCorrente?->proclamatore?->nome_completo }} {{ $assegnazioneCorrente?->proclamatore?->nome_completo }}
— <span class="font-medium" style="color:#dc2626">{{ $assegnazioneCorrente?->giorni }} gg</span> — <span class="font-medium" style="color:#dc2626">{{ $assegnazioneCorrente?->giorni }} gg</span>

View File

@@ -152,7 +152,12 @@
</div> </div>
@endif @endif
{{-- Assignment history --}} {{-- Assignment history: non quando si arriva dalla Home (TerritorioShow::$storicoNascosto) --}}
@if($storicoNascosto)
<div class="flex justify-end">
<x-btn variante="ghost" dimensione="sm" wire:click="mostraStorico">Mostra lo storico delle assegnazioni</x-btn>
</div>
@else
<div class="bg-white rounded-xl shadow-sm border border-gray-200 p-6"> <div class="bg-white rounded-xl shadow-sm border border-gray-200 p-6">
<div class="flex items-center gap-3 mb-4"> <div class="flex items-center gap-3 mb-4">
<div class="h-8 w-8 rounded-lg flex items-center justify-center" style="background:#eef2ff"> <div class="h-8 w-8 rounded-lg flex items-center justify-center" style="background:#eef2ff">
@@ -213,4 +218,5 @@
</div> </div>
@endif @endif
</div> </div>
@endif
</div> </div>

View File

@@ -62,6 +62,26 @@ class StoricoAssegnazioniTest extends TestCase
$this->assertSame(2, substr_count($html, 'tm-riga-gruppo')); $this->assertSame(2, substr_count($html, 'tm-riga-gruppo'));
} }
public function test_aperta_dalla_home_la_scheda_del_territorio_non_mostra_lo_storico(): void
{
// La Home manda alla scheda con il segnale dalla_home.
$this->actingAs($this->admin)->get(route('dashboard'))->assertOk()
->assertSee(route('territori.show', ['territorio' => $this->territorio, 'dalla_home' => 1]), false);
$this->get(route('territori.show', ['territorio' => $this->territorio, 'dalla_home' => 1]))->assertOk()
->assertDontSee('Storico Assegnazioni')
->assertDontSee('Anno Teocratico')
->assertSee('Mostra lo storico delle assegnazioni');
// Su richiesta si apre; aperta da altrove c'è sempre.
\Livewire\Livewire::actingAs($this->admin)->withQueryParams(['dalla_home' => 1])
->test(\App\Livewire\Territori\TerritorioShow::class, ['territorio' => $this->territorio])
->assertDontSee('Anno Teocratico')
->call('mostraStorico')
->assertSee('Anno Teocratico 2025-2026');
$this->get(route('territori.show', $this->territorio))->assertSee('Storico Assegnazioni');
}
public function test_nella_scheda_del_proclamatore_una_tabella_sola_dal_piu_recente(): void public function test_nella_scheda_del_proclamatore_una_tabella_sola_dal_piu_recente(): void
{ {
$html = $this->actingAs($this->admin)->get(route('proclamatori.show', $this->proclamatore))->assertOk() $html = $this->actingAs($this->admin)->get(route('proclamatori.show', $this->proclamatore))->assertOk()