diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 000000000..61471d77b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,31 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Desktop (please complete the following information):** + - Browser [e.g. Chrome, Safari] + - Version [e.g. 22] + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 000000000..bbcbbe7d6 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: '' +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/Client/index.html b/Client/index.html index 2b6c6b546..3407fb5cd 100644 --- a/Client/index.html +++ b/Client/index.html @@ -1,16 +1,14 @@ - + + + + + + BlueWave Uptime + - - - - - BlueWave Uptime - - - -
- - - + +
+ + diff --git a/Client/public/bluewave_favicon.ico b/Client/public/bluewave_favicon.ico new file mode 100644 index 000000000..487946975 Binary files /dev/null and b/Client/public/bluewave_favicon.ico differ diff --git a/Client/public/vite.svg b/Client/public/vite.svg deleted file mode 100644 index e7b8dfb1b..000000000 --- a/Client/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/Client/src/App.jsx b/Client/src/App.jsx index cad8a4ebd..12db9dab9 100644 --- a/Client/src/App.jsx +++ b/Client/src/App.jsx @@ -26,6 +26,7 @@ import PageSpeed from "./Pages/PageSpeed"; import CreatePageSpeed from "./Pages/PageSpeed/CreatePageSpeed"; import CreateNewMaintenanceWindow from "./Pages/Maintenance/CreateMaintenanceWindow"; import PageSpeedDetails from "./Pages/PageSpeed/Details"; +import PageSpeedConfigure from "./Pages/PageSpeed/Configure"; function App() { const AdminCheckedRegister = withAdminCheck(Register); @@ -103,6 +104,10 @@ function App() { path="pagespeed/:monitorId" element={} /> + } + /> } /> diff --git a/Client/src/Components/Charts/MonitorDetailsAreaChart/index.jsx b/Client/src/Components/Charts/MonitorDetailsAreaChart/index.jsx index 567de0b68..91657f542 100644 --- a/Client/src/Components/Charts/MonitorDetailsAreaChart/index.jsx +++ b/Client/src/Components/Charts/MonitorDetailsAreaChart/index.jsx @@ -79,7 +79,6 @@ const MonitorDetailsAreaChart = ({ checks }) => { MonitorDetailsAreaChart.propTypes = { checks: PropTypes.array, - filter: PropTypes.string, }; CustomToolTip.propTypes = { diff --git a/Client/src/Components/Inputs/Field/index.jsx b/Client/src/Components/Inputs/Field/index.jsx index 6fb8ea612..0b2fe56fe 100644 --- a/Client/src/Components/Inputs/Field/index.jsx +++ b/Client/src/Components/Inputs/Field/index.jsx @@ -12,7 +12,7 @@ import Visibility from "@mui/icons-material/Visibility"; import ContentCopyIcon from "@mui/icons-material/ContentCopy"; import Button from "../../Button"; import "./index.css"; -import { useState } from "react"; +import { forwardRef, useState } from "react"; /** * @param {Object} props @@ -30,140 +30,151 @@ import { useState } from "react"; * @param {function} props.onChange - Function called on input change. * @param {string} [props.error] - Error message to display for the input field. * @param {boolean} [props.disabled] - Indicates if the input field is disabled. + * @param {React.Ref} [ref] - Ref forwarded to the underlying `TextField` component. Allows for direct interactions such as focusing. */ -const Field = ({ - type = "text", - id, - label, - https, - isRequired, - isOptional, - optionalLabel, - hasCopy, - autoComplete, - placeholder, - value, - onChange, - error, - disabled, -}) => { - const theme = useTheme(); +const Field = forwardRef( + ( + { + type = "text", + id, + label, + https, + isRequired, + isOptional, + optionalLabel, + hasCopy, + autoComplete, + placeholder, + value, + onChange, + error, + disabled, + }, + ref + ) => { + const theme = useTheme(); - // TODO - are we using this feature anywhere ? - const [copy, setCopy] = useState(false); - const handleCopy = () => { - setCopy(true); - setTimeout(() => setCopy(false), 1000); - }; + // TODO - are we using this feature anywhere ? + const [copy, setCopy] = useState(false); + const handleCopy = () => { + setCopy(true); + setTimeout(() => setCopy(false), 1000); + }; - const [isVisible, setVisible] = useState(false); + const [isVisible, setVisible] = useState(false); - return ( - - {label && ( - - {label} - {isRequired ? * : ""} - {isOptional ? ( - - {optionalLabel || "(optional)"} - - ) : ( - "" - )} - - )} - - - {https ? "https" : "http"}:// - - - ), - endAdornment: - type === "password" ? ( - - setVisible((show) => !show)} - tabIndex={-1} - sx={{ - color: theme.palette.section.borderColor, - padding: `calc(${theme.gap.xs} / 2)`, - "&:focus": { - outline: "none", - }, - "& .MuiTouchRipple-root": { - pointerEvents: "none", - display: "none", - }, - }} - > - {!isVisible ? : } - - + return ( + + {label && ( + + {label} + {isRequired ? * : ""} + {isOptional ? ( + + {optionalLabel || "(optional)"} + ) : ( - hasCopy && ( - -