import { useEffect, useState } from "react"; import { baseUrl } from "./api"; interface Params { nodeSize: number; edgeWidth: number; arrowSize: number; fontSize: number; } export default function Analysis() { const [image, setImage] = useState(""); const [params, setParams] = useState({ nodeSize: 1600, edgeWidth: 1, arrowSize: 20, fontSize: 10, }); const [showControlPanel, setShowControlPanel] = useState(false); const [loading, setLoading] = useState(false); // Function to generate and fetch the graph image async function loadImage() { setLoading(true); await fetch(`${baseUrl}analysis/image`, { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify(params) }) .then((resp) => resp.json()) .then((data) => { setImage(data.image); setLoading(false); }); } useEffect(() => { loadImage(); }, []); return (
{showControlPanel && (
setParams({ ...params, nodeSize: Number(evt.target.value) })} onMouseUp={() => loadImage()} /> {params.nodeSize} setParams({ ...params, fontSize: Number(evt.target.value) })} onMouseUp={() => loadImage()} /> {params.fontSize} setParams({ ...params, edgeWidth: Number(evt.target.value) })} onMouseUp={() => loadImage()} /> {params.edgeWidth} setParams({ ...params, arrowSize: Number(evt.target.value) })} onMouseUp={() => loadImage()} /> {params.arrowSize}
)} {loading ? ( ) : ( )}
); }