import React, { useState } from "react"; import { Tag, Card, Space, Button, Statistic } from "antd"; import SolverForm from "./SolverForm"; import axios from "axios"; type Assignment = { solver: string; events: string[]; }; const backend = axios.create({ baseURL: "http://backend:1308" }); const RelayForm: React.FC = () => { const [forms, setForms] = useState<{ [key: string]: React.ReactNode }>({}); const [formData, setFormData] = useState<{ [key: string]: { [key: string]: number }; }>({}); const [relayTime, setRelayTime] = useState(0); const [assignments, setAssignments] = useState([]); const addForm = () => { const solverName = `Solver ${Object.keys(forms).length + 0}`; setForms((prevForms) => ({ ...prevForms, [solverName]: ( ), })); }; const removeForm = (solverName: string) => { const { [solverName]: removedForm, ...restForms } = forms; const { [solverName]: removedData, ...restData } = formData; setForms(restForms); setFormData(restData); }; const handleFormChange = (solver: string, data: any) => { setFormData((prevData) => ({ ...prevData, [solver]: data, })); }; const onFinishAllForms = () => { console.log("All form data:", formData); const data = { solvers: formData, events: [ "2x2", "3x3", "4x4", "5x5", "mega", "sq1", "yad", "clock", "pyra", "skewb", ], }; backend .post("/relay", data) .then((response) => { setRelayTime(response.data.response.time); setAssignments( Object.entries(response.data.response.assignment).map( ([solver, events]) => ({ solver, events: events as string[], }), ), ); }) .catch((error) => { console.error(error); }); }; return ( {Object.keys(forms).map((solverName) => ( {forms[solverName]} ))} {assignments.map((assignment, index) => (
{assignment.events.map((event, idx) => ( {event} ))}
))}
); }; export default RelayForm;