{{-- Modulo S-13-I — Registrazione delle assegnazioni del territorio. Ricostruzione fedele del modulo ufficiale, la cui copia è in resources/pdf/S-13_I.pdf e va usata come matrice per qualsiasi modifica alla griglia. Il modulo originale è un PDF 1.7 con font CID embeddati: sovrapporvi testo richiederebbe il parser a pagamento di FPDI, mentre dompdf è già in uso per gli altri export del progetto. Struttura per pagina: 21 blocchi-territorio, ognuno su due righe — quella alta ospita i nomi dei proclamatori, quella bassa le date. Le colonne "Terr. N." e "Restituito l'ultima volta il" occupano entrambe le righe. Il motore CSS di dompdf non è un browser: le larghezze stanno in (con i soli colspan sarebbero ripartite a caso) e l'interruzione di pagina è decisa dall'indice del ciclo, perché il supporto a :last-child non è garantito e un foglio bianco in coda sarebbe visibile. --}} @php /** * Il nome del proclamatore deve stare su una riga: le righe hanno altezza * fissa e la cella è nowrap, quindi mandare a capo sfonderebbe la griglia. * Invece di andare a capo si scala il corpo. * * Larghezza utile della cella ~34.8mm (due colonne meno il padding). * DejaVu Sans occupa in media 0.52em per carattere, cioè ~0.1835mm per * carattere per punto di corpo: da lì il corpo massimo che entra. * * Sotto i 4.5pt il testo non sarebbe più leggibile, quindi oltre i 42 * caratteri si tronca — l'ellissi rende visibile l'accorciamento, mentre * un nome che deborda corromperebbe la griglia in silenzio. */ $LARGHEZZA_CELLA_MM = 34.8; $MM_PER_CARATTERE_PER_PUNTO = 0.1835; $CORPO_MAX_PT = 8.0; $CORPO_MIN_PT = 4.5; $maxCaratteri = (int) floor($LARGHEZZA_CELLA_MM / ($CORPO_MIN_PT * $MM_PER_CARATTERE_PER_PUNTO)); $nomeTroncato = static fn (string $nome): string => mb_strlen($nome) > $maxCaratteri ? mb_substr($nome, 0, $maxCaratteri - 1) . '…' : $nome; $nomeFontSize = static function (string $nome) use ($LARGHEZZA_CELLA_MM, $MM_PER_CARATTERE_PER_PUNTO, $CORPO_MAX_PT, $CORPO_MIN_PT): string { $len = mb_strlen($nome); if ($len === 0) { return $CORPO_MAX_PT . 'pt'; } $pt = $LARGHEZZA_CELLA_MM / ($len * $MM_PER_CARATTERE_PER_PUNTO); return round(max($CORPO_MIN_PT, min($CORPO_MAX_PT, $pt)), 1) . 'pt'; }; $ultimaPagina = $pagine->count() - 1; @endphp S-13 — Registrazione delle assegnazioni del territorio @foreach($pagine as $indice => $righe)

REGISTRAZIONE DELLE ASSEGNAZIONI DEL TERRITORIO

Anno di servizio: {{ $annoLabel }}
@for($c = 0; $c < 8; $c++) @endfor @for($g = 0; $g < 4; $g++) @endfor @for($g = 0; $g < 4; $g++) @endfor @foreach($righe as $riga) @foreach($riga['assegnazioni'] as $a) @php($nome = $nomeTroncato($a['nome'])) @endforeach @foreach($riga['assegnazioni'] as $a) @endforeach @endforeach
Terr.
N.
Restituito
l’ultima volta il*
Assegnato a
Assegnato il Restituito il
{{ $riga['numero'] }} {{ $riga['rientro_precedente'] }}{{ $nome }}
{{ $a['assegnato_il'] }} {{ $a['restituito_il'] }}
*Quando si inizia un nuovo foglio, registrare in questa colonna l’ultima data in cui è stato restituito ogni territorio.
S-13-I  1/22
@endforeach