[d6876d]: / src / pages / Experiments / Experiments.tsx

Download this file

120 lines (114 with data), 3.5 kB

import React, { useState } from 'react';
import {
  Box,
  Typography,
  Paper,
  Table,
  TableBody,
  TableCell,
  TableContainer,
  TableHead,
  TableRow,
  Button,
  Chip,
} from '@mui/material';
import { Add as AddIcon } from '@mui/icons-material';
import { ExperimentConfig } from '../../types';

const mockExperiments: ExperimentConfig[] = [
  {
    id: '1',
    name: 'Drought Resistance Study',
    environmentalParams: {
      temperature: 30,
      humidity: 45,
      soilConditions: 'Sandy loam',
    },
    duration: 30,
    samplingFrequency: 24,
    baselineGenotypes: ['WT-Col-0', 'drought-1'],
    targetTraits: ['water-use-efficiency', 'root-depth'],
  },
  {
    id: '2',
    name: 'Salt Tolerance Analysis',
    environmentalParams: {
      temperature: 28,
      humidity: 60,
      soilConditions: 'Saline',
    },
    duration: 45,
    samplingFrequency: 12,
    baselineGenotypes: ['WT-Col-0', 'salt-1'],
    targetTraits: ['ion-homeostasis', 'growth-rate'],
  },
];

const Experiments: React.FC = () => {
  const [experiments] = useState<ExperimentConfig[]>(mockExperiments);

  return (
    <Box>
      <Box sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', mb: 3 }}>
        <Typography variant="h4">Experiments</Typography>
        <Button
          variant="contained"
          color="primary"
          startIcon={<AddIcon />}
          onClick={() => {/* TODO: Implement new experiment dialog */}}
        >
          New Experiment
        </Button>
      </Box>

      <TableContainer component={Paper}>
        <Table>
          <TableHead>
            <TableRow>
              <TableCell>Name</TableCell>
              <TableCell>Environmental Parameters</TableCell>
              <TableCell>Duration (days)</TableCell>
              <TableCell>Target Traits</TableCell>
              <TableCell>Actions</TableCell>
            </TableRow>
          </TableHead>
          <TableBody>
            {experiments.map((experiment) => (
              <TableRow key={experiment.id}>
                <TableCell>{experiment.name}</TableCell>
                <TableCell>
                  <Typography variant="body2">
                    Temp: {experiment.environmentalParams.temperature}°C
                  </Typography>
                  <Typography variant="body2">
                    Humidity: {experiment.environmentalParams.humidity}%
                  </Typography>
                  <Typography variant="body2">
                    Soil: {experiment.environmentalParams.soilConditions}
                  </Typography>
                </TableCell>
                <TableCell>{experiment.duration}</TableCell>
                <TableCell>
                  {experiment.targetTraits.map((trait) => (
                    <Chip
                      key={trait}
                      label={trait}
                      size="small"
                      sx={{ mr: 0.5, mb: 0.5 }}
                    />
                  ))}
                </TableCell>
                <TableCell>
                  <Button
                    variant="outlined"
                    size="small"
                    onClick={() => {/* TODO: Implement view details */}}
                  >
                    View Details
                  </Button>
                </TableCell>
              </TableRow>
            ))}
          </TableBody>
        </Table>
      </TableContainer>
    </Box>
  );
};

export default Experiments;