import { useEffect, useState } from "react"; import { baseUrl } from "./api"; interface Prop { name: string; min: string; max: string; step: string; value: string; } interface Params { nodeSize: number; edgeWidth: number; arrowSize: number; fontSize: number; distance: number; } export default function Analysis() { const [image, setImage] = useState(""); const [params, setParams] = useState({ nodeSize: 2000, edgeWidth: 1, arrowSize: 20, fontSize: 10, distance: 2, }); 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}api/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 (
setParams({ ...params, distance: Number(evt.target.value) })} onMouseUp={() => loadImage()} /> {params.distance}
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 ? ( ) : ( ) }
); }