{{-- Barra di gestione: esterna alla sezione piano, larghezza 12 colonne (selezione giorno + azioni) --}}
@foreach($giorni as $g) @endforeach
@if($modalita === 'piano') @if($giornoSelezionato !== 'tutti' && in_array($giornoSelezionato, $nomiGiorniExtra ?? [], true)) @endif @endif @if($modalita === 'piano') @else @endif
@if($giornoSelezionato === 'tutti') @endif
{{-- Colonna sinistra: form pasti (sezione piano nutrizionale / template) --}}
@if($modalita === 'template')

Template biblioteca diete

@else

Piano nutrizionale settimanale ({{ $nomeDietaBibliotecaCaricata !== '' ? $nomeDietaBibliotecaCaricata : 'manuale' }})

@endif
{{-- Selezione cliente (solo in modalità piano e non in contesto visita nutrizionale) --}} @if($modalita === 'piano' && !$visitaNutrizionaleId)
@if($clienteId)
Cliente selezionato
@elseif(strlen(trim($searchCliente)) >= 2)
@foreach($this->clientiCercati as $cliente) @endforeach @if($this->clientiCercati->isEmpty())
Nessun cliente trovato
@endif
@endif
@error('clienteId') {{ $message }} @enderror
@elseif($modalita === 'piano')
Cliente impostato dalla visita nutrizionale
@endif @if($giornoSelezionato !== 'tutti' && in_array($giornoSelezionato, \App\Services\PianoSettimanaleNutrizionaleService::GIORNI_SETTIMANA, true))

Modifiche applicate solo a {{ $giornoSelezionato }}.

@endif {{-- Intestazione nome/descrizione template (solo modalità template) --}} @if($modalita === 'template')
@error('nomeTemplate') {{ $message }} @enderror
@if(auth()->user()?->puoGestireBibliotecaDiete())
Se attivo, il template sarà visibile e utilizzabile da tutti i nutrizionisti.
@endif
@endif {{-- Card pasti --}} @foreach($pastiPerVista as $pastoData)
@if($pastoInModificaNome === $pastoData['pasto']) @else
{{ $pastoData['label'] }}
@endif
{{-- Call-to-action inserimento alimento tramite modale --}}
Aggiungi nuovo alimento
{{-- Lista alimenti nel pasto: nome + grammi (testo); matita per modificare grammi, cestino per rimuovere; trascinabile tra giorni/pasti, frecce per riordinare nel giorno --}}
    @forelse($pastoData['alimenti'] as $idx => $riga) @php $rigaModificaKey = $giornoDisplay . '|' . $pastoData['pasto'] . '|' . $idx; @endphp
  • {{-- Nome in sola lettura: nascosto quando la riga è in modifica nome --}} @if($rigaInModificaNome !== $rigaModificaKey) {{ $riga['nome'] }} @endif {{-- Modifica nome inline (visibile solo quando attivata dalla matita) --}} @if($rigaInModificaNome === $rigaModificaKey)
    Conferma con Invio o clic fuori dal campo per salvare
    @endif {{-- Visualizzazione grammi (solo testo): nascosta quando la riga è in modifica --}} @if($rigaInModificaQuantita !== $rigaModificaKey) ({{ (int) ($riga['quantita_g'] ?? 100) }} g) @endif
    {{-- Sostituti mostrati sotto il nome principale --}} @if(!empty($riga['sostituti'] ?? []))
    @foreach($riga['sostituti'] as $sidx => $sost)
    o {{ $sost['nome'] }} ({{ (int) ($sost['quantita_g'] ?? 100) }} g)
    @endforeach
    @endif {{-- Modifica grammi (visibile solo quando attivata dalla matita) --}} @if($rigaInModificaQuantita === $rigaModificaKey)
    g
    Conferma con Invio o clic fuori dal campo per salvare
    @endif
    {{-- Ordine: Cestino -> Duplica -> Bilancia (grammi) -> Matita (nome) -> + (sostituti) --}} @if($rigaInModificaQuantita !== $rigaModificaKey) @endif @if($rigaInModificaNome !== $rigaModificaKey) @endif
    @if($sostitutiPerRiga === $giornoDisplay . '|' . $pastoData['pasto'] . '|' . $idx) @php $sc = $this->sostitutiCorrente; @endphp
    Sostituti suggeriti (iso-macro)
    @if(trim($sostitutiQuery) !== '') @endif
    {{-- Filtro per lettera iniziale --}} @if(trim($sostitutiQuery) === '')
    @foreach(range('A', 'Z') as $lettera) @endforeach
    @endif
      @forelse($sc['items'] as $sost)
    • {{ $sost['nome'] }}
    • @empty
    • Nessun sostituto trovato @if(trim($sostitutiQuery) !== '') {{ ' per la ricerca "' . trim($sostitutiQuery) . '"' }} @elseif($sostitutiLetterFilter !== '') {{ ' per la lettera ' . $sostitutiLetterFilter }} @endif .
    • @endforelse
    {{-- Paginazione --}} @if($sc['last_page'] > 1)
    {{ $sc['total'] }} sostituti — pagina {{ $sc['current_page'] }} di {{ $sc['last_page'] }}
    @endif
    @endif
  • @empty
  • Nessun alimento aggiunto
  • @endforelse
{{-- Riepilogo nutrizionale pasto --}}
Riepilogo pasto: Energia {{ round($pastoData['totaliPasto']['energia_kcal'] ?? 0) }} kcal — Lipidi {{ number_format($pastoData['totaliPasto']['lipidi_g'] ?? 0, 1) }} g — Carboidrati {{ number_format($pastoData['totaliPasto']['carboidrati_g'] ?? 0, 1) }} g — Proteine {{ number_format($pastoData['totaliPasto']['proteine_g'] ?? 0, 1) }} g — Fibre {{ number_format($pastoData['totaliPasto']['fibre_g'] ?? 0, 1) }} g
@if(!$loop->last)
@endif @endforeach
Annulla
{{-- Sidebar destra: blocco unico sticky con entrambe le card (evita sovrapposizione) --}}
@php $alimentiIndagineCompatti = $this->alimentiIndaginePerPastoCompatti; @endphp @if(!empty($alimentiIndagineCompatti))
Alimenti indagine alimentare

