diff --git a/Client/src/Pages/Monitors/Home/MonitorTable/index.jsx b/Client/src/Pages/Monitors/Home/MonitorTable/index.jsx index 5c43ad880..f09b98215 100644 --- a/Client/src/Pages/Monitors/Home/MonitorTable/index.jsx +++ b/Client/src/Pages/Monitors/Home/MonitorTable/index.jsx @@ -151,7 +151,10 @@ const MonitorTable = ({ isAdmin }) => { "desc", true, page, - rowsPerPage + rowsPerPage, + null, + "createdAt", + "desc" ); setMonitors(res?.data?.data?.monitors ?? []); setMonitorCount(res?.data?.data?.monitorCount ?? 0); diff --git a/Client/src/Utils/NetworkService.js b/Client/src/Utils/NetworkService.js index 2e257d366..02f009a36 100644 --- a/Client/src/Utils/NetworkService.js +++ b/Client/src/Utils/NetworkService.js @@ -101,7 +101,10 @@ class NetworkService { checkOrder, normalize, page, - rowsPerPage + rowsPerPage, + filter, + field, + order ) { const params = new URLSearchParams(); @@ -116,6 +119,9 @@ class NetworkService { if (normalize) params.append("normalize", normalize); if (page) params.append("page", page); if (rowsPerPage) params.append("rowsPerPage", rowsPerPage); + if (filter) params.append("filter", filter); + if (field) params.append("field", field); + if (order) params.append("order", order); return this.axiosInstance.get( `/monitors/team/${teamId}?${params.toString()}`, diff --git a/Server/db/mongo/modules/monitorModule.js b/Server/db/mongo/modules/monitorModule.js index ccfe61f3e..85fe8ab03 100644 --- a/Server/db/mongo/modules/monitorModule.js +++ b/Server/db/mongo/modules/monitorModule.js @@ -356,9 +356,13 @@ const getMonitorsByTeamId = async (req, res) => { page, rowsPerPage, filter, + field, + order, } = req.query || {}; + const monitorQuery = { teamId: req.params.teamId, type }; // Add filter if provided + // $options: "i" makes the search case-insensitive if (filter !== undefined) { monitorQuery.$or = [ { name: { $regex: filter, $options: "i" } }, @@ -385,9 +389,16 @@ const getMonitorsByTeamId = async (req, res) => { checkOrder = -1; } else checkOrder = -1; + // Sort order for monitors + let sort = {}; + if (field !== undefined && order !== undefined) { + sort[field] = order === "asc" ? 1 : -1; + } + const monitors = await Monitor.find(monitorQuery) .skip(skip) - .limit(rowsPerPage); + .limit(rowsPerPage) + .sort(sort); // Early return if limit is set to -1, indicating we don't want any checks if (limit === "-1") {