diff --git a/Client/src/Components/Charts/MonitorDetailsAreaChart/index.jsx b/Client/src/Components/Charts/MonitorDetailsAreaChart/index.jsx index 985b5b846..39aa8dcbf 100644 --- a/Client/src/Components/Charts/MonitorDetailsAreaChart/index.jsx +++ b/Client/src/Components/Charts/MonitorDetailsAreaChart/index.jsx @@ -47,7 +47,7 @@ const MonitorDetailsAreaChart = ({ checks, filter }) => { }); }; - const filterChecks = (checks, filter) => { + const filterChecks = (checks, filter, numToDisplay) => { const limits = { day: 24 * 60 * 60 * 1000, week: 24 * 60 * 60 * 1000 * 7, @@ -55,20 +55,29 @@ const MonitorDetailsAreaChart = ({ checks, filter }) => { }; const now = new Date().getTime(); - const result = []; + let result = []; for (let i = 0; i < checks.length; i++) { const checkTime = new Date(checks[i].createdAt).getTime(); if (now - checkTime < limits[filter]) { result.push(checks[i]); } } + + // If more than numToDisplay checks, pick every nth check + if (result.length > numToDisplay) { + const n = Math.ceil(result.length / numToDisplay); + result = result.filter((_, idx) => { + return idx % n === 0; + }); + } + return result; }; let normalizedChecks = []; if (checks && checks.length > 0) { - const filteredChecks = filterChecks(checks, filter); - normalizedChecks = NormalizeData(filteredChecks, 33, 100); + const filteredChecks = filterChecks(checks, filter, 75); + normalizedChecks = NormalizeData(filteredChecks, 10, 100); } return ( diff --git a/Client/src/Pages/Monitors/index.jsx b/Client/src/Pages/Monitors/index.jsx index 3c1d7bc64..71a5eccd6 100644 --- a/Client/src/Pages/Monitors/index.jsx +++ b/Client/src/Pages/Monitors/index.jsx @@ -294,10 +294,10 @@ const Monitors = () => { }} > - Really delete this monitor? + Do you really want to delete this monitor? - Once deleted, this monitor cannot be retrieved back. + Once deleted, this monitor cannot be retrieved. 0) { + // Only send email if monitor status has changed + if (monitor.status !== this.status) { + const emailService = new EmailService(); + + if (monitor.status === true && this.status === false) { + // Notify users that the monitor is down + for (const notification of notifications) { + if (notification.type === "email") { + await emailService.buildAndSendEmail( + "serverIsDownTemplate", + { monitorName: monitor.name, monitorUrl: monitor.url }, + notification.address, + `Monitor ${monitor.name} is down` + ); + } + } + } + + if (monitor.status === false && this.status === true) { + // Notify users that the monitor is up + for (const notification of notifications) { + if (notification.type === "email") { + await emailService.buildAndSendEmail( + "serverIsUpTemplate", + { monitorName: monitor.name, monitorUrl: monitor.url }, + notification.address, + `Monitor ${monitor.name} is back up` + ); + } + } + } + + // Update monitor status + monitor.status = this.status; + await monitor.save(); + } } - monitor.status = this.status; - await monitor.save(); } } catch (error) { console.log(error); @@ -60,4 +128,5 @@ CheckSchema.pre("save", async function (next) { } }); + module.exports = mongoose.model("Check", CheckSchema); diff --git a/Server/routes/checkRoute.js b/Server/routes/checkRoute.js index 6569dd49a..0216343c8 100644 --- a/Server/routes/checkRoute.js +++ b/Server/routes/checkRoute.js @@ -21,4 +21,4 @@ router.post( checkController.deleteChecks ); -module.exports = router; +module.exports = router; \ No newline at end of file diff --git a/Server/routes/pageSpeedCheckRoute.js b/Server/routes/pageSpeedCheckRoute.js index 34ec0e544..4b1de49bc 100644 --- a/Server/routes/pageSpeedCheckRoute.js +++ b/Server/routes/pageSpeedCheckRoute.js @@ -1,7 +1,7 @@ const router = require("express").Router(); const { verifyOwnership } = require("../middleware/verifyOwnership"); const Monitor = require("../models/Monitor"); -const checkController = require("../controllers/pageSpeedCheckController"); +const pageSpeedCheckController = require("../controllers/pageSpeedCheckController"); /** * @route POST /:monitorId @@ -13,7 +13,7 @@ const checkController = require("../controllers/pageSpeedCheckController"); router.post( "/:monitorId", verifyOwnership(Monitor, "monitorId"), - checkController.createPageSpeedCheck + pageSpeedCheckController.createPageSpeedCheck ); /** @@ -26,7 +26,7 @@ router.post( router.get( "/:monitorId", verifyOwnership(Monitor, "monitorId"), - checkController.getPageSpeedChecks + pageSpeedCheckController.getPageSpeedChecks ); /** @@ -39,8 +39,7 @@ router.get( router.delete( "/:monitorId", verifyOwnership(Monitor, "monitorId"), - checkController.deletePageSpeedCheck + pageSpeedCheckController.deletePageSpeedCheck ); module.exports = router; -