import React, { useState } from "react";
import {
Box,
Typography,
Paper,
Button,
Divider,
Card,
CardContent,
Link,
CircularProgress,
Tooltip,
} from "@mui/material";
import PlayArrowIcon from "@mui/icons-material/PlayArrow";
import AssessmentIcon from "@mui/icons-material/Assessment";
import LinkIcon from "@mui/icons-material/Link";
import DownloadIcon from "@mui/icons-material/Download";
import CheckCircleIcon from "@mui/icons-material/CheckCircle";
import API_CONFIG from "../../config/api";
import { useThemeMode } from "../../hooks/useThemeMode";
import getTheme from "../../config/theme";
/**
* Component to display benchmark information and evaluation button
*
* @param {Object} props - Component props
* @param {Array} props.sampleQuestions - Array of sample questions to display
* @param {Function} props.onStartEvaluation - Function to call when evaluation button is clicked
* @param {string} props.sessionId - Session ID used for the benchmark generation
* @param {string} props.datasetUrl - URL to the Hugging Face dataset
* @returns {JSX.Element} Benchmark display component
*/
const Display = ({
sampleQuestions = [],
onStartEvaluation,
sessionId,
datasetUrl,
}) => {
const [isDownloading, setIsDownloading] = useState(false);
const { mode } = useThemeMode();
const theme = getTheme(mode);
const handleEvaluationClick = () => {
if (onStartEvaluation) {
onStartEvaluation();
}
};
const handleDownloadClick = async () => {
if (!sessionId) return;
setIsDownloading(true);
try {
// Requête pour télécharger le dataset
const downloadUrl = `${API_CONFIG.BASE_URL}/download-dataset/${sessionId}`;
// Créer un élément a temporaire pour déclencher le téléchargement
const link = document.createElement("a");
link.href = downloadUrl;
link.setAttribute("download", `yourbench_${sessionId}_dataset.zip`);
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
} catch (error) {
console.error("Erreur lors du téléchargement du dataset:", error);
alert("Erreur lors du téléchargement. Veuillez réessayer.");
} finally {
setIsDownloading(false);
}
};
return (
<>
Benchmark Created Successfully
) : (
)
}
onClick={handleDownloadClick}
disabled={isDownloading || !sessionId}
>
{isDownloading ? "Downloading..." : "Download Benchmark"}
}
onClick={handleEvaluationClick}
>
Start Evaluation
Your benchmark has been generated. Here are some example questions:
{sampleQuestions.map((q, index) => (
{q.type === "multi_hop"
? "Multi-hop Question"
: "Single-shot Question"}
Question: {q.question}
Answer: {q.answer || "No answer available"}
))}
>
);
};
export default Display;