// src/ModelOverview.jsx import React, { useEffect, useState } from "react"; import LmStats from "./LmStats"; export default function ModelOverview({ onBackToChat }) { const [defaultModel, setDefaultModel] = useState(""); const [modelInfo, setModelInfo] = useState([]); const [searchTerm, setSearchTerm] = useState(""); const [loading, setLoading] = useState(false); const [showStats, setShowStats] = useState(false); // πŸ‘ˆ nuovo stato toggle const fetchModelData = async () => { setLoading(true); try { const [defaultRes, infoRes] = await Promise.all([ fetch("/v1/default-model"), fetch("/v1/models-info") ]); const defaultText = await defaultRes.text(); const infoJson = await infoRes.json(); setDefaultModel(defaultText); setModelInfo(Array.isArray(infoJson) ? infoJson : []); } catch (err) { console.error("Errore nel caricamento modelli", err); } finally { setLoading(false); } }; const updateModelData = async () => { setLoading(true); try { const res = await fetch("/v1/models-info/update", { method: "POST" }); if (res.ok) { const updated = await res.json(); setModelInfo(Array.isArray(updated) ? updated : []); } } catch (err) { console.error("Errore nell'aggiornamento modelli", err); } finally { setLoading(false); } }; useEffect(() => { fetchModelData(); }, []); const filteredModels = modelInfo.filter((model) => model.name.toLowerCase().includes(searchTerm.toLowerCase()) ); return (

πŸ“Œ Modello di default

{defaultModel || "Non disponibile"}

{showStats ? ( ) : ( <>
setSearchTerm(e.target.value)} />
{loading && ( )} {!loading && filteredModels.length === 0 && ( )} {!loading && filteredModels.map((model) => ( ))}
Nome Descrizione Caratteristiche
Caricamento…
Nessun modello trovato
{model.name} {model.description || "β€”"}
    {Array.isArray(model.features) && model.features.length > 0 ? model.features.map((f, i) =>
  • {f}
  • ) :
  • β€”
  • }
)}
); }