longevity: pagina del gestionale — modulo di check-up manuale
pages/longevity/gestionale/cliente/[code]/checkup.astro: campi da campiDelCheckup, raggruppati per asse, etichetta e unità, input inputmode="decimal" tutti facoltativi (la virgola decimale e i campi vuoti li gestisce l'endpoint). Invio verso /api/longevity/gestionale/checkup. Refs #2
This commit is contained in:
@@ -0,0 +1,57 @@
|
|||||||
|
---
|
||||||
|
// Il modulo del check-up manuale: i campi letti dal registro (campiDelCheckup),
|
||||||
|
// raggruppati per asse come il modulo cartaceo. L'invio va all'API del gestionale, che fa
|
||||||
|
// la validazione vera (pages/api/longevity/gestionale/checkup.ts) — qui c'è solo il form.
|
||||||
|
import Longevity from '../../../../../layouts/Longevity.astro';
|
||||||
|
import { getLongevityDb } from '../../../../../lib/longevity/db';
|
||||||
|
import { clienteDaCodice } from '../../../../../lib/longevity/anagrafica';
|
||||||
|
import { campiDelCheckup } from '../../../../../lib/longevity/gestionale';
|
||||||
|
|
||||||
|
export const prerender = false;
|
||||||
|
|
||||||
|
const { code } = Astro.params;
|
||||||
|
const cliente = code ? clienteDaCodice(code) : null;
|
||||||
|
if (!cliente) return new Response('Cliente non trovato', { status: 404 });
|
||||||
|
|
||||||
|
const oggi = new Date().toISOString().slice(0, 10);
|
||||||
|
const gruppi = campiDelCheckup(getLongevityDb(), oggi);
|
||||||
|
const errore = Astro.url.searchParams.get('errore');
|
||||||
|
---
|
||||||
|
<Longevity
|
||||||
|
title={`Check-up — ${cliente.cognome} ${cliente.nome}`}
|
||||||
|
crumbs={['Clienti', `${cliente.cognome} ${cliente.nome}`, 'Nuovo check-up']}
|
||||||
|
variante="gestionale"
|
||||||
|
>
|
||||||
|
<div class="lg-head">
|
||||||
|
<h1>Nuovo check-up</h1>
|
||||||
|
<p>{cliente.cognome} {cliente.nome} — {cliente.client_code}. Lascia vuoto ciò che non hai misurato oggi.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{errore && <p class="lg-form__errore">{errore}</p>}
|
||||||
|
|
||||||
|
<form class="lg-form" method="post" action="/api/longevity/gestionale/checkup">
|
||||||
|
<input type="hidden" name="client_code" value={cliente.client_code} />
|
||||||
|
|
||||||
|
<label class="lg-field">
|
||||||
|
<span>Data</span>
|
||||||
|
<input type="date" name="data" value={oggi} required />
|
||||||
|
</label>
|
||||||
|
|
||||||
|
{gruppi.map((g) => (
|
||||||
|
<section class="lg-form__blocco">
|
||||||
|
<h2>{g.asse}</h2>
|
||||||
|
{g.campi.map((c) => (
|
||||||
|
<label class="lg-field">
|
||||||
|
<span>{c.etichetta}{c.unita ? ` (${c.unita})` : ''}</span>
|
||||||
|
<input type="text" inputmode="decimal" name={c.id} />
|
||||||
|
</label>
|
||||||
|
))}
|
||||||
|
</section>
|
||||||
|
))}
|
||||||
|
|
||||||
|
<div class="lg-form__nav">
|
||||||
|
<a href={`/longevity/gestionale/cliente/${cliente.client_code}`}>Annulla</a>
|
||||||
|
<button type="submit">Salva check-up</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</Longevity>
|
||||||
Reference in New Issue
Block a user