diff --git a/Client/src/Components/Checkbox/Checkbox.css b/Client/src/Components/Checkbox/Checkbox.css index 27c6310cc..e78fff6da 100644 --- a/Client/src/Components/Checkbox/Checkbox.css +++ b/Client/src/Components/Checkbox/Checkbox.css @@ -33,5 +33,4 @@ font-size: var(--env-var-font-size-medium); color: var(--env-var-color-5); font-weight: 500; - cursor: pointer; } diff --git a/Client/src/Components/Checkbox/CustomizableCheckbox.jsx b/Client/src/Components/Checkbox/CustomizableCheckbox.jsx index 807562f26..e39ea134b 100644 --- a/Client/src/Components/Checkbox/CustomizableCheckbox.jsx +++ b/Client/src/Components/Checkbox/CustomizableCheckbox.jsx @@ -10,9 +10,9 @@ const CustomizableCheckbox = (props) => { onChange={props.handleChange} className="custom-checkbox" type="checkbox" - id="checkbox" + id={props.id} /> - + ); }; diff --git a/Client/src/Components/ConfigBox/index.jsx b/Client/src/Components/ConfigBox/index.jsx index 7cf547232..28776752f 100644 --- a/Client/src/Components/ConfigBox/index.jsx +++ b/Client/src/Components/ConfigBox/index.jsx @@ -3,10 +3,10 @@ import React from "react"; const ConfigBox = ({ leftLayout, rightLayout }) => { return ( -
+
{leftLayout} {rightLayout} -
+ ); }; diff --git a/Client/src/Components/RadioButton/index.jsx b/Client/src/Components/RadioButton/index.jsx index e9c874bee..40f3fc230 100644 --- a/Client/src/Components/RadioButton/index.jsx +++ b/Client/src/Components/RadioButton/index.jsx @@ -11,6 +11,7 @@ * /> * * @param {Object} props - The component props. + * @param {string} props.id - The id of the radio button. * @param {string} props.title - The title of the radio button. * @param {string} [props.desc] - The description of the radio button. * @param {string} [props.size="small"] - The size of the radio button. @@ -28,7 +29,7 @@ function RadioButton(props) { } + control={} onChange={props.onChange} label={
diff --git a/Client/src/Components/TextFields/Flexibile/FlexibileTextField.jsx b/Client/src/Components/TextFields/Flexibile/FlexibileTextField.jsx index f7b05ab12..9f2998ef9 100644 --- a/Client/src/Components/TextFields/Flexibile/FlexibileTextField.jsx +++ b/Client/src/Components/TextFields/Flexibile/FlexibileTextField.jsx @@ -1,11 +1,19 @@ import "./flexibileTextField.css"; import React from "react"; -const FlexibileTextField = ({ title, type, placeholder, value, onChange }) => { +const FlexibileTextField = ({ + id, + title, + type, + placeholder, + value, + onChange, +}) => { return (
{title}
{ - const portOptions = [ - { label: "Port 1", value: "Port1" }, - { label: "Port 2", value: "Port2" }, - // Add more Ports as needed - ]; + //General Settings Form + const [generalSettings, setGeneralSettings] = useState({ url: "", name: "" }); + //Checks Form + const [checks, setChecks] = useState({ monitor: "", port: "" }); + //Incidents Form + const [notifications, setNotifications] = useState({ + viaSms: false, + viaEmail: false, + viaOther: false, + email: "", + }); + //Advanced Settings Form + const [advancedSettings, setAdvancedSettings] = useState({ + frequency: "", + retries: "", + codes: "", + redirects: "", + }); + //Proxy Settings Form + const [proxy, setProxy] = useState({ + enabled: false, + protocol: "", + address: "", + proxy_port: "", + }); - const frequencyOptions = [ - { label: "1 minute", value: "1" }, - { label: "5 minutes", value: "5" }, - // Add more Ports as needed - ]; - - const [incidentEmail, setIncidentEmail] = useState(""); - - const [notifyViaSMS, setNotifyViaSMS] = useState(false); - const [notifyViaEmail, setNotifyViaEmail] = useState(false); - const [notifyViaCurrentEmail, setNotifyViaCurrentEmail] = useState(false); - - const [maxRetries, setMaxRetries] = useState(0); - const [acceptCode, setAcceptCode] = useState(0); - const [maxRedirects, setMaxRedirects] = useState(0); - - const [proxy, setProxy] = useState(false); - - const [proxyAddress, setProxyAddress] = useState(""); - const [proxyPort, setProxyPort] = useState(""); - - const [selectedMonitorType, setSelectedMonitorType] = useState(""); - - const [urlToMonitor, setUrlToMonitor] = useState(""); - const [friendlyName, setFriendlyName] = useState(""); - - const [port, setPort] = useState("Select a port to check"); - const [frequncy, setFrequency] = useState("1 minute"); - - const handlePortOptionChange = (newValue) => { - setPort(newValue); + const handleChange = (event, id, setState, checkbox) => { + const { value } = event.target; + setState((prev) => ({ + ...prev, + [id]: checkbox ? true : value, + })); + }; + const handleCheck = (id, setState) => { + setState((prev) => ({ + ...prev, + [id]: !prev[id], + })); }; - const handleFrequencyOptionChange = (newValue) => { - setPort(newValue); - }; + console.log({ + ...generalSettings, + ...checks, + ...notifications, + ...advancedSettings, + ...proxy, + }); - const handleUrlToMonitor = (event) => { - setUrlToMonitor(event.target.value); - console.log(urlToMonitor); - }; - - const handleFriendlyName = (event) => { - setFriendlyName(event.target.value); - console.log(friendlyName); - }; - - const handleIncidentEmail = (event) => { - setIncidentEmail(event.target.value); - console.log(incidentEmail); - }; - - const handleNotifyViaSMS = (event) => { - setNotifyViaSMS(event.target.checked); - }; - - const handleNotifyViaEmail = (event) => { - setNotifyViaEmail(event.target.checked); - }; - - const handleNotifyViaCurrentEmail = (event) => { - setNotifyViaCurrentEmail(event.target.checked); - }; - - const handleSetMaxRetries = (event) => { - setMaxRetries(event.target.value); - console.log(maxRetries); - }; - - const handleSetAcceptCode = (event) => { - setAcceptCode(event.target.value); - console.log(acceptCode); - }; - - const handleSetMaxRedirects = (event) => { - setMaxRedirects(event.target.value); - console.log(maxRedirects); - }; - - const handleEnableProxy = (event) => { - setProxy(event.target.value); - console.log(proxy); - }; - - const handleproxyAddress = (event) => { - setProxyAddress(event.target.value); - console.log(proxyAddress); - }; - - const handleproxyPort = (event) => { - setProxyPort(event.target.value); - console.log(proxyPort); - }; - - const handleMonitorTypeChange = (value) => { - setSelectedMonitorType(value); - console.log(value); - }; - - const handleCreateNewMonitor = () => { - console.log("Created"); - }; + const ports = ["Port 1", "Port 2", "Port 3"]; + const frequencies = [1, 2, 3, 4, 5]; return (
@@ -134,17 +76,25 @@ const CreateNewMonitor = () => { rightLayout={
+ handleChange(event, "url", setGeneralSettings) + } />
+ handleChange(event, "name", setGeneralSettings) + } />
} @@ -163,37 +113,48 @@ const CreateNewMonitor = () => { rightLayout={
handleMonitorTypeChange("http")} + checked={checks.monitor === "http"} + onChange={(event) => handleChange(event, "monitor", setChecks)} />
handleMonitorTypeChange("ping")} + checked={checks.monitor === "ping"} + onChange={(event) => handleChange(event, "monitor", setChecks)} />
handleMonitorTypeChange("port")} + checked={checks.monitor === "port"} + onChange={(event) => handleChange(event, "monitor", setChecks)} />
- +
} @@ -217,29 +178,35 @@ const CreateNewMonitor = () => {
handleCheck("viaSms", setNotifications)} />
handleCheck("viaEmail", setNotifications)} />
handleCheck("viaOther", setNotifications)} />
+ handleChange(event, "email", setNotifications) + } />
@@ -258,35 +225,49 @@ const CreateNewMonitor = () => {
Check frequency
- + handleChange(event, "frequency", setAdvancedSettings) + } + > + {frequencies.map((freq) => ( + + {freq} {freq === 1 ? "minute" : "minutes"} + + ))} + +
+ + handleChange(event, "retries", setAdvancedSettings) + } />
-
- Maximum retries before the service is marked as down -
+ handleChange(event, "codes", setAdvancedSettings) + } />
-
Accepted status codes
-
-
Maximum redirects
- + handleChange(event, "redirects", setAdvancedSettings) + } />
} @@ -302,19 +283,32 @@ const CreateNewMonitor = () => { rightLayout={
handleCheck("enabled", setProxy)} />
-
Proxy protocol
- + handleChange(event, "protocol", setProxy)} + />
-
Proxy address
- + handleChange(event, "address", setProxy)} + />
-
Proxy port
- + handleChange(event, "proxy_port", setProxy)} + />
} /> @@ -326,7 +320,7 @@ const CreateNewMonitor = () => { level="primary" label="Create new monitor" sx={{ width: "210px", fontSize: "var(--env-var-font-size-medium)" }} - onClick={() => handleCreateNewMonitor()} + // onClick={() => handleCreateNewMonitor()} />
diff --git a/Client/src/Pages/Monitors/index.jsx b/Client/src/Pages/Monitors/index.jsx index 00df4ee24..94bd6e74f 100644 --- a/Client/src/Pages/Monitors/index.jsx +++ b/Client/src/Pages/Monitors/index.jsx @@ -4,6 +4,7 @@ import { useEffect } from "react"; import { useSelector } from "react-redux"; import { useDispatch } from "react-redux"; import { getMonitorsByUserId } from "../../Features/Monitors/monitorsSlice"; +import CreateNewMonitor from "../CreateNewMonitor"; const Monitors = () => { const monitorState = useSelector((state) => state.monitors);