Sintesi compatta per pasto

@foreach($alimentiIndagineCompatti as $pastoData)
{{ $pastoData['label'] }}
@foreach($pastoData['voci'] as $voce) {{ $voce['nome'] }} ({{ number_format((float) ($voce['grammi'] ?? 0), 1, ',', '.') }}g) @endforeach @if(($pastoData['restanti'] ?? 0) > 0) +{{ $pastoData['restanti'] }} @endif
@endforeach
@endif
Analisi globale

Analisi di energia, macronutrienti e fibre

@php $ref = $riferimentiAnalisi ?? null; $energiaCurr = round($totaliGiornoDisplay['energia_kcal'] ?? 0); $energiaRef = $ref['energia_kcal'] ?? null; $energiaSupera = $energiaRef !== null && $energiaCurr > $energiaRef; $energiaPct = ($energiaRef !== null && $energiaRef > 0) ? min(100, (int) round(($energiaCurr / $energiaRef) * 100)) : 0; @endphp
Energia @if($energiaRef !== null) {{ $energiaCurr }} / {{ $energiaRef }} kcal @if($energiaSupera) ! @endif @else {{ $energiaCurr }} kcal @endif
@if($energiaRef !== null && $energiaRef > 0)
@endif
@php $deltaEnergia = (int) round((float) ($deltaKcalGiorno ?? 0)); $energiaFinale = (int) round(((float) $energiaCurr) + $deltaEnergia); @endphp
-1000 {{ $energiaFinale }} kcal ({{ $deltaEnergia >= 0 ? '+' : '' }}{{ $deltaEnergia }}) +1000
Modifica manuale del giorno visualizzato. Il sistema applica il fattore proporzionale: kcal obiettivo / kcal attuali.
@php $macroConfig = [ 'lipidi' => ['key' => 'lipidi_g', 'label' => 'Lipidi', 'var' => '--macro-lipidi'], 'carboidrati' => ['key' => 'carboidrati_g', 'label' => 'Carboidrati', 'var' => '--macro-carboidrati'], 'proteine' => ['key' => 'proteine_g', 'label' => 'Proteine', 'var' => '--macro-proteine'], 'fibre' => ['key' => 'fibre_g', 'label' => 'Fibre', 'var' => '--macro-fibre'], ]; @endphp @foreach($macroConfig as $slug => $cfg) @php $curr = (float) ($totaliGiornoDisplay[$cfg['key']] ?? 0); $r = $ref[$cfg['key']] ?? null; $supera = $r !== null && $curr > $r; $pct = ($r !== null && $r > 0) ? min(100, (int) round(($curr / $r) * 100)) : 0; $gradient = ($r !== null && $r > 0) ? "conic-gradient(var({$cfg['var']}) 0deg, var({$cfg['var']}) " . ($pct * 3.6) . "deg, #e9ecef " . ($pct * 3.6) . "deg 360deg)" : "var({$cfg['var']})"; @endphp
@if($supera) ! @endif
@if($r !== null && $r > 0)
{{ number_format($curr, 0) }}g {{ number_format($r, 0) }}g
@else {{ number_format($curr, 0) }}g @endif
{{ $cfg['label'] }}
@endforeach
Distribuzione dei macronutrienti

