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