diff --git a/apps/frontend/src/components/experimentSafety/ExperimentSafetyDetails.tsx b/apps/frontend/src/components/experimentSafety/ExperimentSafetyDetails.tsx index de455fa124..e39423ec4c 100644 --- a/apps/frontend/src/components/experimentSafety/ExperimentSafetyDetails.tsx +++ b/apps/frontend/src/components/experimentSafety/ExperimentSafetyDetails.tsx @@ -1,7 +1,10 @@ +import { Box, Button, DialogActions, DialogContent } from '@mui/material'; import List from '@mui/material/List'; import ListItem from '@mui/material/ListItem'; -import React from 'react'; +import React, { useState } from 'react'; +import { Link } from 'react-router-dom'; +import StyledDialog from 'components/common/StyledDialog'; import UOLoader from 'components/common/UOLoader'; import QuestionaryDetails, { TableRowData, @@ -9,16 +12,98 @@ import QuestionaryDetails, { import { useExperimentSafety } from 'hooks/experimentSafety/useExperimentSafety'; interface ExperimentSafetyDetailsProps { - esiId: number; + experimentSafetyPk: number; +} + +function ExperimentSampleLists({ + samples, +}: { + samples: { + sampleId: number; + sample: { title: string }; + sampleEsiQuestionaryId: number; + }[]; +}) { + const [selectedSampleId, setSelectedSampleId] = useState(null); + + return ( + <> + + {samples.map((sample) => ( + + setSelectedSampleId(sample.sampleId)} + style={{ cursor: 'pointer' }} + > + {sample.sample.title || `Sample ${sample.sampleId}`} + + + ))} + + {/* Sample Details Modal */} + setSelectedSampleId(null)} + title={ + selectedSampleId + ? (() => { + const selectedSample = samples?.find( + (sample) => sample.sampleId === selectedSampleId + ); + + return `Sample Safety Input - ${ + selectedSample?.sample.title || `Sample ${selectedSampleId}` + }`; + })() + : 'Sample Safety Input' + } + > + + {selectedSampleId + ? (() => { + const selectedSample = samples?.find( + (sample) => sample.sampleId === selectedSampleId + ); + + return selectedSample?.sampleEsiQuestionaryId ? ( + + ) : ( + No questionary found for this sample + ); + })() + : null} + + + + + + + ); } function ExperimentSafetyDetails(props: ExperimentSafetyDetailsProps) { - const { experimentSafety } = useExperimentSafety(props.esiId); + const { experimentSafety } = useExperimentSafety(props.experimentSafetyPk); if (!experimentSafety) { return ; } - const additionalDetails: TableRowData[] = [ { label: 'Proposal ID', @@ -27,18 +112,7 @@ function ExperimentSafetyDetails(props: ExperimentSafetyDetailsProps) { { label: 'Proposal Title', value: experimentSafety?.proposal.title || '' }, { label: 'Samples for the experiment', - value: ( - - {experimentSafety.samples.map((sample) => ( - {sample.sample.title} - ))} - - ), + value: , }, ]; diff --git a/apps/frontend/src/components/experimentSafety/ExperimentSafetyReview.tsx b/apps/frontend/src/components/experimentSafety/ExperimentSafetyReview.tsx index 035e858c9f..5cb6c23b72 100644 --- a/apps/frontend/src/components/experimentSafety/ExperimentSafetyReview.tsx +++ b/apps/frontend/src/components/experimentSafety/ExperimentSafetyReview.tsx @@ -15,7 +15,7 @@ import { FunctionType } from 'utils/utilTypes'; import withConfirm, { WithConfirmType } from 'utils/withConfirm'; import { ExperimentSafetyContextType } from './ExperimentSafetyContainer'; -import ProposalEsiDetails from './ExperimentSafetyDetails'; +import ExperimentSafetyDetails from './ExperimentSafetyDetails'; type ExperimentSafetyReviewProps = { onComplete?: FunctionType; @@ -62,7 +62,9 @@ function ExperimentSafetyReview({ confirm }: ExperimentSafetyReviewProps) { return ( <> - +