Skip to content

Commit e0ea0a4

Browse files
disease details made into separate component
1 parent 13537ff commit e0ea0a4

3 files changed

Lines changed: 49 additions & 28 deletions

File tree

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import { Box, Card, CardContent, Typography } from "@mui/material"
2+
import { DiseaseDetailsProps } from "./DiseaseDetails.types"
3+
4+
const DiseaseDetails: React.FC<DiseaseDetailsProps> = ({ disease }) => {
5+
return (
6+
<Box display={'flex'} flexDirection={'column'} gap={2}>
7+
<Typography variant="body1">
8+
Disease description: {disease?.description}
9+
</Typography>
10+
<Typography variant="body1">
11+
EPPO code: {disease?.eppo_code}
12+
</Typography>
13+
<Typography variant="body1">
14+
Base GDD: {disease?.base_gdd}
15+
</Typography>
16+
<Typography variant="h6">GDD points</Typography>
17+
{disease?.gdd_points.map(gddp => {
18+
return <Card key={"GDDP-ID-" + gddp.id}>
19+
<CardContent>
20+
<div>From: {gddp.start}</div>
21+
<div>To: {gddp.end}</div>
22+
<div>Descriptor: {gddp.descriptor}</div>
23+
</CardContent>
24+
</Card>
25+
})}
26+
</Box>
27+
)
28+
}
29+
30+
export default DiseaseDetails
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { DiseaseModel } from "@models/Disease";
2+
3+
export interface DiseaseDetailsProps {
4+
disease?: DiseaseModel;
5+
}

src/pages/dashboard/services/PestAndDisease/Diseases.tsx

Lines changed: 14 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
import GenericDialog from "@components/shared/GenericDialog/GenericDialog";
22
import GenericSortableTable from "@components/shared/GenericSortableTable/GenericSortableTable";
33
import { HeadCell } from "@components/shared/GenericSortableTable/GenericSortableTable.types";
4+
import DiseaseDetails from "@components/services/DiseaseDetails/DiseaseDetails";
45
import useDialog from "@hooks/useDialog";
56
import useFetch from "@hooks/useFetch";
6-
import { DiseasesResponseModel } from "@models/Disease";
7-
import { Box, Card, CardContent, Skeleton, Typography } from "@mui/material";
7+
import { DiseaseModel, DiseasesResponseModel } from "@models/Disease";
8+
import { Box, Skeleton } from "@mui/material";
89
import { useEffect, useState } from "react";
910

1011
const DiseasesPage = () => {
1112
const [diseases, setDiseases] = useState<DiseaseRow[]>([]);
12-
const [selectedDisease, setSelectedDisease] = useState<DiseaseRow | null>(null);
13+
const [selectedDisease, setSelectedDisease] = useState<DiseaseModel | undefined>(undefined);
1314

1415
const { fetchData: getFetchData, response: getResponse, error: getError, loading: getLoading } = useFetch<DiseasesResponseModel>(
1516
`proxy/pdm/api/v1/disease/`,
@@ -61,7 +62,14 @@ const DiseasesPage = () => {
6162
];
6263

6364
const handleRowClick = (disease: DiseaseRow) => {
64-
setSelectedDisease(disease);
65+
setSelectedDisease({
66+
id: disease.id,
67+
name: disease.name,
68+
base_gdd: disease.baseGDD,
69+
eppo_code: disease.eppoCode,
70+
description: disease.description,
71+
gdd_points: disease.gddPoints
72+
});
6573
showDialog({
6674
title: `Details for ${disease.name}`,
6775
variant: 'empty',
@@ -71,7 +79,7 @@ const DiseasesPage = () => {
7179

7280
const handleCloseDialog = () => {
7381
dialogProps.onClose();
74-
setSelectedDisease(null);
82+
setSelectedDisease(undefined);
7583
};
7684

7785
return (
@@ -84,29 +92,7 @@ const DiseasesPage = () => {
8492
}
8593
</Box>
8694
<GenericDialog {...dialogProps} onClose={handleCloseDialog}>
87-
<>
88-
<Box display={'flex'} flexDirection={'column'} gap={2}>
89-
<Typography variant="body1">
90-
Disease description: {selectedDisease?.description}
91-
</Typography>
92-
<Typography variant="body1">
93-
EPPO code: {selectedDisease?.eppoCode}
94-
</Typography>
95-
<Typography variant="body1">
96-
Base GDD: {selectedDisease?.baseGDD}
97-
</Typography>
98-
<Typography variant="h6">GDD points</Typography>
99-
{selectedDisease?.gddPoints.map(gddp => {
100-
return <Card key={"GDDP-ID-" + gddp.id}>
101-
<CardContent>
102-
<div>From: {gddp.start}</div>
103-
<div>To: {gddp.end}</div>
104-
<div>Descriptor: {gddp.descriptor}</div>
105-
</CardContent>
106-
</Card>
107-
})}
108-
</Box>
109-
</>
95+
<DiseaseDetails disease={selectedDisease}></DiseaseDetails>
11096
</GenericDialog>
11197
</>
11298
)

0 commit comments

Comments
 (0)