diff --git a/Client/src/Components/BasicTable/index.jsx b/Client/src/Components/BasicTable/index.jsx index a1c3afef2..bd716d793 100644 --- a/Client/src/Components/BasicTable/index.jsx +++ b/Client/src/Components/BasicTable/index.jsx @@ -77,9 +77,17 @@ const BasicTable = ({ data, paginated }) => { setPage(0); // Reset to first page after changing rows per page }; - let displayData = paginated - ? data.rows.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage) - : data.rows; + let displayData = []; + + if (data && data.rows) { + displayData = 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 c8cd6be7a..c53054ccd 100644 --- a/Client/src/Pages/Details/index.jsx +++ b/Client/src/Pages/Details/index.jsx @@ -3,6 +3,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. @@ -10,6 +11,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(() => { @@ -20,6 +22,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,54 +106,9 @@ const DetailsPage = () => { }; return ( - - {/* Customized Tables Component */} - - - {/* Uptime duration */} - - Up for: {calculateUptimeDuration(monitor.checks)} - - - {/* Last checked */} - - Last checked: {getLastCheckedTimestamp(monitor.checks)} - - - {/* Incidents */} - - Incidents: {countIncidents(monitor.checks)} - - +
+ +
); };