Misure
Micro-app della suite Vigor
Misure: micro-app della suite Vigor, sui dati condivisi «vigor».
spazio dati «vigor» — questa micro app legge e scrive lo spazio dati condiviso dalla suite.
Cosa registra
- Peso (kg)
- Pressione (es. 120/80)
Le altre micro app della stessa suite
Come funziona
Questa è un'app Reactive: un semplice documento di testo che il browser trasforma in un'app funzionante — moduli, dati dal vivo, tabelle, statistiche e persino grafici, senza installare né configurare nulla.
- Usala subito. Premi «Usa questa app»: si apre subito nel tuo browser, già pronta, con i dati salvati solo sul tuo dispositivo.
- I tuoi dati restano tuoi. Tutto è memorizzato in locale sul dispositivo, separato per ogni app: niente account, niente server, niente da configurare.
- Rendila tua. Il testo qui sotto è l'app per intero: copialo, cambia campi, viste e parole, e le modifiche diventano subito interattive.
- Condividila come file. Un'app è un semplice file: salvalo, esportalo o condividilo con un link; e con la collaborazione cifrata più persone modificano gli stessi dati in tempo reale.
Il testo dell'app
# ⚖️ Misure
## Il diario delle misure
::::form{path="misure" id="fmi"}
::input{form="fmi" field="data" type="date" required="true" legend="Giorno"}
::input{form="fmi" field="peso" type="number" placeholder="Peso (kg)" required="true"}
::input{form="fmi" field="pressione" placeholder="Pressione (es. 120/80)"}
::add-form{form="fmi" path="misure" label="Registra"}
::::
:::table{path="misure" headers="Giorno,Peso,Pressione" deletable="true" editform="fmi"}
{data} | {peso} kg | {pressione}
:::
:::python{data="misure" packages="matplotlib"}
```
import matplotlib.pyplot as plt
rows = data.get("misure", [])
serie = sorted(
((r.get("data", ""), float(r.get("peso", 0) or 0)) for r in rows if r.get("peso")),
key=lambda x: x[0],
)
if len(serie) < 2:
print("Registra almeno due pesate per vedere l'andamento.")
else:
fig, ax = plt.subplots(figsize=(6, 3))
ax.plot([d for d, _ in serie], [p for _, p in serie], marker="o")
ax.set_ylabel("kg")
ax.set_title("Andamento del peso")
plt.xticks(rotation=30)
plt.tight_layout()
```
:::