import React, { useState } from "react"; import tw from "tailwind-styled-components"; import { TaskData } from "../../lib/types"; import RunButton from "./RunButton"; import MockCheckbox from "./MockCheckbox"; interface SelectedTaskProps { selectedTask: TaskData | null; isMock: boolean; setIsMock: React.Dispatch>; cutoff: number | null; setResponseData: React.Dispatch>; allResponseData: any[]; setAllResponseData: React.Dispatch>; } const SelectedTask: React.FC = ({ selectedTask, isMock, setIsMock, cutoff, setResponseData, setAllResponseData, allResponseData, }) => { const [isLoading, setIsLoading] = useState(false); const runTest = async () => { // If there's no selected task, do nothing if (!selectedTask?.name) return; const testParam = selectedTask.name; setIsLoading(true); try { let url = `http://localhost:8000/run_single_test?test=${testParam}&mock=${isMock}`; cutoff && !isMock && (url += `&cutoff=${cutoff}`); const response = await fetch(url); const data = await response.json(); if (data["returncode"] > 0) { throw new Error(data["stderr"]); } else { const jsonObject = JSON.parse(data["stdout"]); setAllResponseData([...allResponseData, jsonObject]); setResponseData(jsonObject); } } catch (error) { console.error("There was an error fetching the data", error); } setIsLoading(false); }; return ( <> {selectedTask?.name} {selectedTask?.task} Cutoff: {selectedTask?.cutoff} Description: {selectedTask?.info?.description} Difficulty: {selectedTask?.info?.difficulty} Category: {selectedTask?.category.join(", ")} ); }; export default SelectedTask; const TaskName = tw.h1` font-bold text-2xl break-words `; const TaskPrompt = tw.p` text-gray-900 break-words `; const Detail = tw.p` mt-2 `; const MockCheckboxInput = tw.input` border rounded focus:border-blue-400 focus:ring focus:ring-blue-200 focus:ring-opacity-50 `; const CheckboxWrapper = tw.label` flex items-center space-x-2 mt-2 `;