import React from 'react'; import { Grid, Card, CardContent, CardActions, Typography, Button, Chip, Box } from '@material-ui/core'; import VisibilityIcon from '@material-ui/icons/Visibility'; import CategoryIcon from '@material-ui/icons/Category'; import PlayArrowIcon from '@material-ui/icons/PlayArrow'; import { makeStyles } from '@material-ui/core/styles'; const useStyles = makeStyles((theme) => ({ card: { height: '100%', display: 'flex', flexDirection: 'column', }, selectedCard: { border: '2px solid #3f51b5', }, unavailableCard: { opacity: 0.6, }, cardContent: { flexGrow: 1, }, chipContainer: { marginBottom: theme.spacing(1.5), }, successChip: { backgroundColor: '#34C759', color: '#fff', }, errorChip: { backgroundColor: '#FF3B3F', color: '#fff', }, modelType: { marginTop: theme.spacing(1), }, processButton: { marginTop: theme.spacing(3), textAlign: 'center', } })); const ModelSelector = ({ onModelSelect, onProcess, isProcessing, modelsStatus, selectedModel, imageSelected }) => { const classes = useStyles(); const models = [ { id: 'yolo', name: 'YOLOv8', description: 'Fast and accurate object detection', icon: , available: modelsStatus.yolo }, { id: 'detr', name: 'DETR', description: 'DEtection TRansformer for object detection', icon: , available: modelsStatus.detr }, { id: 'vit', name: 'ViT', description: 'Vision Transformer for image classification', icon: , available: modelsStatus.vit } ]; const handleModelClick = (modelId) => { if (models.find(m => m.id === modelId).available) { onModelSelect(modelId); } }; return ( Select Model {models.map((model) => ( handleModelClick(model.id)} > {model.icon} {model.name}
{model.available ? ( ) : ( )}
{model.description}
))}
); }; export default ModelSelector;