++ Il mio gruppo: il numero del territorio apre l'anteprima

Il numero diventa un pulsante che apre una finestra con la miniatura e il
collegamento al PDF. La miniatura passa dalla rotta nuova
mio-gruppo.miniatura, con la stessa regola del PDF: solo i territori del
pacchetto del gruppo sorvegliato.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Francesco Picone
2026-10-21 16:27:50 +02:00
parent 9e473cd7fd
commit 2fb9838a0e
8 changed files with 106 additions and 7 deletions

View File

@@ -1,8 +1,11 @@
<div>
<div x-data="{ anteprima: null }">
{{-- Il mio gruppo (MioGruppo): la sola pagina del sorvegliante di gruppo.
Pensata prima per il telefono: schede una sotto l'altra, pulsanti
grandi. Copia, Condividi e ricerca vengono da elencoCercabile
(resources/js/app.js), l'invio del link dal partial _invio-link. --}}
(resources/js/app.js), l'invio del link dal partial _invio-link.
Il numero del territorio apre l'anteprima (stato Alpine `anteprima`,
finestra in fondo alla vista): miniatura e PDF dalle rotte
mio-gruppo.*, che rispondono solo per il pacchetto del gruppo. --}}
@if(! $gruppo)
<div class="bg-white rounded-xl shadow-sm border border-gray-200 p-6 text-sm text-gray-600">
Non sei il sorvegliante di un gruppo di servizio attivo.
@@ -81,7 +84,11 @@
@endphp
<div wire:key="pacchetto-{{ $t->id }}" data-cerca="{{ $cerca }}" x-show="corrisponde($el.dataset.cerca)" class="tm-assegnato">
<div class="tm-assegnato-testa">
<span><span class="tm-assegnato-numero">N° {{ $t->numero }}</span> @if($t->zona?->nome)<span class="tm-assegnato-zona">{{ $t->zona->nome }}</span>@endif
<span>@if($t->thumbnail_path || $t->pdf_path)<button type="button" class="tm-assegnato-numero" title="Anteprima del territorio"
data-titolo="Territorio N° {{ $t->numero }}{{ $t->zona?->nome ? ' — ' . $t->zona->nome : '' }}"
data-miniatura="{{ $t->miniaturaGruppoUrl() }}"
data-pdf="{{ $t->pdf_path ? route('mio-gruppo.pdf', $t) : '' }}"
x-on:click="anteprima = { titolo: $el.dataset.titolo, miniatura: $el.dataset.miniatura, pdf: $el.dataset.pdf }">N° {{ $t->numero }}</button>@else<span class="tm-assegnato-numero">N° {{ $t->numero }}</span>@endif @if($t->zona?->nome)<span class="tm-assegnato-zona">{{ $t->zona->nome }}</span>@endif
@if($t->in_priorita)<span class="ml-1 inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-semibold uppercase tracking-wide" style="background:#fef3c7;color:#92400e">★ Prioritario</span>@endif</span>
@if($a)
<span class="tm-assegnato-info"><b>{{ $a->proclamatore?->nome_completo }}</b> · dal {{ $a->assigned_at->format('d/m/Y') }} · <span class="tm-assegnato-giorni {{ $a->giorni > 120 ? 'tm-g-tardi' : ($a->giorni > 90 ? 'tm-g-presto' : '') }}">{{ $a->giorni }}g</span></span>
@@ -156,5 +163,27 @@
@endforeach
</ul>
</section>
{{-- Anteprima del territorio: si apre dal numero, si chiude con la X,
con Esc o toccando fuori. --}}
<div class="tm-modale-sfondo" x-show="anteprima" x-cloak x-transition.opacity
x-on:click.self="anteprima = null" x-on:keydown.escape.window="anteprima = null">
<div class="tm-modale" role="dialog" aria-modal="true" aria-labelledby="anteprima-titolo">
<header class="tm-modale-testata">
<h2 id="anteprima-titolo" x-text="anteprima?.titolo"></h2>
<button type="button" class="tm-editor-chiudi" x-on:click="anteprima = null" aria-label="Chiudi l'anteprima">&times;</button>
</header>
<div class="tm-modale-corpo">
<template x-if="anteprima?.miniatura">
<img x-bind:src="anteprima.miniatura" x-bind:alt="'Anteprima: ' + anteprima.titolo"
class="mx-auto max-w-full rounded-lg border border-gray-200 bg-gray-50">
</template>
<p x-show="! anteprima?.miniatura" class="text-sm text-gray-500">Per questo territorio non c'è ancora un'anteprima.</p>
</div>
<footer class="tm-modale-piede" x-show="anteprima?.pdf">
<a x-bind:href="anteprima?.pdf" target="_blank" rel="noopener" class="tm-collegamento">Apri la piantina (PDF)</a>
</footer>
</div>
</div>
@endif
</div>