From f148e2d9ad9bf49b2b8f0d60789de48ab1f5ff8f Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Fri, 6 Dec 2024 14:25:11 +0800 Subject: [PATCH 01/40] Refactor Create PageSpeed --- .../Pages/PageSpeed/CreatePageSpeed/index.jsx | 313 ++++++++---------- 1 file changed, 142 insertions(+), 171 deletions(-) diff --git a/Client/src/Pages/PageSpeed/CreatePageSpeed/index.jsx b/Client/src/Pages/PageSpeed/CreatePageSpeed/index.jsx index ba3a7bb4a..6823cfe21 100644 --- a/Client/src/Pages/PageSpeed/CreatePageSpeed/index.jsx +++ b/Client/src/Pages/PageSpeed/CreatePageSpeed/index.jsx @@ -1,42 +1,52 @@ +// React, Redux, Router +import { useNavigate, useParams } from "react-router-dom"; +import { useEffect } from "react"; import { useState } from "react"; -import { Box, Button, ButtonGroup, Stack, Typography } from "@mui/material"; -import LoadingButton from "@mui/lab/LoadingButton"; import { useSelector, useDispatch } from "react-redux"; + +// Utility and Network +import { logger } from "../../../Utils/Logger"; import { monitorValidation } from "../../../Validation/validation"; -import { useNavigate } from "react-router-dom"; -import { useTheme } from "@emotion/react"; import { createPageSpeed, checkEndpointResolution, } from "../../../Features/PageSpeedMonitor/pageSpeedMonitorSlice"; -import { createToast } from "../../../Utils/toastUtils"; -import { logger } from "../../../Utils/Logger"; -import { ConfigBox } from "../../Monitors/styled"; -import Radio from "../../../Components/Inputs/Radio"; +import { parseDomainName } from "../../../Utils/monitorUtils"; + +// MUI +import { useTheme } from "@emotion/react"; +import { Box, Stack, Typography, Button, ButtonGroup } from "@mui/material"; +import LoadingButton from "@mui/lab/LoadingButton"; + +//Components +import Breadcrumbs from "../../../Components/Breadcrumbs"; import TextInput from "../../../Components/Inputs/TextInput"; import { HttpAdornment } from "../../../Components/Inputs/TextInput/Adornments"; -import Select from "../../../Components/Inputs/Select"; +import { ConfigBox } from "../../Monitors/styled"; + +import { createToast } from "../../../Utils/toastUtils"; +import Radio from "../../../Components/Inputs/Radio"; import Checkbox from "../../../Components/Inputs/Checkbox"; -import Breadcrumbs from "../../../Components/Breadcrumbs"; -import { parseDomainName } from "../../../Utils/monitorUtils"; -import "./index.css"; +import Select from "../../../Components/Inputs/Select"; const CreatePageSpeed = () => { const MS_PER_MINUTE = 60000; - const { user, authToken } = useSelector((state) => state.auth); - const { isLoading } = useSelector((state) => state.pageSpeedMonitors); - const dispatch = useDispatch(); - const navigate = useNavigate(); - const theme = useTheme(); - const idMap = { - "monitor-url": "url", - "monitor-name": "name", - "monitor-checks-http": "type", - "monitor-checks-ping": "type", - "notify-email-default": "notification-email", - }; + const CRUMBS = [ + { name: "pagespeed", path: "/pagespeed" }, + { name: "create", path: `/pagespeed/create` }, + ]; + const SELECT_VALUES = [ + { _id: 3, name: "3 minutes" }, + { _id: 5, name: "5 minutes" }, + { _id: 10, name: "10 minutes" }, + { _id: 20, name: "20 minutes" }, + { _id: 60, name: "1 hour" }, + { _id: 1440, name: "1 day" }, + { _id: 10080, name: "1 week" }, + ]; + // State const [monitor, setMonitor] = useState({ url: "", name: "", @@ -44,71 +54,20 @@ const CreatePageSpeed = () => { notifications: [], interval: 3, }); + const [https, setHttps] = useState(true); const [errors, setErrors] = useState({}); + const { user, authToken } = useSelector((state) => state.auth); + const { isLoading } = useSelector((state) => state.pageSpeedMonitors); - const handleChange = (event, name) => { - const { value, id } = event.target; - if (!name) name = idMap[id]; - - if (name.includes("notification-")) { - name = name.replace("notification-", ""); - let hasNotif = monitor.notifications.some( - (notification) => notification.type === name - ); - setMonitor((prev) => { - const notifs = [...prev.notifications]; - if (hasNotif) { - return { - ...prev, - notifications: notifs.filter((notif) => notif.type !== name), - }; - } else { - return { - ...prev, - notifications: [ - ...notifs, - name === "email" - ? { type: name, address: value } - : // TODO - phone number - { type: name, phone: value }, - ], - }; - } - }); - } else { - setMonitor((prev) => ({ - ...prev, - [name]: value, - })); - - const { error } = monitorValidation.validate( - { [name]: value }, - { abortEarly: false } - ); - - setErrors((prev) => { - const updatedErrors = { ...prev }; - if (error) updatedErrors[name] = error.details[0].message; - else delete updatedErrors[name]; - return updatedErrors; - }); - } - }; - - const onUrlBlur = (event) => { - const { value } = event.target; - if (monitor.name === "") { - setMonitor((prev) => ({ - ...prev, - name: parseDomainName(value), - })); - } - }; + // Setup + const dispatch = useDispatch(); + const navigate = useNavigate(); + const theme = useTheme(); + // Handlers const handleCreateMonitor = async (event) => { event.preventDefault(); - //obj to submit let form = { url: `http${https ? "s" : ""}://` + monitor.url, name: monitor.name === "" ? monitor.url : monitor.name, @@ -126,46 +85,98 @@ const CreatePageSpeed = () => { newErrors[err.path[0]] = err.message; }); setErrors(newErrors); - createToast({ body: "Error validation data." }); - } else { - const checkEndpointAction = await dispatch( - checkEndpointResolution({ authToken, monitorURL: form.url }) - ); - if (checkEndpointAction.meta.requestStatus === "rejected") { - createToast({ - body: "The endpoint you entered doesn't resolve. Check the URL again.", - }); - setErrors({ url: "The entered URL is not reachable." }); - return; - } + createToast({ body: "Please check the form for errors." }); + return; + } - form = { - ...form, - description: form.name, - teamId: user.teamId, - userId: user._id, - notifications: monitor.notifications, - }; - const action = await dispatch(createPageSpeed({ authToken, monitor: form })); - if (action.meta.requestStatus === "fulfilled") { - createToast({ body: "Monitor created successfully!" }); - navigate("/pagespeed"); - } else { - createToast({ body: "Failed to create monitor." }); - } + const checkEndpointAction = await dispatch( + checkEndpointResolution({ authToken, monitorURL: form.url }) + ); + + if (checkEndpointAction.meta.requestStatus === "rejected") { + createToast({ + body: "The endpoint you entered doesn't resolve. Check the URL again.", + }); + setErrors({ url: "The entered URL is not reachable." }); + return; + } + + form = { + ...form, + description: form.name, + teamId: user.teamId, + userId: user._id, + notifications: monitor.notifications, + }; + + const action = await dispatch(createPageSpeed({ authToken, monitor: form })); + if (action.meta.requestStatus === "fulfilled") { + createToast({ body: "Monitor created successfully!" }); + navigate("/pagespeed"); + } else { + createToast({ body: "Failed to create monitor." }); + } + }; + + const handleChange = (event, formItemName) => { + const { value } = event.target; + setMonitor({ + ...monitor, + [formItemName]: value, + }); + + const { error } = monitorValidation.validate( + { [formItemName]: value }, + { abortEarly: false } + ); + + setErrors((prev) => ({ + ...prev, + ...(error + ? { [formItemName]: error.details[0].message } + : { [formItemName]: undefined }), + })); + }; + + const handleNotifications = (event, type) => { + const { value } = event.target; + let notifications = [...monitor.notifications]; + const notificationExists = notifications.some((notification) => { + if (notification.type === type && notification.address === value) { + return true; + } + return false; + }); + if (notificationExists) { + notifications = notifications.filter((notification) => { + if (notification.type === type && notification.address === value) { + return false; + } + return true; + }); + } else { + notifications.push({ type, address: value }); + } + + setMonitor((prev) => ({ + ...prev, + notifications, + })); + }; + + const handleBlur = (event, formItemName) => { + if (formItemName === "url") { + const { value } = event.target; + if (monitor.name !== "") { + return; + } + setMonitor((prev) => ({ + ...prev, + name: parseDomainName(value), + })); } }; - //select values - const frequencies = [ - { _id: 3, name: "3 minutes" }, - { _id: 5, name: "5 minutes" }, - { _id: 10, name: "10 minutes" }, - { _id: 20, name: "20 minutes" }, - { _id: 60, name: "1 hour" }, - { _id: 1440, name: "1 day" }, - { _id: 10080, name: "1 week" }, - ]; return ( { }, }} > - + { fontWeight="inherit" color={theme.palette.text.secondary} > - pagespeed monitor + PageSpeed monitor @@ -224,8 +230,8 @@ const CreatePageSpeed = () => { startAdornment={} placeholder="google.com" value={monitor.url} - onChange={handleChange} - onBlur={onUrlBlur} + onChange={(event) => handleChange(event, "url")} + onBlur={(event) => handleBlur(event, "url")} error={errors["url"] ? true : false} helperText={errors["url"]} /> @@ -236,7 +242,7 @@ const CreatePageSpeed = () => { isOptional={true} placeholder="Google" value={monitor.name} - onChange={handleChange} + onChange={(event) => handleChange(event, "name")} error={errors["name"] ? true : false} helperText={errors["name"]} /> @@ -253,8 +259,8 @@ const CreatePageSpeed = () => { { HTTPS + + + { placeholder="Google" isOptional={true} value={infrastructureMonitor.name} - onBlur={handleBlur} - onChange={handleChange} + onChange={(event) => handleChange(event, "name")} error={errors["name"]} /> { id="secret" label="Authorization secret" value={infrastructureMonitor.secret} - onBlur={handleBlur} - onChange={handleChange} + onChange={(event) => handleChange(event, "secret")} error={errors["secret"] ? true : false} helperText={errors["secret"]} /> @@ -311,12 +342,11 @@ const CreateInfrastructureMonitor = () => { (notification) => notification.type === "email" )} value={user?.email} - onChange={(e) => handleChange(e)} + onChange={(event) => handleNotifications(event, "email")} onBlur={handleBlur} /> - Customize alerts @@ -326,25 +356,30 @@ const CreateInfrastructureMonitor = () => { - {HARDWARE_MONITOR_TYPES.map((type, idx) => ( - - ))} - {alertErrKeyLen > 0 && ( + {METRICS.map((metric) => { + return ( + handleCheckboxChange(event, metric)} + isChecked={infrastructureMonitor[metric]} + fieldId={METRIC_PREFIX + metric} + fieldValue={infrastructureMonitor[METRIC_PREFIX + metric]} + onFieldChange={(event) => handleChange(event, METRIC_PREFIX + metric)} + onFieldBlur={(event) => handleBlur(event, METRIC_PREFIX + metric)} + alertUnit={metric == "temperature" ? "°C" : "%"} + /> + ); + })} + {/* Error text */} + {hasAlertError(errors) && ( { opacity: 0.8, }} > - { - errors[ - THRESHOLD_FIELD_PREFIX + - HARDWARE_MONITOR_TYPES.filter( - (type) => errors[THRESHOLD_FIELD_PREFIX + type] - )[0] - ] - } + {getAlertError(errors)} )} @@ -377,7 +405,7 @@ const CreateInfrastructureMonitor = () => { value={infrastructureMonitor.interval || 15} onChange={(e) => handleChange(e, "interval")} onBlur={(e) => handleBlur(e, "interval")} - items={frequencies} + items={SELECT_VALUES} /> From f42bdddb7a5a87dad284533f609827ce402645ac Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Mon, 9 Dec 2024 14:01:10 +0800 Subject: [PATCH 05/40] add deleteHardwareChecksByMonitorId --- Server/controllers/monitorController.js | 1 + Server/db/mongo/MongoDB.js | 6 +++++- Server/db/mongo/modules/hardwareCheckModule.js | 14 +++++++++++++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/Server/controllers/monitorController.js b/Server/controllers/monitorController.js index 0866017bf..625c1a0f7 100644 --- a/Server/controllers/monitorController.js +++ b/Server/controllers/monitorController.js @@ -332,6 +332,7 @@ const deleteMonitor = async (req, res, next) => { await req.db.deleteChecks(monitor._id); await req.db.deletePageSpeedChecksByMonitorId(monitor._id); await req.db.deleteNotificationsByMonitorId(monitor._id); + await req.db.deleteHardwareChecksByMonitorId(monitor._id); } catch (error) { logger.error({ message: `Error deleting associated records for monitor ${monitor._id} with name ${monitor.name}`, diff --git a/Server/db/mongo/MongoDB.js b/Server/db/mongo/MongoDB.js index 288aa83ad..3bdde7d69 100644 --- a/Server/db/mongo/MongoDB.js +++ b/Server/db/mongo/MongoDB.js @@ -124,7 +124,10 @@ import { //**************************************** // Hardware Checks //**************************************** -import { createHardwareCheck } from "./modules/hardwareCheckModule.js"; +import { + createHardwareCheck, + deleteHardwareChecksByMonitorId, +} from "./modules/hardwareCheckModule.js"; //**************************************** // Checks @@ -213,6 +216,7 @@ export default { createPageSpeedCheck, deletePageSpeedChecksByMonitorId, createHardwareCheck, + deleteHardwareChecksByMonitorId, createMaintenanceWindow, getMaintenanceWindowsByTeamId, getMaintenanceWindowById, diff --git a/Server/db/mongo/modules/hardwareCheckModule.js b/Server/db/mongo/modules/hardwareCheckModule.js index 3eab0dfb9..9c49e831b 100644 --- a/Server/db/mongo/modules/hardwareCheckModule.js +++ b/Server/db/mongo/modules/hardwareCheckModule.js @@ -37,4 +37,16 @@ const createHardwareCheck = async (hardwareCheckData) => { } }; -export { createHardwareCheck }; +const deleteHardwareChecksByMonitorId = async (monitorId) => { + try { + const result = await HardwareCheck.deleteMany({ monitorId }); + console.log("deleted hardware checks", result); + return result.deletedCount; + } catch (error) { + error.service = SERVICE_NAME; + error.method = "deleteHardwareChecksByMonitorId"; + throw error; + } +}; + +export { createHardwareCheck, deleteHardwareChecksByMonitorId }; From b306a4ac7b97c9adede6501775d51b99753beba4 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Tue, 10 Dec 2024 11:17:17 +0800 Subject: [PATCH 06/40] Add name to all inputs, use event.target.name instead of passing extra variable --- .../Pages/PageSpeed/CreatePageSpeed/index.jsx | 66 +++++++++---------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/Client/src/Pages/PageSpeed/CreatePageSpeed/index.jsx b/Client/src/Pages/PageSpeed/CreatePageSpeed/index.jsx index 6823cfe21..ccab3442f 100644 --- a/Client/src/Pages/PageSpeed/CreatePageSpeed/index.jsx +++ b/Client/src/Pages/PageSpeed/CreatePageSpeed/index.jsx @@ -1,11 +1,9 @@ // React, Redux, Router -import { useNavigate, useParams } from "react-router-dom"; -import { useEffect } from "react"; +import { useNavigate } from "react-router-dom"; import { useState } from "react"; import { useSelector, useDispatch } from "react-redux"; // Utility and Network -import { logger } from "../../../Utils/Logger"; import { monitorValidation } from "../../../Validation/validation"; import { createPageSpeed, @@ -29,23 +27,24 @@ import Radio from "../../../Components/Inputs/Radio"; import Checkbox from "../../../Components/Inputs/Checkbox"; import Select from "../../../Components/Inputs/Select"; +const MS_PER_MINUTE = 60000; + +const CRUMBS = [ + { name: "pagespeed", path: "/pagespeed" }, + { name: "create", path: `/pagespeed/create` }, +]; + +const SELECT_VALUES = [ + { _id: 3, name: "3 minutes" }, + { _id: 5, name: "5 minutes" }, + { _id: 10, name: "10 minutes" }, + { _id: 20, name: "20 minutes" }, + { _id: 60, name: "1 hour" }, + { _id: 1440, name: "1 day" }, + { _id: 10080, name: "1 week" }, +]; + const CreatePageSpeed = () => { - const MS_PER_MINUTE = 60000; - - const CRUMBS = [ - { name: "pagespeed", path: "/pagespeed" }, - { name: "create", path: `/pagespeed/create` }, - ]; - - const SELECT_VALUES = [ - { _id: 3, name: "3 minutes" }, - { _id: 5, name: "5 minutes" }, - { _id: 10, name: "10 minutes" }, - { _id: 20, name: "20 minutes" }, - { _id: 60, name: "1 hour" }, - { _id: 1440, name: "1 day" }, - { _id: 10080, name: "1 week" }, - ]; // State const [monitor, setMonitor] = useState({ url: "", @@ -118,23 +117,21 @@ const CreatePageSpeed = () => { } }; - const handleChange = (event, formItemName) => { - const { value } = event.target; + const handleChange = (event) => { + const { value, name } = event.target; setMonitor({ ...monitor, - [formItemName]: value, + [name]: value, }); const { error } = monitorValidation.validate( - { [formItemName]: value }, + { [name]: value }, { abortEarly: false } ); setErrors((prev) => ({ ...prev, - ...(error - ? { [formItemName]: error.details[0].message } - : { [formItemName]: undefined }), + ...(error ? { [name]: error.details[0].message } : { [name]: undefined }), })); }; @@ -164,8 +161,9 @@ const CreatePageSpeed = () => { })); }; - const handleBlur = (event, formItemName) => { - if (formItemName === "url") { + const handleBlur = (event) => { + const { name } = event.target; + if (name === "url") { const { value } = event.target; if (monitor.name !== "") { return; @@ -225,24 +223,26 @@ const CreatePageSpeed = () => { } placeholder="google.com" value={monitor.url} - onChange={(event) => handleChange(event, "url")} - onBlur={(event) => handleBlur(event, "url")} + onChange={handleChange} + onBlur={handleBlur} error={errors["url"] ? true : false} helperText={errors["url"]} /> handleChange(event, "name")} + onChange={handleChange} error={errors["name"] ? true : false} helperText={errors["name"]} /> @@ -264,7 +264,6 @@ const CreatePageSpeed = () => { size="small" value="http" checked={monitor.type === "pagespeed"} - onChange={(event) => handleChange(event)} /> - + {isAdmin && ( + + )} + + Date: Tue, 10 Dec 2024 14:00:45 +0800 Subject: [PATCH 13/40] Add monitor count to PageSpeed page --- Client/src/Pages/PageSpeed/index.jsx | 33 +++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/Client/src/Pages/PageSpeed/index.jsx b/Client/src/Pages/PageSpeed/index.jsx index 8e0f111bb..b4056ffce 100644 --- a/Client/src/Pages/PageSpeed/index.jsx +++ b/Client/src/Pages/PageSpeed/index.jsx @@ -11,7 +11,7 @@ import Breadcrumbs from "../../Components/Breadcrumbs"; import SkeletonLayout from "./skeleton"; import Card from "./card"; import { networkService } from "../../main"; - +import { Heading } from "../../Components/Heading"; const PageSpeed = ({ isAdmin }) => { const theme = useTheme(); const dispatch = useDispatch(); @@ -20,6 +20,7 @@ const PageSpeed = ({ isAdmin }) => { const { user, authToken } = useSelector((state) => state.auth); const [isLoading, setIsLoading] = useState(true); const [monitors, setMonitors] = useState([]); + const [monitorCount, setMonitorCount] = useState(0); useEffect(() => { dispatch(getPageSpeedByTeamId(authToken)); }, [authToken, dispatch]); @@ -44,6 +45,7 @@ const PageSpeed = ({ isAdmin }) => { }); if (res?.data?.data?.monitors) { setMonitors(res.data.data.monitors); + setMonitorCount(res.data.data.monitorCount); } } catch (error) { console.log(error); @@ -53,7 +55,7 @@ const PageSpeed = ({ isAdmin }) => { }; fetchMonitors(); - }, []); + }, [authToken, user.teamId]); // will show skeletons only on initial load // since monitor state is being added to redux persist, there's no reason to display skeletons on every render @@ -76,8 +78,8 @@ const PageSpeed = ({ isAdmin }) => { {isActuallyLoading ? ( ) : monitors?.length !== 0 ? ( - - + + { )} + + PageSpeed monitors + {/* TODO Correct the class current-monitors-counter, there are some unnecessary things there */} + + {monitorCount} + + { /> ))} - + ) : ( Date: Tue, 10 Dec 2024 14:23:46 +0800 Subject: [PATCH 14/40] Monitors -> Uptime --- Client/src/App.jsx | 26 +++--- Client/src/Components/Sidebar/index.jsx | 6 +- Client/src/Pages/Auth/Login.jsx | 4 +- Client/src/Pages/Auth/Register/Register.jsx | 2 +- .../Infrastructure/CreateMonitor/index.jsx | 2 +- .../Pages/Infrastructure/Details/index.jsx | 2 +- .../Infrastructure/components/Menu/index.jsx | 82 ------------------- Client/src/Pages/Infrastructure/index.jsx | 4 +- .../src/Pages/PageSpeed/Configure/index.jsx | 4 +- .../Pages/PageSpeed/CreatePageSpeed/index.jsx | 2 +- Client/src/Pages/PageSpeed/Details/index.jsx | 2 +- Client/src/Pages/PageSpeed/card.jsx | 2 +- .../{Monitors => Uptime}/Configure/index.css | 0 .../{Monitors => Uptime}/Configure/index.jsx | 8 +- .../Configure/skeleton.jsx | 0 .../CreateUptime}/index.css | 0 .../CreateUptime}/index.jsx | 6 +- .../Details/Charts/index.jsx | 0 .../Details/PaginationTable/index.jsx | 0 .../{Monitors => Uptime}/Details/index.css | 0 .../{Monitors => Uptime}/Details/index.jsx | 15 ++-- .../{Monitors => Uptime}/Details/skeleton.jsx | 0 .../{Monitors => Uptime}/Details/styled.jsx | 0 .../Home/CurrentMonitoring/index.jsx | 4 +- .../{Monitors => Uptime}/Home/StatusBox.jsx | 0 .../Home/UptimeTable}/Skeleton/index.jsx | 0 .../Home/UptimeTable}/index.jsx | 2 +- .../{Monitors => Uptime}/Home/actionsMenu.jsx | 6 +- .../{Monitors => Uptime}/Home/fallback.jsx | 0 .../Pages/{Monitors => Uptime}/Home/host.jsx | 0 .../Pages/{Monitors => Uptime}/Home/index.css | 0 .../Pages/{Monitors => Uptime}/Home/index.jsx | 32 ++++---- .../{Monitors => Uptime}/Home/skeleton.jsx | 0 .../src/Pages/{Monitors => Uptime}/styled.jsx | 0 .../src/Pages/{Monitors => Uptime}/utils.jsx | 0 35 files changed, 65 insertions(+), 146 deletions(-) rename Client/src/Pages/{Monitors => Uptime}/Configure/index.css (100%) rename Client/src/Pages/{Monitors => Uptime}/Configure/index.jsx (98%) rename Client/src/Pages/{Monitors => Uptime}/Configure/skeleton.jsx (100%) rename Client/src/Pages/{Monitors/CreateMonitor => Uptime/CreateUptime}/index.css (100%) rename Client/src/Pages/{Monitors/CreateMonitor => Uptime/CreateUptime}/index.jsx (98%) rename Client/src/Pages/{Monitors => Uptime}/Details/Charts/index.jsx (100%) rename Client/src/Pages/{Monitors => Uptime}/Details/PaginationTable/index.jsx (100%) rename Client/src/Pages/{Monitors => Uptime}/Details/index.css (100%) rename Client/src/Pages/{Monitors => Uptime}/Details/index.jsx (97%) rename Client/src/Pages/{Monitors => Uptime}/Details/skeleton.jsx (100%) rename Client/src/Pages/{Monitors => Uptime}/Details/styled.jsx (100%) rename Client/src/Pages/{Monitors => Uptime}/Home/CurrentMonitoring/index.jsx (93%) rename Client/src/Pages/{Monitors => Uptime}/Home/StatusBox.jsx (100%) rename Client/src/Pages/{Monitors/Home/MonitorTable => Uptime/Home/UptimeTable}/Skeleton/index.jsx (100%) rename Client/src/Pages/{Monitors/Home/MonitorTable => Uptime/Home/UptimeTable}/index.jsx (99%) rename Client/src/Pages/{Monitors => Uptime}/Home/actionsMenu.jsx (97%) rename Client/src/Pages/{Monitors => Uptime}/Home/fallback.jsx (100%) rename Client/src/Pages/{Monitors => Uptime}/Home/host.jsx (100%) rename Client/src/Pages/{Monitors => Uptime}/Home/index.css (100%) rename Client/src/Pages/{Monitors => Uptime}/Home/index.jsx (73%) rename Client/src/Pages/{Monitors => Uptime}/Home/skeleton.jsx (100%) rename Client/src/Pages/{Monitors => Uptime}/styled.jsx (100%) rename Client/src/Pages/{Monitors => Uptime}/utils.jsx (100%) diff --git a/Client/src/App.jsx b/Client/src/App.jsx index 82c8203a8..5e7ab4e97 100644 --- a/Client/src/App.jsx +++ b/Client/src/App.jsx @@ -8,8 +8,8 @@ import NotFound from "./Pages/NotFound"; import Login from "./Pages/Auth/Login"; import Register from "./Pages/Auth/Register/Register"; import Account from "./Pages/Account"; -import Monitors from "./Pages/Monitors/Home"; -import CreateMonitor from "./Pages/Monitors/CreateMonitor"; +import Uptime from "./Pages/Uptime/Home"; +import CreateMonitor from "./Pages/Uptime/CreateUptime"; import CreateInfrastructureMonitor from "./Pages/Infrastructure/CreateMonitor"; import Incidents from "./Pages/Incidents"; import Status from "./Pages/Status"; @@ -20,10 +20,10 @@ import CheckEmail from "./Pages/Auth/CheckEmail"; import SetNewPassword from "./Pages/Auth/SetNewPassword"; import NewPasswordConfirmed from "./Pages/Auth/NewPasswordConfirmed"; import ProtectedRoute from "./Components/ProtectedRoute"; -import Details from "./Pages/Monitors/Details"; +import UptimeDetails from "./Pages/Uptime/Details"; import AdvancedSettings from "./Pages/AdvancedSettings"; import Maintenance from "./Pages/Maintenance"; -import Configure from "./Pages/Monitors/Configure"; +import Configure from "./Pages/Uptime/Configure"; import PageSpeed from "./Pages/PageSpeed"; import CreatePageSpeed from "./Pages/PageSpeed/CreatePageSpeed"; import CreateNewMaintenanceWindow from "./Pages/Maintenance/CreateMaintenance"; @@ -43,8 +43,8 @@ import { Infrastructure } from "./Pages/Infrastructure"; import InfrastructureDetails from "./Pages/Infrastructure/Details"; function App() { const AdminCheckedRegister = withAdminCheck(Register); - const MonitorsWithAdminProp = withAdminProp(Monitors); - const MonitorDetailsWithAdminProp = withAdminProp(Details); + const UptimeWithAdminProp = withAdminProp(Uptime); + const UptimeDetailsWithAdminProp = withAdminProp(UptimeDetails); const PageSpeedWithAdminProp = withAdminProp(PageSpeed); const PageSpeedDetailsWithAdminProp = withAdminProp(PageSpeedDetails); const MaintenanceWithAdminProp = withAdminProp(Maintenance); @@ -92,22 +92,22 @@ function App() { } + element={} /> } + path="/uptime" + element={} /> } /> } + path="/uptime/:monitorId/" + element={} /> } /> }, + { name: "Uptime", path: "uptime", icon: }, { name: "Pagespeed", path: "pagespeed", icon: }, { name: "Infrastructure", path: "infrastructure", icon: }, { name: "Incidents", path: "incidents", icon: }, @@ -262,10 +262,10 @@ function Sidebar() { Menu } - sx={{ + sx={{ px: theme.spacing(6), height: "100%", - overflow: "hidden" + overflow: "hidden", }} > {menu.map((item) => diff --git a/Client/src/Pages/Auth/Login.jsx b/Client/src/Pages/Auth/Login.jsx index 6329835ef..a7554a7c1 100644 --- a/Client/src/Pages/Auth/Login.jsx +++ b/Client/src/Pages/Auth/Login.jsx @@ -388,7 +388,7 @@ const Login = () => { useEffect(() => { if (authToken) { - navigate("/monitors"); + navigate("/uptime"); return; } networkService @@ -454,7 +454,7 @@ const Login = () => { } else { const action = await dispatch(login(form)); if (action.payload.success) { - navigate("/monitors"); + navigate("/uptime"); createToast({ body: "Welcome back! You're successfully logged in.", }); diff --git a/Client/src/Pages/Auth/Register/Register.jsx b/Client/src/Pages/Auth/Register/Register.jsx index 2f4c26040..65c20ca40 100644 --- a/Client/src/Pages/Auth/Register/Register.jsx +++ b/Client/src/Pages/Auth/Register/Register.jsx @@ -237,7 +237,7 @@ const Register = ({ isSuperAdmin }) => { if (action.payload.success) { const authToken = action.payload.data; localStorage.setItem("token", authToken); - navigate("/monitors"); + navigate("/uptime"); createToast({ body: "Welcome! Your account was created successfully.", }); diff --git a/Client/src/Pages/Infrastructure/CreateMonitor/index.jsx b/Client/src/Pages/Infrastructure/CreateMonitor/index.jsx index f1d2d0ce2..1e4b64f48 100644 --- a/Client/src/Pages/Infrastructure/CreateMonitor/index.jsx +++ b/Client/src/Pages/Infrastructure/CreateMonitor/index.jsx @@ -12,7 +12,7 @@ import { useNavigate } from "react-router-dom"; import { useTheme } from "@emotion/react"; import { createToast } from "../../../Utils/toastUtils"; import Link from "../../../Components/Link"; -import { ConfigBox } from "../../Monitors/styled"; +import { ConfigBox } from "../../Uptime/styled"; import TextInput from "../../../Components/Inputs/TextInput"; import Select from "../../../Components/Inputs/Select"; import Checkbox from "../../../Components/Inputs/Checkbox"; diff --git a/Client/src/Pages/Infrastructure/Details/index.jsx b/Client/src/Pages/Infrastructure/Details/index.jsx index 06fb1296a..60dcf68ee 100644 --- a/Client/src/Pages/Infrastructure/Details/index.jsx +++ b/Client/src/Pages/Infrastructure/Details/index.jsx @@ -8,7 +8,7 @@ import AreaChart from "../../../Components/Charts/AreaChart"; import { useSelector } from "react-redux"; import { networkService } from "../../../main"; import PulseDot from "../../../Components/Animated/PulseDot"; -import useUtils from "../../Monitors/utils"; +import useUtils from "../../Uptime/utils"; import { useNavigate } from "react-router-dom"; import Empty from "./empty"; import { logger } from "../../../Utils/Logger"; diff --git a/Client/src/Pages/Infrastructure/components/Menu/index.jsx b/Client/src/Pages/Infrastructure/components/Menu/index.jsx index 9794a34d9..98b3f9878 100644 --- a/Client/src/Pages/Infrastructure/components/Menu/index.jsx +++ b/Client/src/Pages/Infrastructure/components/Menu/index.jsx @@ -109,88 +109,6 @@ const InfrastructureMenu = ({ monitor, isAdmin, updateCallback }) => { }, }} > - {/* - Open site action. Not necessary for infrastructure? - - {actions.url !== null ? ( - { - closeMenu(e); - e.stopPropagation(); - window.open(actions.url, "_blank", "noreferrer"); - }} - > - Open site - - ) : ( - "" - )} - */} - openDetails(monitor.id)}>Details - {/* - Incidents. Necessary? - { - e.stopPropagation(); - navigate(`/incidents/${actions.id}`); - }} - > - Incidents - */} - {/* - Configure. Necessary? - {isAdmin && ( - { - e.stopPropagation(); - - navigate(`/monitors/configure/${actions.id}`); - }} - > - Configure - - )} */} - {/* - Clone. Necessary? - {isAdmin && ( - { - e.stopPropagation(); - navigate(`/monitors/create/${actions.id}`); - }} - > - Clone - - )} */} - {/* - Pause. Necessary? - const handlePause = async () => { - try { - const action = await dispatch( - pauseUptimeMonitor({ authToken, monitorId: monitor._id }) - ); - if (pauseUptimeMonitor.fulfilled.match(action)) { - updateCallback(); - const state = action?.payload?.data.isActive === false ? "paused" : "resumed"; - createToast({ body: `Monitor ${state} successfully.` }); - } else { - throw new Error(action?.error?.message ?? "Failed to pause monitor."); - } - } catch (error) { - logger.error("Error pausing monitor:", monitor._id, error); - createToast({ body: "Failed to pause monitor." }); - } - }; - {isAdmin && ( - { - e.stopPropagation(); - handlePause(e); - }} - > - {monitor?.isActive === true ? "Pause" : "Resume"} - - )} */} {isAdmin && Remove} { diff --git a/Client/src/Pages/PageSpeed/card.jsx b/Client/src/Pages/PageSpeed/card.jsx index ba694bae2..56ba62346 100644 --- a/Client/src/Pages/PageSpeed/card.jsx +++ b/Client/src/Pages/PageSpeed/card.jsx @@ -8,7 +8,7 @@ import { IconBox } from "./Details/styled"; import { Area, AreaChart, CartesianGrid, ResponsiveContainer, Tooltip } from "recharts"; import { useSelector } from "react-redux"; import { formatDateWithTz, formatDurationSplit } from "../../Utils/timeUtils"; -import useUtils from "../Monitors/utils"; +import useUtils from "../Uptime/utils"; import { useState } from "react"; /** diff --git a/Client/src/Pages/Monitors/Configure/index.css b/Client/src/Pages/Uptime/Configure/index.css similarity index 100% rename from Client/src/Pages/Monitors/Configure/index.css rename to Client/src/Pages/Uptime/Configure/index.css diff --git a/Client/src/Pages/Monitors/Configure/index.jsx b/Client/src/Pages/Uptime/Configure/index.jsx similarity index 98% rename from Client/src/Pages/Monitors/Configure/index.jsx rename to Client/src/Pages/Uptime/Configure/index.jsx index ba23c5634..1c7fc762c 100644 --- a/Client/src/Pages/Monitors/Configure/index.jsx +++ b/Client/src/Pages/Uptime/Configure/index.jsx @@ -166,7 +166,7 @@ const Configure = () => { event.preventDefault(); const action = await dispatch(deleteUptimeMonitor({ authToken, monitor })); if (action.meta.requestStatus === "fulfilled") { - navigate("/monitors"); + navigate("/uptime"); } else { createToast({ body: "Failed to delete monitor." }); } @@ -207,9 +207,9 @@ const Configure = () => { <> { const theme = useTheme(); const { monitorId } = useParams(); const crumbs = [ - { name: "monitors", path: "/monitors" }, - { name: "create", path: `/monitors/create` }, + { name: "uptime", path: "/uptime" }, + { name: "create", path: `/uptime/create` }, ]; // State @@ -125,7 +125,7 @@ const CreateMonitor = () => { const action = await dispatch(createUptimeMonitor({ authToken, monitor: form })); if (action.meta.requestStatus === "fulfilled") { createToast({ body: "Monitor created successfully!" }); - navigate("/monitors"); + navigate("/uptime"); } else { createToast({ body: "Failed to create monitor." }); } diff --git a/Client/src/Pages/Monitors/Details/Charts/index.jsx b/Client/src/Pages/Uptime/Details/Charts/index.jsx similarity index 100% rename from Client/src/Pages/Monitors/Details/Charts/index.jsx rename to Client/src/Pages/Uptime/Details/Charts/index.jsx diff --git a/Client/src/Pages/Monitors/Details/PaginationTable/index.jsx b/Client/src/Pages/Uptime/Details/PaginationTable/index.jsx similarity index 100% rename from Client/src/Pages/Monitors/Details/PaginationTable/index.jsx rename to Client/src/Pages/Uptime/Details/PaginationTable/index.jsx diff --git a/Client/src/Pages/Monitors/Details/index.css b/Client/src/Pages/Uptime/Details/index.css similarity index 100% rename from Client/src/Pages/Monitors/Details/index.css rename to Client/src/Pages/Uptime/Details/index.css diff --git a/Client/src/Pages/Monitors/Details/index.jsx b/Client/src/Pages/Uptime/Details/index.jsx similarity index 97% rename from Client/src/Pages/Monitors/Details/index.jsx rename to Client/src/Pages/Uptime/Details/index.jsx index ebb664b79..60b67fdc8 100644 --- a/Client/src/Pages/Monitors/Details/index.jsx +++ b/Client/src/Pages/Uptime/Details/index.jsx @@ -100,7 +100,7 @@ const DetailsPage = ({ isAdmin }) => { } }; fetchCertificate(); - }, [authToken, monitorId, monitor]); + }, [authToken, monitorId, monitor, dateRange, uiTimezone, dateFormat]); const splitDuration = (duration) => { const { time, format } = formatDurationSplit(duration); @@ -117,18 +117,17 @@ const DetailsPage = ({ isAdmin }) => { const [hoveredUptimeData, setHoveredUptimeData] = useState(null); const [hoveredIncidentsData, setHoveredIncidentsData] = useState(null); + const BREADCRUMBS = [ + { name: "uptime", path: "/uptime" }, + { name: "details", path: `/uptime/${monitorId}` }, + ]; return ( {loading ? ( ) : ( <> - + { )} + {noMonitors && } {loading ? ( @@ -77,20 +79,20 @@ const Monitors = ({ isAdmin }) => { > @@ -101,7 +103,7 @@ const Monitors = ({ isAdmin }) => { ); }; -Monitors.propTypes = { +UptimeMonitors.propTypes = { isAdmin: PropTypes.bool, }; -export default Monitors; +export default UptimeMonitors; diff --git a/Client/src/Pages/Monitors/Home/skeleton.jsx b/Client/src/Pages/Uptime/Home/skeleton.jsx similarity index 100% rename from Client/src/Pages/Monitors/Home/skeleton.jsx rename to Client/src/Pages/Uptime/Home/skeleton.jsx diff --git a/Client/src/Pages/Monitors/styled.jsx b/Client/src/Pages/Uptime/styled.jsx similarity index 100% rename from Client/src/Pages/Monitors/styled.jsx rename to Client/src/Pages/Uptime/styled.jsx diff --git a/Client/src/Pages/Monitors/utils.jsx b/Client/src/Pages/Uptime/utils.jsx similarity index 100% rename from Client/src/Pages/Monitors/utils.jsx rename to Client/src/Pages/Uptime/utils.jsx From f26c0a057589b65b7518a8a16b2da8cae9fc8d23 Mon Sep 17 00:00:00 2001 From: Peter Carl Pardo Date: Tue, 10 Dec 2024 20:45:45 +0800 Subject: [PATCH 15/40] fix: removing padding Y of search bar --- Client/src/Components/Inputs/Search/index.jsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Client/src/Components/Inputs/Search/index.jsx b/Client/src/Components/Inputs/Search/index.jsx index 100b826b4..c944955b9 100644 --- a/Client/src/Components/Inputs/Search/index.jsx +++ b/Client/src/Components/Inputs/Search/index.jsx @@ -93,6 +93,9 @@ const Search = ({ { borderColor: theme.palette.border.light, }, + "& .MuiOutlinedInput-root": { + paddingY: 0, + }, }} /> {error && ( From b02044ae7fa1dbac089d1c7f490c2ac8da2fb8f1 Mon Sep 17 00:00:00 2001 From: Shemy Gan Date: Tue, 10 Dec 2024 10:16:04 -0500 Subject: [PATCH 16/40] - Remove disabled notifications --- .../Pages/PageSpeed/CreatePageSpeed/index.jsx | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/Client/src/Pages/PageSpeed/CreatePageSpeed/index.jsx b/Client/src/Pages/PageSpeed/CreatePageSpeed/index.jsx index ba3a7bb4a..87eb8c577 100644 --- a/Client/src/Pages/PageSpeed/CreatePageSpeed/index.jsx +++ b/Client/src/Pages/PageSpeed/CreatePageSpeed/index.jsx @@ -301,14 +301,6 @@ const CreatePageSpeed = () => { When there is a new incident, - logger.warn("disabled")} - isDisabled={true} - /> { value={user?.email} onChange={(event) => handleChange(event)} /> - logger.warn("disabled")} - isDisabled={true} - /> {monitor.notifications.some( (notification) => notification.type === "emails" ) ? ( From 5e22401df42781df91b91ef6570704fbbe66bd47 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 10 Dec 2024 16:08:52 +0000 Subject: [PATCH 17/40] fix(deps): update dependency bullmq to v5.34.0 --- Server/package-lock.json | 8 ++++---- Server/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Server/package-lock.json b/Server/package-lock.json index fc62aa925..864ce9ac0 100644 --- a/Server/package-lock.json +++ b/Server/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "axios": "^1.7.2", "bcrypt": "^5.1.1", - "bullmq": "5.33.0", + "bullmq": "5.34.0", "cors": "^2.8.5", "dockerode": "4.0.2", "dotenv": "^16.4.5", @@ -1218,9 +1218,9 @@ } }, "node_modules/bullmq": { - "version": "5.33.0", - "resolved": "https://registry.npmjs.org/bullmq/-/bullmq-5.33.0.tgz", - "integrity": "sha512-dICdidv1x+umYyA0DqlnCPa1sgHjtHo6gzyww5E10OQq+k9saT2B/rIP8pQbo8HhN/fRViYjJP/+7s8594/xdw==", + "version": "5.34.0", + "resolved": "https://registry.npmjs.org/bullmq/-/bullmq-5.34.0.tgz", + "integrity": "sha512-TyzeYDkIGkooYUn/P1CeiJW3Am1TboC3unwhlg1cJIwKksoyuRp97TkHyCZcwLchXbYCUtsGBZFUYf/lTAhdSg==", "license": "MIT", "dependencies": { "cron-parser": "^4.6.0", diff --git a/Server/package.json b/Server/package.json index 44a02a5ae..e8d5bd492 100644 --- a/Server/package.json +++ b/Server/package.json @@ -14,7 +14,7 @@ "dependencies": { "axios": "^1.7.2", "bcrypt": "^5.1.1", - "bullmq": "5.33.0", + "bullmq": "5.34.0", "cors": "^2.8.5", "dockerode": "4.0.2", "dotenv": "^16.4.5", From 1d56c5b6749a8f6b10f38ae5dce2bfa6c7d57dea Mon Sep 17 00:00:00 2001 From: Shemy Gan Date: Tue, 10 Dec 2024 14:41:06 -0500 Subject: [PATCH 18/40] - Change to grey color for pending status --- Client/src/Components/Label/index.jsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Client/src/Components/Label/index.jsx b/Client/src/Components/Label/index.jsx index 1a372c8a1..19d7998d0 100644 --- a/Client/src/Components/Label/index.jsx +++ b/Client/src/Components/Label/index.jsx @@ -141,9 +141,9 @@ const StatusLabel = ({ status, text, customStyles }) => { borderColor: theme.palette.warning.light, }, pending: { - dotColor: theme.palette.warning.main, - bgColor: theme.palette.warning.dark, - borderColor: theme.palette.warning.light, + dotColor: theme.palette.text.secondary, + bgColor: theme.palette.background.main, + borderColor: theme.palette.border.dark, }, "cannot resolve": { dotColor: theme.palette.unresolved.main, From 9c48ffe9770fc6a0dc7e3bd2193ab34f4628f355 Mon Sep 17 00:00:00 2001 From: Shemy Gan Date: Tue, 10 Dec 2024 14:53:07 -0500 Subject: [PATCH 19/40] - Remove text from configuration --- Client/src/Pages/Infrastructure/CreateMonitor/index.jsx | 1 - Client/src/Pages/Monitors/CreateMonitor/index.jsx | 2 -- 2 files changed, 3 deletions(-) diff --git a/Client/src/Pages/Infrastructure/CreateMonitor/index.jsx b/Client/src/Pages/Infrastructure/CreateMonitor/index.jsx index f1d2d0ce2..450716913 100644 --- a/Client/src/Pages/Infrastructure/CreateMonitor/index.jsx +++ b/Client/src/Pages/Infrastructure/CreateMonitor/index.jsx @@ -303,7 +303,6 @@ const CreateInfrastructureMonitor = () => { - When there is a new incident, { - When there is a new incident, - Date: Tue, 10 Dec 2024 20:00:59 +0000 Subject: [PATCH 20/40] chore(deps): update dependency c8 to v10.1.3 --- Server/package-lock.json | 165 ++++++++++++++++++++------------------- Server/package.json | 2 +- 2 files changed, 85 insertions(+), 82 deletions(-) diff --git a/Server/package-lock.json b/Server/package-lock.json index fc62aa925..d233409ea 100644 --- a/Server/package-lock.json +++ b/Server/package-lock.json @@ -32,7 +32,7 @@ "winston": "^3.13.0" }, "devDependencies": { - "c8": "10.1.2", + "c8": "10.1.3", "chai": "5.1.2", "esm": "3.2.25", "mocha": "11.0.1", @@ -97,11 +97,14 @@ "license": "Apache-2.0" }, "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.1.tgz", + "integrity": "sha512-W+a0/JpU28AqH4IKtwUPcEUnUyXMDLALcn5/JLczGGT9fHE2sIby/xP/oQnx3nxkForzgzPy201RAKcB4xPAFQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=18" + } }, "node_modules/@colors/colors": { "version": "1.6.0", @@ -1253,13 +1256,13 @@ } }, "node_modules/c8": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/c8/-/c8-10.1.2.tgz", - "integrity": "sha512-Qr6rj76eSshu5CgRYvktW0uM0CFY0yi4Fd5D0duDXO6sYinyopmftUiJVuzBQxQcwQLor7JWDVRP+dUfCmzgJw==", + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/c8/-/c8-10.1.3.tgz", + "integrity": "sha512-LvcyrOAaOnrrlMpW22n690PUvxiq4Uf9WMhQwNJ9vgagkL/ph1+D4uvjvDA5XCbykrc0sx+ay6pVi9YZ1GnhyA==", "dev": true, "license": "ISC", "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", + "@bcoe/v8-coverage": "^1.0.1", "@istanbuljs/schema": "^0.1.3", "find-up": "^5.0.0", "foreground-child": "^3.1.1", @@ -1286,78 +1289,6 @@ } } }, - "node_modules/c8/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/c8/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/c8/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/c8/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/c8/node_modules/test-exclude": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", - "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", - "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^10.4.1", - "minimatch": "^9.0.4" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/call-bind": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", @@ -6507,6 +6438,78 @@ "node": ">=6" } }, + "node_modules/test-exclude": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", + "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^10.4.1", + "minimatch": "^9.0.4" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/test-exclude/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/test-exclude/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/text-hex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", diff --git a/Server/package.json b/Server/package.json index 44a02a5ae..900f3edba 100644 --- a/Server/package.json +++ b/Server/package.json @@ -35,7 +35,7 @@ "winston": "^3.13.0" }, "devDependencies": { - "c8": "10.1.2", + "c8": "10.1.3", "chai": "5.1.2", "esm": "3.2.25", "mocha": "11.0.1", From d52844eb53773933482e1c6ee01ff99779712666 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Tue, 10 Dec 2024 22:08:21 +0000 Subject: [PATCH 21/40] chore(deps): update dependency @types/react to v18.3.15 --- Client/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Client/package-lock.json b/Client/package-lock.json index b1078bfaf..92cecf187 100644 --- a/Client/package-lock.json +++ b/Client/package-lock.json @@ -2360,9 +2360,9 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "18.3.14", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.14.tgz", - "integrity": "sha512-NzahNKvjNhVjuPBQ+2G7WlxstQ+47kXZNHlUvFakDViuIEfGY926GqhMueQFZ7woG+sPiQKlF36XfrIUVSUfFg==", + "version": "18.3.15", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.15.tgz", + "integrity": "sha512-XQzbwkCwrsabawgWsvDDwsDTRuH1sf6Uj1fnFYoG03ZXfT54/aBvlylKR9ix70pXAtTn8dFzj358zVcZN4m83w==", "license": "MIT", "dependencies": { "@types/prop-types": "*", From 4f45be6dfb0c816f485602b9495ea820402ad4c8 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 11 Dec 2024 01:16:43 +0000 Subject: [PATCH 22/40] chore(deps): update dependency @types/react-dom to v18.3.4 --- Client/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Client/package-lock.json b/Client/package-lock.json index 92cecf187..9ab05ff4f 100644 --- a/Client/package-lock.json +++ b/Client/package-lock.json @@ -2370,9 +2370,9 @@ } }, "node_modules/@types/react-dom": { - "version": "18.3.3", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.3.tgz", - "integrity": "sha512-uTYkxTLkYp41nq/ULXyXMtkNT1vu5fXJoqad6uTNCOGat5t9cLgF4vMNLBXsTOXpdOI44XzKPY1M5RRm0bQHuw==", + "version": "18.3.4", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.4.tgz", + "integrity": "sha512-HMqjZ3RJxmfoOn3sVc0T0fO6qSrLDnUQYB+azHKdBBz1eOt0Sq4wUu2Sf1/Dt18gqhECg0fZ33tkh/6YdwrSCw==", "dev": true, "license": "MIT", "peerDependencies": { From a78d595c9f18e2a3e8486156872a881cc5bafc0d Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 11 Dec 2024 01:16:49 +0000 Subject: [PATCH 23/40] fix(deps): update dependency react-redux to v9.2.0 --- Client/package-lock.json | 30 +++++++++++++++--------------- Client/package.json | 2 +- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Client/package-lock.json b/Client/package-lock.json index 92cecf187..c1639cdeb 100644 --- a/Client/package-lock.json +++ b/Client/package-lock.json @@ -24,7 +24,7 @@ "jwt-decode": "^4.0.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-redux": "9.1.2", + "react-redux": "9.2.0", "react-router": "^6.23.0", "react-router-dom": "^6.23.1", "react-toastify": "^10.0.5", @@ -2389,9 +2389,9 @@ } }, "node_modules/@types/use-sync-external-store": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", - "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==", + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz", + "integrity": "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==", "license": "MIT" }, "node_modules/@ungap/structured-clone": { @@ -5333,17 +5333,17 @@ "license": "MIT" }, "node_modules/react-redux": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz", - "integrity": "sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz", + "integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==", "license": "MIT", "dependencies": { - "@types/use-sync-external-store": "^0.0.3", - "use-sync-external-store": "^1.0.0" + "@types/use-sync-external-store": "^0.0.6", + "use-sync-external-store": "^1.4.0" }, "peerDependencies": { - "@types/react": "^18.2.25", - "react": "^18.0", + "@types/react": "^18.2.25 || ^19", + "react": "^18.0 || ^19", "redux": "^5.0.0" }, "peerDependenciesMeta": { @@ -6163,12 +6163,12 @@ } }, "node_modules/use-sync-external-store": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", - "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz", + "integrity": "sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==", "license": "MIT", "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/victory-vendor": { diff --git a/Client/package.json b/Client/package.json index 1f4480fa2..0858e2b00 100644 --- a/Client/package.json +++ b/Client/package.json @@ -27,7 +27,7 @@ "jwt-decode": "^4.0.0", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-redux": "9.1.2", + "react-redux": "9.2.0", "react-router": "^6.23.0", "react-router-dom": "^6.23.1", "react-toastify": "^10.0.5", From d5acfd9e9ea2e5376bbe1eb84637d456b2c51378 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Wed, 11 Dec 2024 10:46:54 +0800 Subject: [PATCH 24/40] Add update trigger for pause state --- .../Pages/Monitors/Home/CurrentMonitoring/index.jsx | 4 +++- Client/src/Pages/Monitors/Home/MonitorTable/index.jsx | 8 +++++--- Client/src/Pages/Monitors/Home/actionsMenu.jsx | 7 ++++--- Client/src/Pages/Monitors/Home/index.jsx | 10 ++++++++-- 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/Client/src/Pages/Monitors/Home/CurrentMonitoring/index.jsx b/Client/src/Pages/Monitors/Home/CurrentMonitoring/index.jsx index a7f70d96e..151f47827 100644 --- a/Client/src/Pages/Monitors/Home/CurrentMonitoring/index.jsx +++ b/Client/src/Pages/Monitors/Home/CurrentMonitoring/index.jsx @@ -7,7 +7,7 @@ import useDebounce from "../../../../Utils/debounce"; import PropTypes from "prop-types"; import { Heading } from "../../../../Components/Heading"; -const CurrentMonitoring = ({ totalMonitors, monitors, isAdmin }) => { +const CurrentMonitoring = ({ totalMonitors, monitors, isAdmin, handlePause }) => { const theme = useTheme(); const [search, setSearch] = useState(""); const [isSearching, setIsSearching] = useState(false); @@ -55,12 +55,14 @@ const CurrentMonitoring = ({ totalMonitors, monitors, isAdmin }) => { filter={debouncedFilter} setIsSearching={setIsSearching} isSearching={isSearching} + handlePause={handlePause} /> ); }; CurrentMonitoring.propTypes = { + handlePause: PropTypes.func, totalMonitors: PropTypes.number, monitors: PropTypes.array, isAdmin: PropTypes.bool, diff --git a/Client/src/Pages/Monitors/Home/MonitorTable/index.jsx b/Client/src/Pages/Monitors/Home/MonitorTable/index.jsx index 9a73bd543..b12a8d487 100644 --- a/Client/src/Pages/Monitors/Home/MonitorTable/index.jsx +++ b/Client/src/Pages/Monitors/Home/MonitorTable/index.jsx @@ -32,7 +32,7 @@ import ArrowUpwardRoundedIcon from "@mui/icons-material/ArrowUpwardRounded"; import { Pagination } from "../../../Infrastructure/components/TablePagination"; -const MonitorTable = ({ isAdmin, filter, setIsSearching, isSearching }) => { +const MonitorTable = ({ isAdmin, filter, setIsSearching, isSearching, handlePause }) => { const theme = useTheme(); const navigate = useNavigate(); const dispatch = useDispatch(); @@ -48,7 +48,7 @@ const MonitorTable = ({ isAdmin, filter, setIsSearching, isSearching }) => { const [sort, setSort] = useState({}); const prevFilter = useRef(filter); - const handleActionMenuDelete = () => { + const handleRowUpdate = () => { setUpdateTrigger((prev) => !prev); }; @@ -297,7 +297,8 @@ const MonitorTable = ({ isAdmin, filter, setIsSearching, isSearching }) => { @@ -325,6 +326,7 @@ MonitorTable.propTypes = { filter: PropTypes.string, setIsSearching: PropTypes.func, isSearching: PropTypes.bool, + setMonitorUpdateTrigger: PropTypes.func, }; const MemoizedMonitorTable = memo(MonitorTable); diff --git a/Client/src/Pages/Monitors/Home/actionsMenu.jsx b/Client/src/Pages/Monitors/Home/actionsMenu.jsx index f40092b11..e1be7fbf5 100644 --- a/Client/src/Pages/Monitors/Home/actionsMenu.jsx +++ b/Client/src/Pages/Monitors/Home/actionsMenu.jsx @@ -14,7 +14,7 @@ import Settings from "../../../assets/icons/settings-bold.svg?react"; import PropTypes from "prop-types"; import Dialog from "../../../Components/Dialog"; -const ActionsMenu = ({ monitor, isAdmin, updateCallback }) => { +const ActionsMenu = ({ monitor, isAdmin, updateRowCallback, pauseCallback }) => { const [anchorEl, setAnchorEl] = useState(null); const [actions, setActions] = useState({}); const [isOpen, setIsOpen] = useState(false); @@ -47,9 +47,9 @@ const ActionsMenu = ({ monitor, isAdmin, updateCallback }) => { pauseUptimeMonitor({ authToken, monitorId: monitor._id }) ); if (pauseUptimeMonitor.fulfilled.match(action)) { - updateCallback(); const state = action?.payload?.data.isActive === false ? "paused" : "resumed"; createToast({ body: `Monitor ${state} successfully.` }); + pauseCallback(); } else { throw new Error(action?.error?.message ?? "Failed to pause monitor."); } @@ -219,7 +219,8 @@ ActionsMenu.propTypes = { isActive: PropTypes.bool, }).isRequired, isAdmin: PropTypes.bool, - updateCallback: PropTypes.func, + updateRowCallback: PropTypes.func, + pauseCallback: PropTypes.func, }; export default ActionsMenu; diff --git a/Client/src/Pages/Monitors/Home/index.jsx b/Client/src/Pages/Monitors/Home/index.jsx index 345a0a88e..4c48bde3a 100644 --- a/Client/src/Pages/Monitors/Home/index.jsx +++ b/Client/src/Pages/Monitors/Home/index.jsx @@ -1,5 +1,5 @@ import "./index.css"; -import { useEffect } from "react"; +import { useEffect, useState } from "react"; import { useSelector, useDispatch } from "react-redux"; import { getUptimeMonitorsByTeamId } from "../../../Features/UptimeMonitors/uptimeMonitorsSlice"; import { useNavigate } from "react-router-dom"; @@ -19,10 +19,15 @@ const Monitors = ({ isAdmin }) => { const monitorState = useSelector((state) => state.uptimeMonitors); const authState = useSelector((state) => state.auth); const dispatch = useDispatch({}); + const [monitorUpdateTrigger, setMonitorUpdateTrigger] = useState(false); + + const handlePause = () => { + setMonitorUpdateTrigger((prev) => !prev); + }; useEffect(() => { dispatch(getUptimeMonitorsByTeamId(authState.authToken)); - }, [authState.authToken, dispatch]); + }, [authState.authToken, dispatch, monitorUpdateTrigger]); //TODO bring fetching to this component, like on pageSpeed @@ -92,6 +97,7 @@ const Monitors = ({ isAdmin }) => { isAdmin={isAdmin} monitors={monitorState.monitorsSummary.monitors} totalMonitors={totalMonitors} + handlePause={handlePause} /> )} From d17dd8f8b62bb6727868855d6f032939eaae9174 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 11 Dec 2024 02:52:14 +0000 Subject: [PATCH 25/40] fix(deps): update dependency @reduxjs/toolkit to v2.5.0 --- Client/package-lock.json | 10 +++++----- Client/package.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Client/package-lock.json b/Client/package-lock.json index 4b1f5b936..65ea3a588 100644 --- a/Client/package-lock.json +++ b/Client/package-lock.json @@ -17,7 +17,7 @@ "@mui/x-charts": "^7.5.1", "@mui/x-data-grid": "7.23.1", "@mui/x-date-pickers": "7.23.1", - "@reduxjs/toolkit": "2.4.0", + "@reduxjs/toolkit": "2.5.0", "axios": "^1.7.4", "dayjs": "1.11.13", "joi": "17.13.3", @@ -1679,9 +1679,9 @@ } }, "node_modules/@reduxjs/toolkit": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.4.0.tgz", - "integrity": "sha512-wJZEuSKj14tvNfxiIiJws0tQN77/rDqucBq528ApebMIRHyWpCanJVQRxQ8WWZC19iCDKxDsGlbAir3F1layxA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.5.0.tgz", + "integrity": "sha512-awNe2oTodsZ6LmRqmkFhtb/KH03hUhxOamEQy411m3Njj3BbFvoBovxo4Q1cBWnV1ErprVj9MlF0UPXkng0eyg==", "license": "MIT", "dependencies": { "immer": "^10.0.3", @@ -1690,7 +1690,7 @@ "reselect": "^5.1.0" }, "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18", + "react": "^16.9.0 || ^17.0.0 || ^18 || ^19", "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" }, "peerDependenciesMeta": { diff --git a/Client/package.json b/Client/package.json index 0858e2b00..cece1c8e3 100644 --- a/Client/package.json +++ b/Client/package.json @@ -20,7 +20,7 @@ "@mui/x-charts": "^7.5.1", "@mui/x-data-grid": "7.23.1", "@mui/x-date-pickers": "7.23.1", - "@reduxjs/toolkit": "2.4.0", + "@reduxjs/toolkit": "2.5.0", "axios": "^1.7.4", "dayjs": "1.11.13", "joi": "17.13.3", From d9932774631cf06c2365877af01cdd84c2e699be Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Wed, 11 Dec 2024 11:00:50 +0800 Subject: [PATCH 26/40] Remove console log statement --- Client/src/Pages/Auth/Register/StepThree/index.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/Client/src/Pages/Auth/Register/StepThree/index.jsx b/Client/src/Pages/Auth/Register/StepThree/index.jsx index 760587b7b..4f565c528 100644 --- a/Client/src/Pages/Auth/Register/StepThree/index.jsx +++ b/Client/src/Pages/Auth/Register/StepThree/index.jsx @@ -31,7 +31,6 @@ function StepThree({ onSubmit, onBack }) { }, []); const { handleChange, feedbacks, form, errors } = useValidatePassword(); - console.log(errors); return ( <> Date: Wed, 11 Dec 2024 03:03:39 +0000 Subject: [PATCH 27/40] chore(deps): update dependency @types/react to v18.3.16 --- Client/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Client/package-lock.json b/Client/package-lock.json index 65ea3a588..135c3aab7 100644 --- a/Client/package-lock.json +++ b/Client/package-lock.json @@ -2360,9 +2360,9 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "18.3.15", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.15.tgz", - "integrity": "sha512-XQzbwkCwrsabawgWsvDDwsDTRuH1sf6Uj1fnFYoG03ZXfT54/aBvlylKR9ix70pXAtTn8dFzj358zVcZN4m83w==", + "version": "18.3.16", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.16.tgz", + "integrity": "sha512-oh8AMIC4Y2ciKufU8hnKgs+ufgbA/dhPTACaZPM86AbwX9QwnFtSoPWEeRUj8fge+v6kFt78BXcDhAU1SrrAsw==", "license": "MIT", "dependencies": { "@types/prop-types": "*", From bd880798760391714c15c1ccbee512dc5e0f0e41 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 11 Dec 2024 03:11:43 +0000 Subject: [PATCH 28/40] chore(deps): update dependency @types/react-dom to v18.3.5 --- Client/package-lock.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Client/package-lock.json b/Client/package-lock.json index 135c3aab7..ee7e2d3b1 100644 --- a/Client/package-lock.json +++ b/Client/package-lock.json @@ -2370,9 +2370,9 @@ } }, "node_modules/@types/react-dom": { - "version": "18.3.4", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.4.tgz", - "integrity": "sha512-HMqjZ3RJxmfoOn3sVc0T0fO6qSrLDnUQYB+azHKdBBz1eOt0Sq4wUu2Sf1/Dt18gqhECg0fZ33tkh/6YdwrSCw==", + "version": "18.3.5", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.5.tgz", + "integrity": "sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==", "dev": true, "license": "MIT", "peerDependencies": { From c11726c920754b7474e673cd6a070a7e5ae5828d Mon Sep 17 00:00:00 2001 From: Indhu Date: Wed, 11 Dec 2024 15:03:43 +0530 Subject: [PATCH 29/40] Changed text from Usage --> usage in UI --- Client/src/Pages/Infrastructure/Details/index.jsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Client/src/Pages/Infrastructure/Details/index.jsx b/Client/src/Pages/Infrastructure/Details/index.jsx index 06fb1296a..7c5da5177 100644 --- a/Client/src/Pages/Infrastructure/Details/index.jsx +++ b/Client/src/Pages/Infrastructure/Details/index.jsx @@ -283,7 +283,7 @@ const InfrastructureDetails = () => { { type: "memory", value: decimalToPercentage(memoryUsagePercent), - heading: "Memory Usage", + heading: "Memory usage", metricOne: "Used", valueOne: formatBytes(memoryUsedBytes), metricTwo: "Total", @@ -292,7 +292,7 @@ const InfrastructureDetails = () => { { type: "cpu", value: decimalToPercentage(cpuUsagePercent), - heading: "CPU Usage", + heading: "CPU usage", metricOne: "Cores", valueOne: cpuPhysicalCores ?? 0, metricTwo: "Frequency", @@ -364,7 +364,7 @@ const InfrastructureDetails = () => { heading: "Memory usage", strokeColor: theme.palette.primary.main, gradientStartColor: theme.palette.primary.main, - yLabel: "Memory Usage", + yLabel: "Memory usage", yDomain: [0, 1], yTick: , xTick: , @@ -372,7 +372,7 @@ const InfrastructureDetails = () => { ), }, @@ -383,7 +383,7 @@ const InfrastructureDetails = () => { heading: "CPU usage", strokeColor: theme.palette.success.main, gradientStartColor: theme.palette.success.main, - yLabel: "CPU Usage", + yLabel: "CPU usage", yDomain: [0, 1], yTick: , xTick: , @@ -391,7 +391,7 @@ const InfrastructureDetails = () => { ), }, From 99c15438259d0998ab634a8a01bd71fbbba2aa54 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Wed, 11 Dec 2024 15:39:05 +0000 Subject: [PATCH 30/40] fix(deps): update material-ui monorepo --- Client/package-lock.json | 120 +++++++++++++++++++++------------------ Client/package.json | 6 +- 2 files changed, 69 insertions(+), 57 deletions(-) diff --git a/Client/package-lock.json b/Client/package-lock.json index 135c3aab7..12c8ef116 100644 --- a/Client/package-lock.json +++ b/Client/package-lock.json @@ -11,9 +11,9 @@ "@emotion/react": "^11.13.3", "@emotion/styled": "^11.13.0", "@fontsource/roboto": "^5.0.13", - "@mui/icons-material": "6.1.10", - "@mui/lab": "6.0.0-beta.18", - "@mui/material": "6.1.10", + "@mui/icons-material": "6.2.0", + "@mui/lab": "6.0.0-beta.19", + "@mui/material": "6.2.0", "@mui/x-charts": "^7.5.1", "@mui/x-data-grid": "7.23.1", "@mui/x-date-pickers": "7.23.1", @@ -1071,15 +1071,15 @@ } }, "node_modules/@mui/base": { - "version": "5.0.0-beta.64", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.64.tgz", - "integrity": "sha512-nu663PoZs/Pee0fkPYkjUADfT+AAi2QWvvHghDhLeSx8sa3i+GGaOoUsFmB4CPlyYqWfq9hRGA7H1T3d6VrGgw==", + "version": "5.0.0-beta.66", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.66.tgz", + "integrity": "sha512-1SzcNbtIms0o/Dx+599B6QbvR5qUMBUjwc2Gs47h1HsF7RcEFXxqaq7zrWkIWbvGctIIPx0j330oGx/SkF+UmA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.26.0", "@floating-ui/react-dom": "^2.1.1", "@mui/types": "^7.2.19", - "@mui/utils": "^6.1.10", + "@mui/utils": "^6.2.0", "@popperjs/core": "^2.11.8", "clsx": "^2.1.1", "prop-types": "^15.8.1" @@ -1092,9 +1092,9 @@ "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "@types/react": "^17.0.0 || ^18.0.0", - "react": "^17.0.0 || ^18.0.0", - "react-dom": "^17.0.0 || ^18.0.0" + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -1103,9 +1103,9 @@ } }, "node_modules/@mui/core-downloads-tracker": { - "version": "6.1.10", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.1.10.tgz", - "integrity": "sha512-LY5wdiLCBDY7u+Od8UmFINZFGN/5ZU90fhAslf/ZtfP+5RhuY45f679pqYIxe0y54l6Gkv9PFOc8Cs10LDTBYg==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.2.0.tgz", + "integrity": "sha512-Nn5PSkUqbDrvezpiiiYZiAbX4SFEiy3CbikUL6pWOXEUsq+L1j50OOyyUIHpaX2Hr+5V5UxTh+fPeC4nsGNhdw==", "license": "MIT", "funding": { "type": "opencollective", @@ -1113,9 +1113,9 @@ } }, "node_modules/@mui/icons-material": { - "version": "6.1.10", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.1.10.tgz", - "integrity": "sha512-G6P1BCSt6EQDcKca47KwvKjlqgOXFbp2I3oWiOlFgKYTANBH89yk7ttMQ5ysqNxSYAB+4TdM37MlPYp4+FkVrQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.2.0.tgz", + "integrity": "sha512-WR1EEhGOSvxAsoTSzWZBlrWFjul8wziDrII4rC3PvMBHhBYBqEc2n/0aamfFbwkH5EiYb96aqc6kYY6tB310Sw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.26.0" @@ -1128,7 +1128,7 @@ "url": "https://opencollective.com/mui-org" }, "peerDependencies": { - "@mui/material": "^6.1.10", + "@mui/material": "^6.2.0", "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0" }, @@ -1139,16 +1139,16 @@ } }, "node_modules/@mui/lab": { - "version": "6.0.0-beta.18", - "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-6.0.0-beta.18.tgz", - "integrity": "sha512-O7jNn36Jb0530NOZeFLj33RGB57x3kfyiYOaj5sL/j/Pmq9T0tonKMkoW/AUCucmBa7RuEzEYMyqBpfqminebA==", + "version": "6.0.0-beta.19", + "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-6.0.0-beta.19.tgz", + "integrity": "sha512-t7iub8kjpLdA5uDGwGnNRjtGc1vYEUnDwSROjKrnYqjOlCQhBajFa8uoQtaST6jE/VEk6cxpDMnN5MalC6YpCg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.26.0", - "@mui/base": "5.0.0-beta.64", - "@mui/system": "^6.1.10", + "@mui/base": "5.0.0-beta.66", + "@mui/system": "^6.2.0", "@mui/types": "^7.2.19", - "@mui/utils": "^6.1.10", + "@mui/utils": "^6.2.0", "clsx": "^2.1.1", "prop-types": "^15.8.1" }, @@ -1162,8 +1162,8 @@ "peerDependencies": { "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", - "@mui/material": "^6.1.10", - "@mui/material-pigment-css": "^6.1.10", + "@mui/material": "^6.2.0", + "@mui/material-pigment-css": "^6.2.0", "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" @@ -1184,22 +1184,22 @@ } }, "node_modules/@mui/material": { - "version": "6.1.10", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.1.10.tgz", - "integrity": "sha512-txnwYObY4N9ugv5T2n5h1KcbISegZ6l65w1/7tpSU5OB6MQCU94YkP8n/3slDw2KcEfRk4+4D8EUGfhSPMODEQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.2.0.tgz", + "integrity": "sha512-7FXXUPIyYzP02a7GvqwJ7ocmdP+FkvLvmy/uxG1TDmTlsr8nEClQp75uxiVznJqAY/jJy4d+Rj/fNWNxwidrYQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.26.0", - "@mui/core-downloads-tracker": "^6.1.10", - "@mui/system": "^6.1.10", + "@mui/core-downloads-tracker": "^6.2.0", + "@mui/system": "^6.2.0", "@mui/types": "^7.2.19", - "@mui/utils": "^6.1.10", + "@mui/utils": "^6.2.0", "@popperjs/core": "^2.11.8", "@types/react-transition-group": "^4.4.11", "clsx": "^2.1.1", "csstype": "^3.1.3", "prop-types": "^15.8.1", - "react-is": "^18.3.1", + "react-is": "^19.0.0", "react-transition-group": "^4.4.5" }, "engines": { @@ -1212,7 +1212,7 @@ "peerDependencies": { "@emotion/react": "^11.5.0", "@emotion/styled": "^11.3.0", - "@mui/material-pigment-css": "^6.1.10", + "@mui/material-pigment-css": "^6.2.0", "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" @@ -1232,14 +1232,20 @@ } } }, + "node_modules/@mui/material/node_modules/react-is": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.0.0.tgz", + "integrity": "sha512-H91OHcwjZsbq3ClIDHMzBShc1rotbfACdWENsmEf0IFvZ3FgGPtdHMcsv45bQ1hAbgdfiA8SnxTKfDS+x/8m2g==", + "license": "MIT" + }, "node_modules/@mui/private-theming": { - "version": "6.1.10", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.1.10.tgz", - "integrity": "sha512-DqgsH0XFEweeG3rQfVkqTkeXcj/E76PGYWag8flbPdV8IYdMo+DfVdFlZK8JEjsaIVD2Eu1kJg972XnH5pfnBQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.2.0.tgz", + "integrity": "sha512-lYd2MrVddhentF1d/cMXKnwlDjr/shbO3A2eGq22PCYUoZaqtAGZMc0U86KnJ/Sh5YzNYePqTOaaowAN8Qea8A==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.26.0", - "@mui/utils": "^6.1.10", + "@mui/utils": "^6.2.0", "prop-types": "^15.8.1" }, "engines": { @@ -1260,9 +1266,9 @@ } }, "node_modules/@mui/styled-engine": { - "version": "6.1.10", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.1.10.tgz", - "integrity": "sha512-+NV9adKZYhslJ270iPjf2yzdVJwav7CIaXcMlPSi1Xy1S/zRe5xFgZ6BEoMdmGRpr34lIahE8H1acXP2myrvRw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.2.0.tgz", + "integrity": "sha512-rV4YCu6kcCjMnHFXU/tQcL6XfYVfFVR8n3ZVNGnk2rpXnt/ctOPJsF+eUQuhkHciueLVKpI06+umr1FxWWhVmQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.26.0", @@ -1294,16 +1300,16 @@ } }, "node_modules/@mui/system": { - "version": "6.1.10", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.1.10.tgz", - "integrity": "sha512-5YNIqxETR23SIkyP7MY2fFnXmplX/M4wNi2R+10AVRd3Ub+NLctWY/Vs5vq1oAMF0eSDLhRTGUjaUe+IGSfWqg==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.2.0.tgz", + "integrity": "sha512-DCeqev9Cd4f4pm3O1lqSGW/DIHHBG6ZpqMX9iIAvN4asYv+pPWv2/lKov9kWk5XThhxFnGSv93SRNE1kNRRg5Q==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.26.0", - "@mui/private-theming": "^6.1.10", - "@mui/styled-engine": "^6.1.10", + "@mui/private-theming": "^6.2.0", + "@mui/styled-engine": "^6.2.0", "@mui/types": "^7.2.19", - "@mui/utils": "^6.1.10", + "@mui/utils": "^6.2.0", "clsx": "^2.1.1", "csstype": "^3.1.3", "prop-types": "^15.8.1" @@ -1348,17 +1354,17 @@ } }, "node_modules/@mui/utils": { - "version": "6.1.10", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.1.10.tgz", - "integrity": "sha512-1ETuwswGjUiAf2dP9TkBy8p49qrw2wXa+RuAjNTRE5+91vtXJ1HKrs7H9s8CZd1zDlQVzUcUAPm9lpQwF5ogTw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.2.0.tgz", + "integrity": "sha512-77CaFJi+OIi2SjbPwCis8z5DXvE0dfx9hBz5FguZHt1VYFlWEPCWTHcMsQCahSErnfik5ebLsYK8+D+nsjGVfw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.26.0", "@mui/types": "^7.2.19", - "@types/prop-types": "^15.7.13", + "@types/prop-types": "^15.7.14", "clsx": "^2.1.1", "prop-types": "^15.8.1", - "react-is": "^18.3.1" + "react-is": "^19.0.0" }, "engines": { "node": ">=14.0.0" @@ -1377,6 +1383,12 @@ } } }, + "node_modules/@mui/utils/node_modules/react-is": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.0.0.tgz", + "integrity": "sha512-H91OHcwjZsbq3ClIDHMzBShc1rotbfACdWENsmEf0IFvZ3FgGPtdHMcsv45bQ1hAbgdfiA8SnxTKfDS+x/8m2g==", + "license": "MIT" + }, "node_modules/@mui/x-charts": { "version": "7.23.1", "resolved": "https://registry.npmjs.org/@mui/x-charts/-/x-charts-7.23.1.tgz", @@ -2354,9 +2366,9 @@ "license": "MIT" }, "node_modules/@types/prop-types": { - "version": "15.7.13", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", - "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==", + "version": "15.7.14", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", + "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", "license": "MIT" }, "node_modules/@types/react": { diff --git a/Client/package.json b/Client/package.json index cece1c8e3..a6645fff1 100644 --- a/Client/package.json +++ b/Client/package.json @@ -14,9 +14,9 @@ "@emotion/react": "^11.13.3", "@emotion/styled": "^11.13.0", "@fontsource/roboto": "^5.0.13", - "@mui/icons-material": "6.1.10", - "@mui/lab": "6.0.0-beta.18", - "@mui/material": "6.1.10", + "@mui/icons-material": "6.2.0", + "@mui/lab": "6.0.0-beta.19", + "@mui/material": "6.2.0", "@mui/x-charts": "^7.5.1", "@mui/x-data-grid": "7.23.1", "@mui/x-date-pickers": "7.23.1", From b41fe1e70ef828edb58997464237e037cf55947a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mert=20=C5=9Ei=C5=9Fmano=C4=9Flu?= Date: Thu, 12 Dec 2024 00:31:27 +0300 Subject: [PATCH 31/40] fix: update demo server URLs to 'checkmate-demo.bluewavelabs.ca' --- Docker/dist/nginx/conf.d/default.conf | 2 +- Docker/test/docker-compose.yaml | 2 +- Docker/test/prod/docker-compose.yaml | 2 +- Docker/test/prod/nginx/conf.d/default.conf | 8 ++++---- Server/openapi.json | 2 +- guides/README.md | 2 +- guides/developers-guide/general-project-structure.md | 2 +- guides/users-guide/quickstart.md | 2 +- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Docker/dist/nginx/conf.d/default.conf b/Docker/dist/nginx/conf.d/default.conf index a3ad90ead..0592dcd06 100644 --- a/Docker/dist/nginx/conf.d/default.conf +++ b/Docker/dist/nginx/conf.d/default.conf @@ -2,7 +2,7 @@ server { listen 80; listen [::]:80; - server_name uptime-demo.bluewavelabs.ca; + server_name checkmate-demo.bluewavelabs.ca; server_tokens off; location /.well-known/acme-challenge/ { diff --git a/Docker/test/docker-compose.yaml b/Docker/test/docker-compose.yaml index 24e6d1165..e262ef1a2 100644 --- a/Docker/test/docker-compose.yaml +++ b/Docker/test/docker-compose.yaml @@ -2,7 +2,7 @@ services: client: image: uptime_client:latest environment: - UPTIME_APP_API_BASE_URL: "https://uptime-demo.bluewavelabs.ca/api/v1" + UPTIME_APP_API_BASE_URL: "https://checkmate-demo.bluewavelabs.ca/api/v1" ports: - "80:80" - "443:443" diff --git a/Docker/test/prod/docker-compose.yaml b/Docker/test/prod/docker-compose.yaml index 24e6d1165..e262ef1a2 100644 --- a/Docker/test/prod/docker-compose.yaml +++ b/Docker/test/prod/docker-compose.yaml @@ -2,7 +2,7 @@ services: client: image: uptime_client:latest environment: - UPTIME_APP_API_BASE_URL: "https://uptime-demo.bluewavelabs.ca/api/v1" + UPTIME_APP_API_BASE_URL: "https://checkmate-demo.bluewavelabs.ca/api/v1" ports: - "80:80" - "443:443" diff --git a/Docker/test/prod/nginx/conf.d/default.conf b/Docker/test/prod/nginx/conf.d/default.conf index 5f37d48b7..98e1bd97d 100644 --- a/Docker/test/prod/nginx/conf.d/default.conf +++ b/Docker/test/prod/nginx/conf.d/default.conf @@ -2,7 +2,7 @@ server { listen 80; listen [::]:80; - server_name uptime-demo.bluewavelabs.ca; + server_name checkmate-demo.bluewavelabs.ca; server_tokens off; location /.well-known/acme-challenge/ { @@ -38,10 +38,10 @@ server { listen 443 default_server ssl http2; listen [::]:443 ssl http2; - server_name uptime-demo.bluewavelabs.ca; + server_name checkmate-demo.bluewavelabs.ca; - ssl_certificate /etc/nginx/ssl/live/uptime-demo.bluewavelabs.ca/fullchain.pem; - ssl_certificate_key /etc/nginx/ssl/live/uptime-demo.bluewavelabs.ca/privkey.pem; + ssl_certificate /etc/nginx/ssl/live/checkmate-demo.bluewavelabs.ca/fullchain.pem; + ssl_certificate_key /etc/nginx/ssl/live/checkmate-demo.bluewavelabs.ca/privkey.pem; location / { root /usr/share/nginx/html; diff --git a/Server/openapi.json b/Server/openapi.json index 7ba2fc222..662efb19b 100644 --- a/Server/openapi.json +++ b/Server/openapi.json @@ -44,7 +44,7 @@ } }, { - "url": "https://uptime-demo.bluewavelabs.ca/{API_PATH}", + "url": "https://checkmate-demo.bluewavelabs.ca/{API_PATH}", "description": "Bluewave Demo Server", "variables": { "PORT": { diff --git a/guides/README.md b/guides/README.md index 3de3c7e59..841bfe37a 100644 --- a/guides/README.md +++ b/guides/README.md @@ -26,7 +26,7 @@ It regularly checks whether a server/website is accessible and performs optimall ## Demo -We have a [demo](https://uptime-demo.bluewavelabs.ca/) where you can test how the Uptime Manager works. The username is [uptimedemo@demo.com](mailto:uptimedemo@demo.com) and the password is Demouser1! +We have a [demo](https://checkmate-demo.bluewavelabs.ca/) where you can test how the Uptime Manager works. The username is [uptimedemo@demo.com](mailto:uptimedemo@demo.com) and the password is Demouser1! ## Questions & ideas diff --git a/guides/developers-guide/general-project-structure.md b/guides/developers-guide/general-project-structure.md index da274f0f7..8f62c86c4 100644 --- a/guides/developers-guide/general-project-structure.md +++ b/guides/developers-guide/general-project-structure.md @@ -20,7 +20,7 @@ When making changes to the Front end please always keep future developers in min ### Back end -The back end of this project is not especially complex and is built around Express. The back end is a RESTful API and the [documentation can be found here](https://uptime-demo.bluewavelabs.ca/api-docs). +The back end of this project is not especially complex and is built around Express. The back end is a RESTful API and the [documentation can be found here](https://checkmate-demo.bluewavelabs.ca/api-docs). The application consists of several main conceptual models: diff --git a/guides/users-guide/quickstart.md b/guides/users-guide/quickstart.md index 57fde99b6..506cdb178 100644 --- a/guides/users-guide/quickstart.md +++ b/guides/users-guide/quickstart.md @@ -201,7 +201,7 @@ Our API is documented in accordance with the [OpenAPI spec](https://www.openapis You can see the documentation on your local development server at http://localhost:{port}/api-docs -You can also view the documentation on our demo server at [https://uptime-demo.bluewavelabs.ca/api-docs](https://uptime-demo.bluewavelabs.ca/api-docs) +You can also view the documentation on our demo server at [https://checkmate-demo.bluewavelabs.ca/api-docs](https://checkmate-demo.bluewavelabs.ca/api-docs) ### Error handling From 8bf254ee492384dd1ee0eb65208c1455fd98c020 Mon Sep 17 00:00:00 2001 From: Caio Cabral Date: Wed, 11 Dec 2024 21:01:27 -0500 Subject: [PATCH 32/40] refactor: reverting unused function in infrastructure page --- Client/src/Pages/Infrastructure/index.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Client/src/Pages/Infrastructure/index.jsx b/Client/src/Pages/Infrastructure/index.jsx index ff6e5a9a9..084d7732f 100644 --- a/Client/src/Pages/Infrastructure/index.jsx +++ b/Client/src/Pages/Infrastructure/index.jsx @@ -203,7 +203,7 @@ function Infrastructure() { diff --git a/Client/src/Pages/Monitors/Home/index.jsx b/Client/src/Pages/Monitors/Home/index.jsx index 4c48bde3a..167fd1e67 100644 --- a/Client/src/Pages/Monitors/Home/index.jsx +++ b/Client/src/Pages/Monitors/Home/index.jsx @@ -61,7 +61,7 @@ const Monitors = ({ isAdmin }) => { onClick={() => { navigate("/monitors/create"); }} - sx={{ fontWeight: 500 }} + sx={{ fontWeight: 500, whiteSpace: "nowrap" }} > Create monitor diff --git a/Client/src/Pages/PageSpeed/index.jsx b/Client/src/Pages/PageSpeed/index.jsx index b4056ffce..9b84b0286 100644 --- a/Client/src/Pages/PageSpeed/index.jsx +++ b/Client/src/Pages/PageSpeed/index.jsx @@ -92,7 +92,7 @@ const PageSpeed = ({ isAdmin }) => { variant="contained" color="primary" onClick={() => navigate("/pagespeed/create")} - sx={{ whiteSpace: "nowrap" }} + sx={{ fontWeight: 500, whiteSpace: "nowrap" }} > Create new From f57b9a0fa1d43578724f5aa3aba3aa5b049d2870 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Thu, 12 Dec 2024 12:26:24 +0800 Subject: [PATCH 34/40] remove daterange from dependency array --- Client/src/Pages/Uptime/Details/index.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Client/src/Pages/Uptime/Details/index.jsx b/Client/src/Pages/Uptime/Details/index.jsx index 60b67fdc8..ac89041ec 100644 --- a/Client/src/Pages/Uptime/Details/index.jsx +++ b/Client/src/Pages/Uptime/Details/index.jsx @@ -100,7 +100,7 @@ const DetailsPage = ({ isAdmin }) => { } }; fetchCertificate(); - }, [authToken, monitorId, monitor, dateRange, uiTimezone, dateFormat]); + }, [authToken, monitorId, monitor, uiTimezone, dateFormat]); const splitDuration = (duration) => { const { time, format } = formatDurationSplit(duration); From 3840b3ec2dfbb19f157fe30b1a170235e20d4a72 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Thu, 12 Dec 2024 12:38:43 +0800 Subject: [PATCH 35/40] remove log statement --- Client/src/Pages/Infrastructure/CreateMonitor/index.jsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/Client/src/Pages/Infrastructure/CreateMonitor/index.jsx b/Client/src/Pages/Infrastructure/CreateMonitor/index.jsx index ff05b9ef2..74c257bae 100644 --- a/Client/src/Pages/Infrastructure/CreateMonitor/index.jsx +++ b/Client/src/Pages/Infrastructure/CreateMonitor/index.jsx @@ -148,8 +148,6 @@ const CreateInfrastructureMonitor = () => { thresholds, }; - console.log(form); - const action = await dispatch( createInfrastructureMonitor({ authToken, monitor: form }) ); From e33091f1821db8b5a8fe1a3cdc2e45f8775fffbd Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Thu, 12 Dec 2024 12:42:32 +0800 Subject: [PATCH 36/40] remove --- Client/src/Pages/Infrastructure/CreateMonitor/index.jsx | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/Client/src/Pages/Infrastructure/CreateMonitor/index.jsx b/Client/src/Pages/Infrastructure/CreateMonitor/index.jsx index 74c257bae..39a07c530 100644 --- a/Client/src/Pages/Infrastructure/CreateMonitor/index.jsx +++ b/Client/src/Pages/Infrastructure/CreateMonitor/index.jsx @@ -185,10 +185,6 @@ const CreateInfrastructureMonitor = () => { }); }; - const handleBlur = (event) => { - console.log("handleBlur", event); - }; - const handleNotifications = (event, type) => { const { value } = event.target; let notifications = [...infrastructureMonitor.notifications]; @@ -340,7 +336,6 @@ const CreateInfrastructureMonitor = () => { )} value={user?.email} onChange={(event) => handleNotifications(event, "email")} - onBlur={handleBlur} /> @@ -372,7 +367,6 @@ const CreateInfrastructureMonitor = () => { fieldName={METRIC_PREFIX + metric} fieldValue={infrastructureMonitor[METRIC_PREFIX + metric]} onFieldChange={handleChange} - onFieldBlur={handleBlur} alertUnit={metric == "temperature" ? "°C" : "%"} /> ); @@ -404,7 +398,7 @@ const CreateInfrastructureMonitor = () => { label="Check frequency" value={infrastructureMonitor.interval || 15} onChange={handleChange} - onBlur={handleBlur} + onBlur={} items={SELECT_VALUES} /> From 2145be5160cd1cb33a5f93a7befa2e5c4753a64f Mon Sep 17 00:00:00 2001 From: "Gorkem Cetin (BWL)" <167266851+gorkem-bwl@users.noreply.github.com> Date: Thu, 12 Dec 2024 00:13:10 -0500 Subject: [PATCH 37/40] Minor update to pull_request_template.md --- .github/PULL_REQUEST_TEMPLATE/pull_request_template.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md b/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md index 3d9b31e2d..d54352dac 100644 --- a/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +++ b/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md @@ -1,6 +1,6 @@ ## Describe your changes -Provide a brief description of the changes you’ve made and their purpose. +Briefly describe the changes you made and their purpose. ## Issue number @@ -11,4 +11,10 @@ Mention the issue number(s) this PR addresses (e.g., #123). - [ ] I have performed a self-review of my code. - [ ] I have included the issue # in the PR. - [ ] I have labelled the PR correctly. -- [ ] My PR is granular and targeted to one specific feature only. +- [ ] I didn't use any hardcoded values (otherwise it will not scale, and will make it difficult to maintain consistency across the application). +- [ ] I made sure font sizes, color choices etc are all referenced from the theme. +- [ ] My PR is granular and targeted to one specific feature. +- [ ] I took a screenshot or a video and attached to this PR if there is a UI change. + + + From 52234531db69ed2ae544158f2a39b824544c82ba Mon Sep 17 00:00:00 2001 From: "Gorkem Cetin (BWL)" <167266851+gorkem-bwl@users.noreply.github.com> Date: Thu, 12 Dec 2024 00:17:25 -0500 Subject: [PATCH 38/40] Update pull_request_template.md --- .github/PULL_REQUEST_TEMPLATE/pull_request_template.md | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md b/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md index d54352dac..55d456545 100644 --- a/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +++ b/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md @@ -11,6 +11,7 @@ Mention the issue number(s) this PR addresses (e.g., #123). - [ ] I have performed a self-review of my code. - [ ] I have included the issue # in the PR. - [ ] I have labelled the PR correctly. +- [ ] The issue I am working on is assigned to me. - [ ] I didn't use any hardcoded values (otherwise it will not scale, and will make it difficult to maintain consistency across the application). - [ ] I made sure font sizes, color choices etc are all referenced from the theme. - [ ] My PR is granular and targeted to one specific feature. From 7d33ac11b5588568d28a634fbe6c297310a9cafa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=20D=C3=B6rr?= Date: Thu, 12 Dec 2024 06:33:32 +0100 Subject: [PATCH 39/40] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index aec89be80..ca3c19c95 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,7 @@ We've just launched our [Discussions](https://github.com/bluewave-labs/bluewave- ## 🤝 Contributing -We pride ourselves on building strong connections with contributors at every level. Despite being a young project, Checkmate has already earned 600+ stars and attracted 30+ contributors from around the globe. So, don’t hold back — jump in, contribute and learn with us! +We pride ourselves on building strong connections with contributors at every level. Despite being a young project, Checkmate has already earned 1300+ stars and attracted 30+ contributors from around the globe. So, don’t hold back — jump in, contribute and learn with us! Here's how you can contribute: From dc46a0c2b245eba1f4717e81b9753e7801121b8d Mon Sep 17 00:00:00 2001 From: Caio Cabral Date: Thu, 12 Dec 2024 10:23:36 -0500 Subject: [PATCH 40/40] hotfix: imports --- Client/src/Pages/Infrastructure/CreateMonitor/index.jsx | 1 - Client/src/Pages/PageSpeed/CreatePageSpeed/index.jsx | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/Client/src/Pages/Infrastructure/CreateMonitor/index.jsx b/Client/src/Pages/Infrastructure/CreateMonitor/index.jsx index df7829930..56162d2a5 100644 --- a/Client/src/Pages/Infrastructure/CreateMonitor/index.jsx +++ b/Client/src/Pages/Infrastructure/CreateMonitor/index.jsx @@ -397,7 +397,6 @@ const CreateInfrastructureMonitor = () => { label="Check frequency" value={infrastructureMonitor.interval || 15} onChange={handleChange} - onBlur={} items={SELECT_VALUES} /> diff --git a/Client/src/Pages/PageSpeed/CreatePageSpeed/index.jsx b/Client/src/Pages/PageSpeed/CreatePageSpeed/index.jsx index ccab3442f..30592e2eb 100644 --- a/Client/src/Pages/PageSpeed/CreatePageSpeed/index.jsx +++ b/Client/src/Pages/PageSpeed/CreatePageSpeed/index.jsx @@ -20,7 +20,7 @@ import LoadingButton from "@mui/lab/LoadingButton"; import Breadcrumbs from "../../../Components/Breadcrumbs"; import TextInput from "../../../Components/Inputs/TextInput"; import { HttpAdornment } from "../../../Components/Inputs/TextInput/Adornments"; -import { ConfigBox } from "../../Monitors/styled"; +import { ConfigBox } from "../../Uptime/styled"; import { createToast } from "../../../Utils/toastUtils"; import Radio from "../../../Components/Inputs/Radio";