import { BenchmarkResult, Dataset } from "../../types"; import { ReconstructedDataInfo } from "../../types/comparison"; interface LossyAlgorithmSelectorProps { dataset: Dataset; benchmarkResults: BenchmarkResult[]; selectedAlgorithm: string | null; onSelectAlgorithm: (info: ReconstructedDataInfo | null) => void; } export const LossyAlgorithmSelector = ({ dataset, benchmarkResults, selectedAlgorithm, onSelectAlgorithm, }: LossyAlgorithmSelectorProps) => { // Filter for lossy algorithms with results for this dataset const lossyResults = benchmarkResults.filter( (result) => result.dataset === dataset.name && result.reconstructed_url_raw != null && result.rmse != null ); if (lossyResults.length === 0) { return null; } const handleChange = (event: React.ChangeEvent) => { const value = event.target.value; if (value === "") { onSelectAlgorithm(null); return; } const result = lossyResults.find((r) => r.algorithm === value); if (result && result.reconstructed_url_raw) { onSelectAlgorithm({ algorithm: result.algorithm, rmse: result.rmse || 0, max_error: result.max_error || 0, reconstructedUrl: result.reconstructed_url_raw, datasetUrl: dataset.data_url_raw || "", datasetJsonUrl: dataset.data_url_json || "", }); } }; return (
); };