++ 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:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -13,21 +13,36 @@ 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
|
||||||
->with(['proclamatore', 'annoTeocratico', 'campagna', 'creatoDa', 'rientratoDa'])
|
? collect()
|
||||||
->orderByDesc('assigned_at')
|
: Assegnazione::where('territorio_id', $this->territorio->id)
|
||||||
->orderByDesc('id')
|
->with(['proclamatore', 'annoTeocratico', 'campagna', 'creatoDa', 'rientratoDa'])
|
||||||
->get()
|
->orderByDesc('assigned_at')
|
||||||
->groupBy(fn($a) => $a->annoTeocratico->label)
|
->orderByDesc('id')
|
||||||
// Dal più recente: gli anni ("2026-2027") si ordinano come testo.
|
->get()
|
||||||
->sortKeysDesc();
|
->groupBy(fn($a) => $a->annoTeocratico->label)
|
||||||
|
// Dal più recente: gli anni ("2026-2027") si ordinano come testo.
|
||||||
|
->sortKeysDesc();
|
||||||
|
|
||||||
return view('livewire.territori.territorio-show', [
|
return view('livewire.territori.territorio-show', [
|
||||||
'activeAssignment' => $this->territorio->assegnazioneCorrente,
|
'activeAssignment' => $this->territorio->assegnazioneCorrente,
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user