++ Assegna aperta da "Assegna ->" della Home: senza l'elenco dei territori assegnati
La richiesta era per la pagina Assegna, non per la scheda del territorio:
annullata la modifica di f1f3408 (storico nascosto nella scheda) e ora il
link "Assegna ->" della Home porta ?dalla_home=1, con cui Assegna non
mostra ne' carica l'elenco "Territori Assegnati".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
19
HANDOFF.md
19
HANDOFF.md
@@ -235,6 +235,18 @@ Decisioni successive dell'utente (20 ottobre 2026):
|
||||
(erano `home_giorni_giacenza` e `home_is_prioritario`, anche nel PDF).
|
||||
- "Il mio gruppo" mostra sotto il titolo nome e cognome del sorvegliante.
|
||||
|
||||
### Assegna aperta dalla Home: senza l'elenco dei territori assegnati (20 ottobre 2026)
|
||||
|
||||
Richiesta dell'utente: "quando provengo da un territorio dalla home, non
|
||||
mostrare lo storico assegnazioni". Avevo capito la scheda del territorio e
|
||||
ne avevo nascosto lo storico (commit `f1f3408`, poi annullato con un revert):
|
||||
intendeva la pagina *Assegna* aperta da "Assegna →" della Home, e come
|
||||
"storico" l'elenco "Territori Assegnati" sotto il modulo. Ora quel link porta
|
||||
`?dalla_home=1` e `Assegna::$elencoNascosto` toglie `ElencoAssegnati` (che
|
||||
così non si carica nemmeno). Dal menu o dalla scheda del territorio l'elenco
|
||||
c'è come prima. Non si usa il `?da=` del ritorno per capirlo: si trasmette di
|
||||
pagina in pagina.
|
||||
|
||||
### Storico assegnazioni in linea (20 ottobre 2026)
|
||||
|
||||
Richiesta dell'utente (screenshot della scheda territorio): le colonne dello
|
||||
@@ -248,13 +260,6 @@ non diventa una scheda). Ordine esplicito: anni dal più recente
|
||||
proclamatore la colonna Campagna ora dice "Sì — …" / "No" come in quella del
|
||||
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)
|
||||
|
||||
Richiesta dell'utente ("un tasto che va alla registrazione", dallo screenshot
|
||||
|
||||
@@ -700,9 +700,7 @@ docker compose --profile dev up -d --build
|
||||
- Badge di stato colorati e indicatore di priorità (manuale o automatica)
|
||||
- Dettaglio con visualizzatore PDF e storico assegnazioni per anno teocratico:
|
||||
una tabella sola con le colonne in linea, l'anno come riga di separazione,
|
||||
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)
|
||||
dal più recente (lo stesso nella scheda del proclamatore)
|
||||
- Link PDF pubblico condivisibile, a scadenza configurabile
|
||||
- Soft delete con cestino (ripristino o eliminazione definitiva)
|
||||
- Import massivo di PDF da cartella o archivio ZIP, elaborato in background
|
||||
@@ -733,7 +731,8 @@ docker compose --profile dev up -d --build
|
||||
può copiare o condividere il link
|
||||
- L'elenco dei territori assegnati si carica subito dopo la pagina e si filtra
|
||||
nel browser, senza attese; ogni territorio ha il pulsante **Rientro**, che
|
||||
porta alla registrazione del rientro e poi torna all'elenco
|
||||
porta alla registrazione del rientro e poi torna all'elenco. Aperta da
|
||||
"Assegna →" della Home, la pagina mostra solo il modulo, senza l'elenco
|
||||
- Rientro con calcolo automatico dei giorni
|
||||
- **Prompt campagna**: se il territorio era fuori durante una campagna viene
|
||||
chiesto se è stato percorso per la campagna; oltre la soglia "da rientrare"
|
||||
|
||||
@@ -23,11 +23,19 @@ class Assegna extends Component
|
||||
// Optional pre-selection from parent context
|
||||
public ?int $preselectedTerritorioId = null;
|
||||
|
||||
/**
|
||||
* Aperta da "Assegna →" della Home (?dalla_home=1, lo mette solo la Home)
|
||||
* la pagina serve ad assegnare quel territorio: l'elenco dei territori
|
||||
* assegnati sotto il modulo non si mostra (né si carica).
|
||||
*/
|
||||
public bool $elencoNascosto = false;
|
||||
|
||||
public function mount(?int $territorioId = null)
|
||||
{
|
||||
$this->preselectedTerritorioId = $territorioId;
|
||||
$this->territorio_id = $territorioId;
|
||||
$this->assigned_at = now()->format('Y-m-d');
|
||||
$this->elencoNascosto = request()->boolean('dalla_home');
|
||||
|
||||
// ?invia=<id>: riprende l'invio di un link rimasto in sospeso (dalla
|
||||
// scheda del territorio).
|
||||
|
||||
@@ -13,29 +13,14 @@ class TerritorioShow extends Component
|
||||
|
||||
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)
|
||||
{
|
||||
$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()
|
||||
{
|
||||
$assegnazioni = $this->storicoNascosto
|
||||
? collect()
|
||||
: Assegnazione::where('territorio_id', $this->territorio->id)
|
||||
$assegnazioni = Assegnazione::where('territorio_id', $this->territorio->id)
|
||||
->with(['proclamatore', 'annoTeocratico', 'campagna', 'creatoDa', 'rientratoDa'])
|
||||
->orderByDesc('assigned_at')
|
||||
->orderByDesc('id')
|
||||
|
||||
@@ -80,6 +80,9 @@
|
||||
|
||||
{{-- Elenco dei territori assegnati: componente a sé, caricato subito
|
||||
dopo la pagina (ElencoAssegnati, #[Lazy]). Le azioni del form non
|
||||
lo ridisegnano. --}}
|
||||
lo ridisegnano. Non c'è quando si arriva da "Assegna →" della Home
|
||||
(Assegna::$elencoNascosto). --}}
|
||||
@unless($elencoNascosto)
|
||||
<livewire:assegnazioni.elenco-assegnati />
|
||||
@endunless
|
||||
</div>
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
<li class="px-5 py-3 flex items-center justify-between hover:bg-gray-50 transition-colors">
|
||||
<div>
|
||||
<div class="flex items-center gap-2">
|
||||
<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>
|
||||
<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>
|
||||
@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>
|
||||
@endif
|
||||
@@ -122,7 +122,7 @@
|
||||
</p>
|
||||
</div>
|
||||
@can('territori.assign')
|
||||
<x-btn data-ritorno variante="primary" tono="tenue" dimensione="sm" :href="route('assegnazioni.assegna', ['territorioId' => $t->id])">Assegna →</x-btn>
|
||||
<x-btn data-ritorno variante="primary" tono="tenue" dimensione="sm" :href="route('assegnazioni.assegna', ['territorioId' => $t->id, 'dalla_home' => 1])">Assegna →</x-btn>
|
||||
@endcan
|
||||
</li>
|
||||
@empty
|
||||
@@ -164,7 +164,7 @@
|
||||
@php($assegnazioneCorrente = $t->assegnazioneCorrente)
|
||||
<li class="px-5 py-3 flex items-center justify-between hover:bg-gray-50 transition-colors">
|
||||
<div>
|
||||
<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>
|
||||
<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>
|
||||
<p class="text-xs text-gray-500">
|
||||
{{ $assegnazioneCorrente?->proclamatore?->nome_completo }}
|
||||
— <span class="font-medium" style="color:#dc2626">{{ $assegnazioneCorrente?->giorni }} gg</span>
|
||||
|
||||
@@ -152,12 +152,7 @@
|
||||
</div>
|
||||
@endif
|
||||
|
||||
{{-- 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
|
||||
{{-- Assignment history --}}
|
||||
<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="h-8 w-8 rounded-lg flex items-center justify-center" style="background:#eef2ff">
|
||||
@@ -218,5 +213,4 @@
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
@@ -261,6 +261,21 @@ class InvioLinkTest extends TestCase
|
||||
->assertSee(route('piantine.editor', ['nuovo' => 1]), false);
|
||||
}
|
||||
|
||||
public function test_da_assegna_della_home_l_elenco_dei_territori_assegnati_non_c_e(): void
|
||||
{
|
||||
$t = $this->territorioConPdf('7');
|
||||
$daHome = route('assegnazioni.assegna', ['territorioId' => $t->id, 'dalla_home' => 1]);
|
||||
|
||||
// "Assegna →" della Home porta il segnale...
|
||||
$this->actingAs($this->admin)->get(route('dashboard'))->assertOk()->assertSee($daHome, false);
|
||||
|
||||
// ...e Assegna non mostra (né carica) l'elenco dei territori assegnati.
|
||||
$this->get($daHome)->assertOk()->assertDontSee('assegnazioni.elenco-assegnati', false);
|
||||
// Aperta dal menu o dalla scheda del territorio, l'elenco c'è.
|
||||
$this->get(route('assegnazioni.assegna'))->assertSee('assegnazioni.elenco-assegnati', false);
|
||||
$this->get(route('assegnazioni.assegna', ['territorioId' => $t->id]))->assertSee('assegnazioni.elenco-assegnati', false);
|
||||
}
|
||||
|
||||
public function test_dall_elenco_degli_assegnati_si_va_al_rientro(): void
|
||||
{
|
||||
$this->assegna($this->mario(), $this->territorioConPdf('7'));
|
||||
|
||||
@@ -62,26 +62,6 @@ class StoricoAssegnazioniTest extends TestCase
|
||||
$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
|
||||
{
|
||||
$html = $this->actingAs($this->admin)->get(route('proclamatori.show', $this->proclamatore))->assertOk()
|
||||
|
||||
Reference in New Issue
Block a user