longevity: il referto del cliente, e il radar che dice cosa non sa
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
---
|
||||
// Il referto del cliente: il radar a sette assi, la Fitness Age, le carte dei macro-score.
|
||||
// La pagina non interroga il database da sola (c'è un test che lo verifica): il codice
|
||||
// cliente arriva da codicePerUtenteLoggato (anagrafica.ts, l'unico modulo autorizzato a
|
||||
// toccare identity), la sessione più recente e il referto stesso da vista.ts.
|
||||
import Longevity from '../../layouts/Longevity.astro';
|
||||
import Radar from '../../components/longevity/Radar';
|
||||
import MacroScore from '../../components/longevity/MacroScore.astro';
|
||||
import { getLongevityDb } from '../../lib/longevity/db';
|
||||
import { codicePerUtenteLoggato } from '../../lib/longevity/anagrafica';
|
||||
import { refertoDi, ultimaSessioneDi } from '../../lib/longevity/vista';
|
||||
|
||||
export const prerender = false;
|
||||
|
||||
const user = Astro.locals.user!;
|
||||
const codice = codicePerUtenteLoggato(user.id);
|
||||
const db = getLongevityDb();
|
||||
const sessioneId = codice ? ultimaSessioneDi(db, codice) : null;
|
||||
const referto = sessioneId !== null ? refertoDi(db, sessioneId) : null;
|
||||
---
|
||||
<Longevity title="Il tuo referto" crumbs={['Il tuo referto']}>
|
||||
{!codice && (
|
||||
<div class="lg-card">
|
||||
<p>Nessun fascicolo è ancora collegato al tuo account. Contatta lo staff InsanityLab.</p>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{codice && !referto && (
|
||||
<div class="lg-card lg-card--incompleto">
|
||||
<p>Non hai ancora compilato il questionario: senza quello non c'è ancora un referto da mostrare.</p>
|
||||
<p><a href="/longevity/questionario">Comincia da qui</a>.</p>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{referto && (
|
||||
<div class="lg-referto">
|
||||
<section class="lg-card">
|
||||
<p class="lg-score__label">Fitness Age</p>
|
||||
<div class="lg-score">
|
||||
<span class="lg-score__value lg-num">{referto.fitnessAge ?? '—'}</span>
|
||||
{referto.fitnessAge !== null && <span class="lg-score__max">anni</span>}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="lg-card">
|
||||
<h2>Il tuo radar</h2>
|
||||
<Radar client:load assi={referto.assi} />
|
||||
</section>
|
||||
|
||||
<section class="lg-macro">
|
||||
{referto.macro.map((m) => (
|
||||
<MacroScore nome={m.nome} valore={m.valore} copertura={m.copertura} />
|
||||
))}
|
||||
</section>
|
||||
</div>
|
||||
)}
|
||||
</Longevity>
|
||||
Reference in New Issue
Block a user