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)}
/>
-
+ handleChange(event, "port", setChecks)}
+ >
+
+ Select a port to check
+
+ {ports.map((port, index) => (
+
+ {port}
+
+ ))}
+
}
@@ -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);