diff --git a/Client/src/Components/TabPanels/Account/ProfilePanel.jsx b/Client/src/Components/TabPanels/Account/ProfilePanel.jsx index 05f3d8412..355b09ca6 100644 --- a/Client/src/Components/TabPanels/Account/ProfilePanel.jsx +++ b/Client/src/Components/TabPanels/Account/ProfilePanel.jsx @@ -352,7 +352,7 @@ const ProfilePanel = () => { top: "50%", left: "50%", transform: "translate(-50%, -50%)", - width: 400, + width: 500, bgcolor: "white", border: "solid 1px #f2f2f2", borderRadius: `${theme.shape.borderRadius}px`, diff --git a/Client/src/Pages/Monitors/Configure/index.jsx b/Client/src/Pages/Monitors/Configure/index.jsx index 0df88078f..08c8cbe39 100644 --- a/Client/src/Pages/Monitors/Configure/index.jsx +++ b/Client/src/Pages/Monitors/Configure/index.jsx @@ -460,10 +460,10 @@ const Configure = () => { }} > - Really delete this monitor? + Do you really want to delete this monitor? - Once deleted, this monitor cannot be retrieved back. + Once deleted, this monitor cannot be retrieved. .MuiStack-root:nth-child(2) { + background-color: var(--env-var-color-8); + border: solid 1px var(--env-var-color-6); + border-radius: var(--env-var-radius-1); + padding: var(--env-var-default-2); +} +.configure-pagespeed h1.MuiTypography-root { + font-size: var(--env-var-font-size-large-plus); +} +.configure-pagespeed h1.MuiTypography-root, +.configure-pagespeed h2.MuiTypography-root { + color: var(--env-var-color-1); +} +.configure-pagespeed span.MuiTypography-root { + font-size: var(--env-var-font-size-small-plus); +} +.configure-pagespeed p.MuiTypography-root, +.configure-pagespeed h3.MuiTypography-root { + color: var(--env-var-color-5); +} +.configure-pagespeed h1.MuiTypography-root, +.configure-pagespeed h3.MuiTypography-root, +.configure-pagespeed h2.MuiTypography-root { + font-weight: 600; +} +.configure-pagespeed p.MuiTypography-root, +.configure-pagespeed h3.MuiTypography-root, +.configure-pagespeed h3.MuiTypography-root > span.MuiTypography-root { + font-size: var(--env-var-font-size-medium); +} +.configure-pagespeed .MuiBox-root > .field + p.MuiTypography-root { + font-size: var(--env-var-font-size-small-plus); +} +.configure-pagespeed .MuiBox-root > .field + p.MuiTypography-root, +.configure-pagespeed h3.MuiTypography-root > span.MuiTypography-root { + opacity: 0.6; +} +.configure-pagespeed .checkbox-wrapper { + margin-bottom: 1px; +} +.configure-pagespeed .MuiInputBase-root:has(> .Mui-disabled) { + background-color: var(--env-var-color-13); +} +/* to be removed */ +.configure-pagespeed .section-disabled { + opacity: 0.4; + background-color: #f1f1f2; + padding: 10px; + border-radius: 8px; + user-select: none; + pointer-events: none; +} + +.configure-pagespeed button { + height: var(--env-var-height-2); +} + +body:has(.configure-pagespeed) .select-dropdown .MuiMenuItem-root, +.configure-pagespeed .select-wrapper .select-component > .MuiSelect-select { + text-transform: lowercase; +} + +.configure-pagespeed .field, +.configure-pagespeed .section-disabled, +.configure-pagespeed .select-wrapper, +.configure-pagespeed h3.MuiTypography-root { + flex: 1; +} diff --git a/Client/src/Pages/PageSpeed/Configure/index.jsx b/Client/src/Pages/PageSpeed/Configure/index.jsx index dfaae1153..4da437be1 100644 --- a/Client/src/Pages/PageSpeed/Configure/index.jsx +++ b/Client/src/Pages/PageSpeed/Configure/index.jsx @@ -1,7 +1,281 @@ -import { Box } from "@mui/material"; +import { useEffect, useState } from "react"; +import { useTheme } from "@emotion/react"; +import { Box, Modal, Stack, Typography } from "@mui/material"; +import { useDispatch, useSelector } from "react-redux"; +import { useNavigate, useParams } from "react-router"; +import Button from "../../../Components/Button"; +import Field from "../../../Components/Inputs/Field"; +import Select from "../../../Components/Inputs/Select"; +import Checkbox from "../../../Components/Inputs/Checkbox"; +import PauseCircleOutlineIcon from "@mui/icons-material/PauseCircleOutline"; +import WestRoundedIcon from "@mui/icons-material/WestRounded"; +import GreenCheck from "../../../assets/icons/checkbox-green.svg?react"; +import RedCheck from "../../../assets/icons/checkbox-red.svg?react"; +import "./index.css"; const PageSpeedConfigure = () => { - return ; + const theme = useTheme(); + const navigate = useNavigate(); + const dispatch = useDispatch(); + const MS_PER_MINUTE = 60000; + const { authToken } = useSelector((state) => state.auth); + const { monitors } = useSelector((state) => state.pageSpeedMonitors); + const { monitorId } = useParams(); + const [monitor, setMonitor] = useState({}); + const [errors, setErrors] = useState({}); + + 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" }, + ]; + + useEffect(() => { + const data = monitors.find((monitor) => monitor._id === monitorId); + if (!data) { + console.error("Error fetching pagespeed monitor of id: " + monitorId); + navigate("/not-found"); + } + setMonitor({ + ...data, + }); + }, [monitorId]); + + const handleChange = (event, id) => { + const { value } = event.target; + setForm((prev) => ({ ...prev, [id]: value })); + + const { error } = monitorValidation.validate( + { [id]: value }, + { abortEarly: false } + ); + + setErrors((prev) => { + const newErrors = { ...prev }; + if (error) newErrors[id] = error.details[0].message; + else delete newErrors[id]; + return newErrors; + }); + }; + + const [isOpen, setIsOpen] = useState(false); + const handleRemove = async (event) => { + event.preventDefault(); + // const action = await dispatch(deletePageSpeedMonitor({ authToken, monitor })); + // if (action.meta.requestStatus === "fulfilled") { + // navigate("/monitors"); + // } else { + // createToast({ body: "Failed to delete monitor." }); + // } + }; + + return ( + +