Distribuzione dei macronutrienti in relazione a quanto pianificato

@if($pieChartCss !== '')
Lipidi {{ $percentualiMacroFormattate['lipidi'] }}%
Carboidrati {{ $percentualiMacroFormattate['carboidrati'] }}%
Proteine {{ $percentualiMacroFormattate['proteine'] }}%
Macronutriente Valore (g) % energia
Lipidi {{ number_format($totaliGiornoDisplay['lipidi_g'] ?? 0, 1) }} {{ $percentualiMacroFormattate['lipidi'] ?? 0 }}%
Carboidrati {{ number_format($totaliGiornoDisplay['carboidrati_g'] ?? 0, 1) }} {{ $percentualiMacroFormattate['carboidrati'] ?? 0 }}%
Proteine {{ number_format($totaliGiornoDisplay['proteine_g'] ?? 0, 1) }} {{ $percentualiMacroFormattate['proteine'] ?? 0 }}%
Fibre {{ number_format($totaliGiornoDisplay['fibre_g'] ?? 0, 1) }}
@else

Non sono stati ancora inseriti alimenti.

@endif
Distribuzione dei micronutrienti

Distribuzione dei micronutrienti in relazione a quanto pianificato

@php $haAlimentiMicro = ($totaliGiornoDisplay['energia_kcal'] ?? 0) > 0; @endphp @if($haAlimentiMicro && !empty($totaliMicroGiornoDisplay) && !empty($configMicroNutrienti))
@foreach($configMicroNutrientiPerCategoria as $categoria => $micronutrienti) @foreach($micronutrienti as $chiave => $cfg) @php $valore = (float) ($totaliMicroGiornoDisplay[$chiave] ?? 0); $decimali = ($cfg['unita'] ?? '') === 'µg' ? 1 : 2; @endphp @endforeach @endforeach
Micronutriente Valore Unità
{{ $categoria }}
{{ $cfg['label'] }} {{ number_format($valore, $decimali) }} {{ $cfg['unita'] }}
@else

@if(!$haAlimentiMicro || empty($totaliMicroGiornoDisplay)) Non sono stati ancora inseriti alimenti. @else Nessun micronutriente è stato selezionato per la visualizzazione. @endif

@endif
{{-- Modale personalizzazione micronutrienti step 4 --}} @if($mostraModalMicronutrienti) @endif {{-- Modale inserimento alimenti per pasto --}} @if($mostraModalInserimentoAlimenti) @endif {{-- Modale copia pasto su altro giorno --}} @if($mostraModalCopiaPasto) @endif {{-- Modale Importare piano alimentare --}} @if($mostraModalImporta) @endif @script @endscript