fix(gui): percentili Calibrazione in riga compatta, no truncation

I valori percentili (es. -0.0298, 0.05323) renderizzati come
``st.metric`` su 7 colonne venivano tagliati su viewport stretti:
ogni metric ha label sopra, font fisso, nessun shrink. Sostituito
con render markdown inline a font 0.85rem, single-line, scrollabile
orizzontalmente se serve. Tutti e 7 i percentili visibili senza
troncamento e senza wrap.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
root
2026-05-01 21:21:32 +00:00
parent a1a9f74ed2
commit 7fdd8b47a5
@@ -167,9 +167,21 @@ def _percentiles_strip(s: pd.Series) -> None:
st.caption("(nessun dato)") st.caption("(nessun dato)")
return return
quantiles = [0.05, 0.10, 0.25, 0.50, 0.75, 0.90, 0.95] quantiles = [0.05, 0.10, 0.25, 0.50, 0.75, 0.90, 0.95]
cols = st.columns(len(quantiles)) # Inline markdown compatto: i valori a 4 cifre significative
for col, q in zip(cols, quantiles, strict=False): # cadono regolarmente fuori dalla colonna se renderizzati con
col.metric(f"P{int(q * 100)}", f"{s.quantile(q):.4g}") # ``st.metric`` (font fisso, label sopra, no shrink). Render
# orizzontale con font ridotto evita il troncamento.
parts = [
f"<b>P{int(q * 100)}</b> {s.quantile(q):.4g}"
for q in quantiles
]
html = (
"<div style='font-size:0.85rem;line-height:1.5;"
"white-space:nowrap;overflow-x:auto;'>"
+ " &nbsp;·&nbsp; ".join(parts)
+ "</div>"
)
st.markdown(html, unsafe_allow_html=True)
def _render_metric(spec: MetricSpec, records: list[MarketSnapshotRecord]) -> None: def _render_metric(spec: MetricSpec, records: list[MarketSnapshotRecord]) -> None: