import { useState } from "react"; import { Box, Table, Button, TableHead, Typography, TableCell, TableRow, TableBody, } from "@mui/material"; import axios from "axios"; import { Link } from "react-router-dom"; import { PatientFormValues, Patient } from "../../types"; import AddPatientModal from "../AddPatientModal"; import HealthRatingBar from "../HealthRatingBar"; import patientService from "../../services/patients"; interface Props { patients: Patient[]; setPatients: React.Dispatch>; } const PatientListPage = ({ patients, setPatients }: Props) => { const [modalOpen, setModalOpen] = useState(false); const [error, setError] = useState(); const openModal = (): void => setModalOpen(true); const closeModal = (): void => { setModalOpen(false); setError(undefined); }; const submitNewPatient = async (values: PatientFormValues) => { try { const patient = await patientService.create(values); setPatients(patients.concat(patient)); setModalOpen(false); } catch (e: unknown) { if (axios.isAxiosError(e)) { if (e?.response?.data && typeof e?.response?.data === "string") { const message = e.response.data.replace( "Something went wrong. Error: ", "" ); console.error(message); setError(message); } else { setError("Unrecognized axios error"); } } else { console.error("Unknown error", e); setError("Unknown error"); } } }; return (
Patient list Name Gender Occupation Health Rating {Object.values(patients).map((patient: Patient) => ( {patient.name} {patient.gender} {patient.occupation} ))}
); }; export default PatientListPage;