diff --git a/Client/src/Components/BasicTable/index.jsx b/Client/src/Components/BasicTable/index.jsx index a1c3afef2..92bbca5ba 100644 --- a/Client/src/Components/BasicTable/index.jsx +++ b/Client/src/Components/BasicTable/index.jsx @@ -81,6 +81,10 @@ const BasicTable = ({ data, paginated }) => { ? data.rows.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage) : data.rows; + if (!data || !data.cols || !data.rows) { + return
No data
; + } + return ( <> diff --git a/Client/src/Pages/Details/index.jsx b/Client/src/Pages/Details/index.jsx index 201a32524..79ff56a63 100644 --- a/Client/src/Pages/Details/index.jsx +++ b/Client/src/Pages/Details/index.jsx @@ -4,6 +4,7 @@ import { Box, Typography, useTheme } from "@mui/material"; import { useSelector } from "react-redux"; import { useParams } from "react-router-dom"; import axiosInstance from "../../Utils/axiosConfig"; +import BasicTable from "../../Components/BasicTable"; /** * Details page component displaying monitor details and related information. @@ -11,6 +12,7 @@ import axiosInstance from "../../Utils/axiosConfig"; */ const DetailsPage = () => { const [monitor, setMonitor] = useState({}); + const [data, setData] = useState({}); const { monitorId } = useParams(); const { authToken } = useSelector((state) => state.auth); useEffect(() => { @@ -21,6 +23,25 @@ const DetailsPage = () => { }, }); setMonitor(res.data.data); + const data = { + cols: [ + { id: 1, name: "Status" }, + { id: 2, name: "Date & Time" }, + { id: 3, name: "Message" }, + ], + rows: res.data.data.checks.map((check, idx) => { + return { + id: check._id, + data: [ + { id: idx, data: check.status ? "Up" : "Down" }, + { id: idx + 1, data: new Date(check.createdAt).toLocaleString() }, + { id: idx + 2, data: check.statusCode }, + ], + }; + }), + }; + + setData(data); }; fetchMonitor(); }, [monitorId, authToken]); @@ -85,56 +106,7 @@ const DetailsPage = () => { }, 0); }; - return ( - - {/* Customized Tables Component */} - - - {/* Uptime duration */} - - Up for: {calculateUptimeDuration(monitor.checks)} - - - {/* Last checked */} - - Last checked: {getLastCheckedTimestamp(monitor.checks)} - - - {/* Incidents */} - - Incidents: {countIncidents(monitor.checks)} - - - ); + return ; }; export default DetailsPage;