longevity: pagina /longevity/progressione, grafico e tabella dell'andamento
Progressione.tsx: una linea per macro-score (connectNulls=false: un dato mancante è un buco, non una linea inventata), tratteggio e spessore a distinguere le serie invece di un colore nuovo, riga verticale tratteggiata sui cambi di versione; sotto, la tabella per asse. Colori identici a Radar.tsx, nessuno nuovo. progressione.astro: stesso modello di io.astro (codicePerUtenteLoggato, nessuna query diretta); sotto i due punti mostra il messaggio che ne serve almeno uno in più. io.astro linka la pagina nuova. Refs #5 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -64,7 +64,8 @@ const referto = sessioneId !== null ? refertoDi(db, sessioneId) : null;
|
||||
<p>
|
||||
InsanityLab Longevity monitora il tuo percorso nel tempo: più compilazioni
|
||||
raccontano come cambi, non solo come stai oggi.
|
||||
<a href="/longevity/questionario">Compila di nuovo il questionario</a>.
|
||||
<a href="/longevity/progressione">Guarda il tuo andamento nel tempo</a> o
|
||||
<a href="/longevity/questionario">compila di nuovo il questionario</a>.
|
||||
</p>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
// L'andamento nel tempo del cliente: una sessione per punto, i punteggi congelati che
|
||||
// quella sessione ha davvero. Stesso modello di io.astro: la pagina non interroga il
|
||||
// database da sola (c'è un test che lo verifica, referto.test.ts, esteso a tutte le pagine
|
||||
// sotto src/pages/longevity/), il codice cliente arriva da codicePerUtenteLoggato
|
||||
// (anagrafica.ts, l'unico modulo autorizzato a toccare identity), i punti da progressioneDi
|
||||
// (progressione.ts, che legge SOLO score — mai un ricalcolo).
|
||||
import Longevity from '../../layouts/Longevity.astro';
|
||||
import Progressione from '../../components/longevity/Progressione';
|
||||
import { getLongevityDb } from '../../lib/longevity/db';
|
||||
import { codicePerUtenteLoggato } from '../../lib/longevity/anagrafica';
|
||||
import { progressioneDi } from '../../lib/longevity/progressione';
|
||||
|
||||
export const prerender = false;
|
||||
|
||||
const user = Astro.locals.user!;
|
||||
const codice = codicePerUtenteLoggato(user.id);
|
||||
const db = getLongevityDb();
|
||||
const punti = codice ? progressioneDi(db, codice) : [];
|
||||
---
|
||||
<Longevity title="Andamento nel tempo" crumbs={['Andamento nel tempo']}>
|
||||
{!codice && (
|
||||
<div class="lg-card">
|
||||
<p>Nessun fascicolo è ancora collegato al tuo account. Contatta lo staff InsanityLab.</p>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{codice && punti.length < 2 && (
|
||||
<div class="lg-card lg-card--incompleto">
|
||||
<p>Serve almeno un secondo check-up o questionario per vedere un andamento.</p>
|
||||
<p><a href="/longevity/io">Torna al tuo referto</a>.</p>
|
||||
</div>
|
||||
)}
|
||||
|
||||
{codice && punti.length >= 2 && (
|
||||
<div class="lg-referto">
|
||||
<section class="lg-card">
|
||||
<h2>Il tuo andamento</h2>
|
||||
<Progressione client:load punti={punti} />
|
||||
</section>
|
||||
|
||||
<section class="lg-card">
|
||||
<p><a href="/longevity/io">Torna al tuo referto</a>.</p>
|
||||
</section>
|
||||
</div>
|
||||
)}
|
||||
</Longevity>
|
||||
Reference in New Issue
Block a user