++ elenco dei territori assegnati: pulsante Rientro su ogni riga
Porta alla registrazione del rientro e torna all'elenco (data-ritorno); solo con il permesso territori.return. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -234,6 +234,15 @@ Decisioni successive dell'utente (20 ottobre 2026):
|
|||||||
Gli attributi calcolati si chiamano `giacenza_giorni` e `in_priorita`
|
Gli attributi calcolati si chiamano `giacenza_giorni` e `in_priorita`
|
||||||
(erano `home_giorni_giacenza` e `home_is_prioritario`, anche nel PDF).
|
(erano `home_giorni_giacenza` e `home_is_prioritario`, anche nel PDF).
|
||||||
- "Il mio gruppo" mostra sotto il titolo nome e cognome del sorvegliante.
|
- "Il mio gruppo" mostra sotto il titolo nome e cognome del sorvegliante.
|
||||||
|
|
||||||
|
### Rientro dall'elenco dei territori assegnati (20 ottobre 2026)
|
||||||
|
|
||||||
|
Richiesta dell'utente ("un tasto che va alla registrazione", dallo screenshot
|
||||||
|
della pagina *Assegna* con l'elenco filtrato per proclamatore): in
|
||||||
|
`ElencoAssegnati` ogni riga ha **Rientro** (solo con `territori.return`), che
|
||||||
|
apre la registrazione del rientro e, con `data-ritorno`, torna all'elenco.
|
||||||
|
Anche le righe senza PDF lo hanno. L'elenco ha un tetto di peso per riga
|
||||||
|
(`AssegnaPrestazioniTest`, 2,6 KB): il pulsante ci sta.
|
||||||
- **Anche i membri si segnalano**: `Proclamatore::gruppo_etichetta`
|
- **Anche i membri si segnalano**: `Proclamatore::gruppo_etichetta`
|
||||||
("Gruppo Zisa" / "Sorvegliante del gruppo Zisa") come badge nell'elenco
|
("Gruppo Zisa" / "Sorvegliante del gruppo Zisa") come badge nell'elenco
|
||||||
(più il filtro *In un gruppo di servizio*, `filtroStato=gruppo`) e in testa
|
(più il filtro *In un gruppo di servizio*, `filtroStato=gruppo`) e in testa
|
||||||
|
|||||||
@@ -728,7 +728,8 @@ docker compose --profile dev up -d --build
|
|||||||
"Invia link" per riprendere. Anche dall'elenco dei territori assegnati si
|
"Invia link" per riprendere. Anche dall'elenco dei territori assegnati si
|
||||||
può copiare o condividere il link
|
può copiare o condividere il link
|
||||||
- L'elenco dei territori assegnati si carica subito dopo la pagina e si filtra
|
- L'elenco dei territori assegnati si carica subito dopo la pagina e si filtra
|
||||||
nel browser, senza attese
|
nel browser, senza attese; ogni territorio ha il pulsante **Rientro**, che
|
||||||
|
porta alla registrazione del rientro e poi torna all'elenco
|
||||||
- Rientro con calcolo automatico dei giorni
|
- Rientro con calcolo automatico dei giorni
|
||||||
- **Prompt campagna**: se il territorio era fuori durante una campagna viene
|
- **Prompt campagna**: se il territorio era fuori durante una campagna viene
|
||||||
chiesto se è stato percorso per la campagna; oltre la soglia "da rientrare"
|
chiesto se è stato percorso per la campagna; oltre la soglia "da rientrare"
|
||||||
|
|||||||
@@ -51,6 +51,8 @@
|
|||||||
@endif
|
@endif
|
||||||
@if($pdfUrl)
|
@if($pdfUrl)
|
||||||
<div class="tm-assegnato-link" data-link data-id="{{ $a->id }}" data-messaggio="{{ $a->messaggioLink($pdfUrl) }}" data-titolo="Territorio N° {{ $a->territorio?->numero }}">
|
<div class="tm-assegnato-link" data-link data-id="{{ $a->id }}" data-messaggio="{{ $a->messaggioLink($pdfUrl) }}" data-titolo="Territorio N° {{ $a->territorio?->numero }}">
|
||||||
|
{{-- Registra il rientro; finito, si torna qui (data-ritorno) --}}
|
||||||
|
@can('territori.return')<x-btn data-ritorno variante="primary" dimensione="sm" :href="route('assegnazioni.rientra', $a)">Rientro</x-btn>@endcan
|
||||||
<code x-on:click="window.getSelection().selectAllChildren($el)">{{ $pdfUrl }}</code>
|
<code x-on:click="window.getSelection().selectAllChildren($el)">{{ $pdfUrl }}</code>
|
||||||
<x-btn variante="secondary" tono="tenue" dimensione="sm" icona class="tm-copia" x-on:click="copia($el)" title="Copia link" aria-label="Copia il link del PDF"><svg aria-hidden="true"><use href="#tm-i-copia"/></svg><svg aria-hidden="true"><use href="#tm-i-spunta"/></svg></x-btn>
|
<x-btn variante="secondary" tono="tenue" dimensione="sm" icona class="tm-copia" x-on:click="copia($el)" title="Copia link" aria-label="Copia il link del PDF"><svg aria-hidden="true"><use href="#tm-i-copia"/></svg><svg aria-hidden="true"><use href="#tm-i-spunta"/></svg></x-btn>
|
||||||
{{-- Condividi: menu di condivisione del telefono, solo dove il browser lo offre (elencoCercabile.condividi). --}}
|
{{-- Condividi: menu di condivisione del telefono, solo dove il browser lo offre (elencoCercabile.condividi). --}}
|
||||||
@@ -59,7 +61,10 @@
|
|||||||
<x-btn :variante="$a->link_sent ? 'primary' : 'secondary'" tono="tenue" dimensione="sm" wire:click="toggleLinkSent({{ $a->id }})" aria-pressed="{{ $a->link_sent ? 'true' : 'false' }}" title="{{ $a->link_sent ? 'Link inviato — clicca per annullare' : 'Segna come inviato' }}"><svg aria-hidden="true"><use href="{{ $a->link_sent ? '#tm-i-spunta' : '#tm-i-invio' }}"/></svg> {{ $a->link_sent ? 'Link inviato' : 'Non inviato' }}</x-btn>
|
<x-btn :variante="$a->link_sent ? 'primary' : 'secondary'" tono="tenue" dimensione="sm" wire:click="toggleLinkSent({{ $a->id }})" aria-pressed="{{ $a->link_sent ? 'true' : 'false' }}" title="{{ $a->link_sent ? 'Link inviato — clicca per annullare' : 'Segna come inviato' }}"><svg aria-hidden="true"><use href="{{ $a->link_sent ? '#tm-i-spunta' : '#tm-i-invio' }}"/></svg> {{ $a->link_sent ? 'Link inviato' : 'Non inviato' }}</x-btn>
|
||||||
</div>
|
</div>
|
||||||
@else
|
@else
|
||||||
|
<div class="tm-assegnato-link">
|
||||||
|
@can('territori.return')<x-btn data-ritorno variante="primary" dimensione="sm" :href="route('assegnazioni.rientra', $a)">Rientro</x-btn>@endcan
|
||||||
<p class="tm-assegnato-senza">Nessun PDF disponibile</p>
|
<p class="tm-assegnato-senza">Nessun PDF disponibile</p>
|
||||||
|
</div>
|
||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
@endforeach
|
@endforeach
|
||||||
|
|||||||
@@ -260,4 +260,14 @@ class InvioLinkTest extends TestCase
|
|||||||
->get(route('territori.index'))
|
->get(route('territori.index'))
|
||||||
->assertSee(route('piantine.editor', ['nuovo' => 1]), false);
|
->assertSee(route('piantine.editor', ['nuovo' => 1]), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function test_dall_elenco_degli_assegnati_si_va_al_rientro(): void
|
||||||
|
{
|
||||||
|
$this->assegna($this->mario(), $this->territorioConPdf('7'));
|
||||||
|
$a = Assegnazione::sole();
|
||||||
|
|
||||||
|
Livewire::withoutLazyLoading()->actingAs($this->admin)->test(ElencoAssegnati::class)
|
||||||
|
->assertSee('Rientro')
|
||||||
|
->assertSee(route('assegnazioni.rientra', $a), false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user