implement sorting

This commit is contained in:
Alex Holliday
2024-09-18 10:39:47 +08:00
parent 7e1a5b6ec8
commit 2d2b101eb7
3 changed files with 23 additions and 3 deletions

View File

@@ -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);

View File

@@ -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()}`,

View File

@@ -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") {