From 4be58cef177046118adcf4bd7de71701cfc318c0 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Fri, 2 Aug 2024 10:14:32 -0700 Subject: [PATCH 01/35] Add instant check at create monitor time --- Server/service/jobQueue.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Server/service/jobQueue.js b/Server/service/jobQueue.js index 92b7b6aab..3fdb91710 100644 --- a/Server/service/jobQueue.js +++ b/Server/service/jobQueue.js @@ -210,6 +210,9 @@ class JobQueue { */ async addJob(jobName, payload) { try { + // Execute job immediately + await this.queue.add(jobName, payload); + await this.queue.add(jobName, payload, { repeat: { every: payload.interval, From 6dde4646d8206eb612932b9e6337409c5be58ede Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Fri, 2 Aug 2024 10:53:24 -0700 Subject: [PATCH 02/35] Add prevent default to action toggle --- Client/src/Components/BasicTable/index.jsx | 4 +++- Client/src/Pages/Monitors/index.jsx | 13 ++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Client/src/Components/BasicTable/index.jsx b/Client/src/Components/BasicTable/index.jsx index 2a580d512..3f89de700 100644 --- a/Client/src/Components/BasicTable/index.jsx +++ b/Client/src/Components/BasicTable/index.jsx @@ -135,7 +135,9 @@ const BasicTable = ({ data, paginated, reversed, rowsPerPage = 5 }) => { {displayData.map((row) => { return ( diff --git a/Client/src/Pages/Monitors/index.jsx b/Client/src/Pages/Monitors/index.jsx index 9c9f99d15..d7e3d542d 100644 --- a/Client/src/Pages/Monitors/index.jsx +++ b/Client/src/Pages/Monitors/index.jsx @@ -60,6 +60,7 @@ const Monitors = () => { const [anchorEl, setAnchorEl] = useState(null); const [actions, setActions] = useState({}); const openMenu = (event, id, url) => { + event.preventDefault(); setAnchorEl(event.currentTarget); setActions({ id: id, url: url }); }; @@ -137,7 +138,7 @@ const Monitors = () => { return { id: monitor._id, // disabled for now - // handleClick: () => navigate(`/monitors/${monitor._id}`), + handleClick: () => navigate(`/monitors/${monitor._id}`), data: [ { id: idx, data: }, { @@ -163,7 +164,10 @@ const Monitors = () => { <> openMenu(event, monitor._id, monitor.url)} + onClick={(event) => { + event.stopPropagation(); + openMenu(event, monitor._id, monitor.url); + }} sx={{ "&:focus": { outline: "none", @@ -227,7 +231,10 @@ const Monitors = () => { onClose={closeMenu} > window.open(actions.url, "_blank", "noreferrer")} + onClick={(event) => { + event.stopPropagation(); + window.open(actions.url, "_blank", "noreferrer"); + }} > Open site From 9051c475e15e2046794ce7b01839996272c58807 Mon Sep 17 00:00:00 2001 From: Daniel Cojocea Date: Fri, 2 Aug 2024 13:54:44 -0400 Subject: [PATCH 03/35] Fixed alignment issues --- Client/src/Components/BasicTable/index.css | 9 ++++----- Client/src/Components/NavBar/index.jsx | 6 +++++- Client/src/Pages/Monitors/index.css | 2 +- Client/src/Pages/Monitors/index.jsx | 8 ++++++-- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/Client/src/Components/BasicTable/index.css b/Client/src/Components/BasicTable/index.css index 9d8b31217..fd1f75b53 100644 --- a/Client/src/Components/BasicTable/index.css +++ b/Client/src/Components/BasicTable/index.css @@ -3,23 +3,22 @@ height: var(--env-var-img-width-2); color: var(--env-var-color-5); margin-right: 10px; - margin-bottom: 2px; } .MuiTable-root .host a svg { width: var(--env-var-font-size-large); height: var(--env-var-font-size-large); } -.MuiTable-root .host div:nth-child(3) { - font-size: var(--env-var-font-size-small); -} .MuiTable-root .host div:nth-child(2) { width: fit-content; - margin-right: 10px; font-weight: 700; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; } +.MuiTable-root .host div:nth-child(2) span { + font-size: var(--env-var-font-size-small); + margin-left: 10px; +} .MuiTable-root .label { line-height: 1; diff --git a/Client/src/Components/NavBar/index.jsx b/Client/src/Components/NavBar/index.jsx index bdf1231f7..08eb91580 100644 --- a/Client/src/Components/NavBar/index.jsx +++ b/Client/src/Components/NavBar/index.jsx @@ -145,7 +145,10 @@ function NavBar() { {setting} diff --git a/Client/src/Pages/Monitors/index.css b/Client/src/Pages/Monitors/index.css index bce3bee72..a9317d5da 100644 --- a/Client/src/Pages/Monitors/index.css +++ b/Client/src/Pages/Monitors/index.css @@ -51,7 +51,7 @@ body:has(.monitors) .actions-menu li.MuiButtonBase-root { body:has(.monitors) .actions-menu li.MuiButtonBase-root:last-of-type { color: var(--env-var-color-26); } -body:has(.monitors) .MuiModal-root p.MuiTypography-root { +body:has(.monitors) .actions-menu .MuiModal-root p.MuiTypography-root { font-size: var(--env-var-font-size-medium); color: var(--env-var-color-2); } diff --git a/Client/src/Pages/Monitors/index.jsx b/Client/src/Pages/Monitors/index.jsx index 9c9f99d15..9eb1c0ced 100644 --- a/Client/src/Pages/Monitors/index.jsx +++ b/Client/src/Pages/Monitors/index.jsx @@ -44,8 +44,12 @@ const Host = ({ params }) => { - {params.title} - {params.precentage}% + + {params.title} + + {params.precentage}% + + ); }; From 004e43092b5de425e5fa38859d7e65bb2986bb0b Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Fri, 2 Aug 2024 10:57:12 -0700 Subject: [PATCH 04/35] Stop event bubbling on link to monitor site --- Client/src/Pages/Monitors/index.jsx | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Client/src/Pages/Monitors/index.jsx b/Client/src/Pages/Monitors/index.jsx index d7e3d542d..451c76f30 100644 --- a/Client/src/Pages/Monitors/index.jsx +++ b/Client/src/Pages/Monitors/index.jsx @@ -41,7 +41,14 @@ import { const Host = ({ params }) => { return ( - + { + event.stopPropagation(); + }} + > {params.title} @@ -231,8 +238,7 @@ const Monitors = () => { onClose={closeMenu} > { - event.stopPropagation(); + onClick={() => { window.open(actions.url, "_blank", "noreferrer"); }} > From 8d5850607071f9718a8099f0526f1e48360514cd Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Fri, 2 Aug 2024 11:16:02 -0700 Subject: [PATCH 05/35] Add inline style to ResponseTime chart --- Client/src/Components/Charts/ResponseTimeChart/index.jsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Client/src/Components/Charts/ResponseTimeChart/index.jsx b/Client/src/Components/Charts/ResponseTimeChart/index.jsx index d76abc196..063ce3b16 100644 --- a/Client/src/Components/Charts/ResponseTimeChart/index.jsx +++ b/Client/src/Components/Charts/ResponseTimeChart/index.jsx @@ -8,7 +8,12 @@ const ResponseTimeChart = ({ checks = [] }) => { return (
- + {normalizedChecks.map((check, index) => ( Date: Fri, 2 Aug 2024 11:24:15 -0700 Subject: [PATCH 06/35] Added empty query to request object --- Server/controllers/authController.js | 1 + 1 file changed, 1 insertion(+) diff --git a/Server/controllers/authController.js b/Server/controllers/authController.js index 6f34f71ce..ffb38559e 100644 --- a/Server/controllers/authController.js +++ b/Server/controllers/authController.js @@ -440,6 +440,7 @@ const deleteUserController = async (req, res, next) => { const { _id, email } = decodedToken; const decodedTokenCastedAsRequest = { + query: {}, params: { userId: _id, }, From a04ecad11f91c73d15a21260cc8dd2fd0338226f Mon Sep 17 00:00:00 2001 From: Alexander Holliday Date: Fri, 2 Aug 2024 11:25:35 -0700 Subject: [PATCH 07/35] Update authController.js --- Server/controllers/authController.js | 1 + 1 file changed, 1 insertion(+) diff --git a/Server/controllers/authController.js b/Server/controllers/authController.js index ffb38559e..296b3fd63 100644 --- a/Server/controllers/authController.js +++ b/Server/controllers/authController.js @@ -439,6 +439,7 @@ const deleteUserController = async (req, res, next) => { const decodedToken = jwt.decode(token); const { _id, email } = decodedToken; + // TODO fix this hack const decodedTokenCastedAsRequest = { query: {}, params: { From 6c92dbe3581f0c35ef9a926365681cd98c06572a Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Fri, 2 Aug 2024 11:38:38 -0700 Subject: [PATCH 08/35] Delete pagespeed checks when user deleted --- Server/controllers/authController.js | 1 + Server/controllers/monitorController.js | 1 + Server/db/mongo/MongoDB.js | 4 ++-- Server/db/mongo/modules/pageSpeedCheckModule.js | 4 ++-- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Server/controllers/authController.js b/Server/controllers/authController.js index ffb38559e..041395161 100644 --- a/Server/controllers/authController.js +++ b/Server/controllers/authController.js @@ -481,6 +481,7 @@ const deleteUserController = async (req, res, next) => { await req.jobQueue.deleteJob(monitor); await req.db.deleteChecks(monitor._id); await req.db.deleteAlertByMonitorId(monitor._id); + await req.db.deletePageSpeedChecksByMonitorId(monitor._id); await req.db.deleteNotificationsByMonitorId(monitor._id); }) ); diff --git a/Server/controllers/monitorController.js b/Server/controllers/monitorController.js index e05ed0389..d45b300f8 100644 --- a/Server/controllers/monitorController.js +++ b/Server/controllers/monitorController.js @@ -182,6 +182,7 @@ const deleteMonitor = async (req, res, next) => { await req.jobQueue.deleteJob(monitor); await req.db.deleteChecks(monitor._id); await req.db.deleteAlertByMonitorId(monitor._id); + await req.db.deletePageSpeedChecksByMonitorId(monitor._id); await req.db.deleteNotificationsByMonitorId(monitor._id); /** diff --git a/Server/db/mongo/MongoDB.js b/Server/db/mongo/MongoDB.js index 2813a3c00..68597a794 100644 --- a/Server/db/mongo/MongoDB.js +++ b/Server/db/mongo/MongoDB.js @@ -79,7 +79,7 @@ const { const { createPageSpeedCheck, getPageSpeedChecks, - deletePageSpeedChecks, + deletePageSpeedChecksByMonitorId, } = require("./modules/pageSpeedCheckModule"); //**************************************** @@ -157,7 +157,7 @@ module.exports = { deleteMonitorsByUserId, createPageSpeedCheck, getPageSpeedChecks, - deletePageSpeedChecks, + deletePageSpeedChecksByMonitorId, createMaintenanceWindow, getMaintenanceWindowsByUserId, getMaintenanceWindowsByMonitorId, diff --git a/Server/db/mongo/modules/pageSpeedCheckModule.js b/Server/db/mongo/modules/pageSpeedCheckModule.js index 65376a324..92f87d060 100644 --- a/Server/db/mongo/modules/pageSpeedCheckModule.js +++ b/Server/db/mongo/modules/pageSpeedCheckModule.js @@ -48,7 +48,7 @@ const getPageSpeedChecks = async (monitorId) => { * @throws {Error} */ -const deletePageSpeedChecks = async (monitorId) => { +const deletePageSpeedChecksByMonitorId = async (monitorId) => { try { const result = await PageSpeedCheck.deleteMany({ monitorId }); return result.deletedCount; @@ -60,5 +60,5 @@ const deletePageSpeedChecks = async (monitorId) => { module.exports = { createPageSpeedCheck, getPageSpeedChecks, - deletePageSpeedChecks, + deletePageSpeedChecksByMonitorId, }; From c2a83ffc57c16cc07c2b78c069ec88539ce42409 Mon Sep 17 00:00:00 2001 From: Daniel Cojocea Date: Fri, 2 Aug 2024 14:46:24 -0400 Subject: [PATCH 09/35] Updated design to match figma --- .../Pages/PageSpeed/CreatePageSpeed/index.css | 43 ++-- .../Pages/PageSpeed/CreatePageSpeed/index.jsx | 191 ++++++++++-------- Client/src/Pages/PageSpeed/index.css | 5 +- Client/src/Pages/PageSpeed/index.jsx | 2 +- 4 files changed, 126 insertions(+), 115 deletions(-) diff --git a/Client/src/Pages/PageSpeed/CreatePageSpeed/index.css b/Client/src/Pages/PageSpeed/CreatePageSpeed/index.css index 3152d0e28..f1f10621f 100644 --- a/Client/src/Pages/PageSpeed/CreatePageSpeed/index.css +++ b/Client/src/Pages/PageSpeed/CreatePageSpeed/index.css @@ -1,37 +1,31 @@ -.create-page-speed form { - position: relative; - margin: auto; - margin-top: var(--env-var-default-2); +.create-page-speed form > .MuiStack-root:not(:last-of-type) { background-color: var(--env-var-color-8); - width: 100%; - max-width: 500px; - box-shadow: var(--env-var-shadow-1); + border: solid 1px var(--env-var-color-6); border-radius: var(--env-var-radius-1); padding: var(--env-var-default-2); } -.create-page-speed h1.MuiTypography-root, -.create-page-speed h2.MuiTypography-root, +.create-page-speed h1.MuiTypography-root { + font-size: var(--env-var-font-size-large); + color: var(--env-var-color-1); +} .create-page-speed p.MuiTypography-root, -.create-page-speed h2.MuiTypography-root > span.MuiTypography-root { +.create-page-speed h3.MuiTypography-root { color: var(--env-var-color-5); } .create-page-speed h1.MuiTypography-root, -.create-page-speed h2.MuiTypography-root { +.create-page-speed h3.MuiTypography-root { font-weight: 600; } -.create-page-speed h2.MuiTypography-root { - font-size: var(--env-var-font-size-medium-plus); -} .create-page-speed p.MuiTypography-root, -.create-page-speed button, -.create-page-speed h2.MuiTypography-root > span.MuiTypography-root { +.create-page-speed h3.MuiTypography-root, +.create-page-speed h3.MuiTypography-root > span.MuiTypography-root { font-size: var(--env-var-font-size-medium); } .create-page-speed .MuiBox-root > .field + p.MuiTypography-root { font-size: var(--env-var-font-size-small-plus); } .create-page-speed .MuiBox-root > .field + p.MuiTypography-root, -.create-page-speed h2.MuiTypography-root > span.MuiTypography-root { +.create-page-speed h3.MuiTypography-root > span.MuiTypography-root { opacity: 0.6; } .create-page-speed .checkbox-wrapper { @@ -47,17 +41,18 @@ pointer-events: none; } -.create-page-speed button:not(.MuiIconButton-root) { +.create-page-speed button { height: var(--env-var-height-2); } -.create-page-speed .MuiIconButton-root { - position: absolute; - top: 0; - right: 0; - margin: var(--env-var-spacing-1); -} body:has(.create-page-speed) .select-dropdown .MuiMenuItem-root, .create-page-speed .select-wrapper .select-component > .MuiSelect-select { text-transform: lowercase; } + +.create-page-speed .field, +.create-page-speed .section-disabled, +.create-page-speed .select-wrapper, +.create-page-speed h3.MuiTypography-root { + flex: 1; +} diff --git a/Client/src/Pages/PageSpeed/CreatePageSpeed/index.jsx b/Client/src/Pages/PageSpeed/CreatePageSpeed/index.jsx index c85f6f77e..03d9a5414 100644 --- a/Client/src/Pages/PageSpeed/CreatePageSpeed/index.jsx +++ b/Client/src/Pages/PageSpeed/CreatePageSpeed/index.jsx @@ -1,9 +1,8 @@ -import { Box, IconButton, Stack, Typography } from "@mui/material"; +import { Box, Stack, Typography } from "@mui/material"; import { useState } from "react"; import { useTheme } from "@emotion/react"; import { useDispatch, useSelector } from "react-redux"; import { useNavigate } from "react-router"; -import CloseRoundedIcon from "@mui/icons-material/CloseRounded"; import Field from "../../../Components/Inputs/Field"; import Select from "../../../Components/Inputs/Select"; import Button from "../../../Components/Button"; @@ -11,6 +10,7 @@ import Checkbox from "../../../Components/Inputs/Checkbox"; import { monitorValidation } from "../../../Validation/validation"; import { createToast } from "../../../Utils/toastUtils"; import { createPageSpeed } from "../../../Features/PageSpeedMonitor/pageSpeedMonitorSlice"; +import WestRoundedIcon from "@mui/icons-material/WestRounded"; import "./index.css"; const CreatePageSpeed = () => { @@ -23,10 +23,11 @@ const CreatePageSpeed = () => { const frequencies = [ { _id: 1, name: "1 minute" }, - { _id: 2, name: "2 minutes" }, - { _id: 3, name: "3 minutes" }, - { _id: 4, name: "4 minutes" }, - { _id: 5, name: "5 minutes" }, + { _id: 1440, name: "1 day" }, + { _id: 2880, name: "2 days" }, + { _id: 4320, name: "3 days" }, + { _id: 7200, name: "5 days" }, + { _id: 10080, name: "1 week" }, ]; const [form, setForm] = useState({ @@ -96,102 +97,114 @@ const CreatePageSpeed = () => { return ( +