diff --git a/Client/src/Components/ConfigBox/index.css b/Client/src/Components/ConfigBox/index.css new file mode 100644 index 000000000..d5d6c96b2 --- /dev/null +++ b/Client/src/Components/ConfigBox/index.css @@ -0,0 +1,24 @@ +.config-box { + display: flex; + padding: 30px 40px; + border: 1px solid var(--env-var-color-16); + border-radius: var(--env-var-radius-1); + justify-content: space-between; + padding-bottom: 50px; +} + +.config-box-desc { + width: 35%; +} + +.config-box-desc-title { + color: var(--env-var-color-5); + font-size: var(--env-var-font-size-large); + font-weight: 700; + margin-bottom: var(--env-var-spacing-1); +} + +.config-box-desc-text { + color: var(--env-var-color-5); + font-size: var(--env-var-font-size-medium); +} diff --git a/Client/src/Components/ConfigBox/index.jsx b/Client/src/Components/ConfigBox/index.jsx new file mode 100644 index 000000000..7cf547232 --- /dev/null +++ b/Client/src/Components/ConfigBox/index.jsx @@ -0,0 +1,13 @@ +import "./index.css"; +import React from "react"; + +const ConfigBox = ({ leftLayout, rightLayout }) => { + return ( +
+ {leftLayout} + {rightLayout} +
+ ); +}; + +export default ConfigBox; diff --git a/Client/src/Components/CurrentMonitors/index.css b/Client/src/Components/CurrentMonitors/index.css index efb663b46..8580bfcd0 100644 --- a/Client/src/Components/CurrentMonitors/index.css +++ b/Client/src/Components/CurrentMonitors/index.css @@ -23,7 +23,7 @@ width: var(--env-var-spacing-2); height: var(--env-var-spacing-2); background-color: var(--env-var-color-15); - border: 1px solid var(--env-var-color-14); + border: 1px solid var(--env-var-color-6); border-radius: 50%; text-align: center; align-items: center; diff --git a/Client/src/Components/CurrentMonitors/index.jsx b/Client/src/Components/CurrentMonitors/index.jsx index 31e71bf3e..868ce7a99 100644 --- a/Client/src/Components/CurrentMonitors/index.jsx +++ b/Client/src/Components/CurrentMonitors/index.jsx @@ -4,7 +4,7 @@ import React from "react"; import HostsTable from "../HostsTable"; import Pagination from "../Pagination"; -const CurrentMonitors = () => { +const CurrentMonitors = ({ monitors }) => { return (
@@ -17,7 +17,7 @@ const CurrentMonitors = () => {
- +
diff --git a/Client/src/Components/HostsTable/index.jsx b/Client/src/Components/HostsTable/index.jsx index 7c5a93a93..2867ef26a 100644 --- a/Client/src/Components/HostsTable/index.jsx +++ b/Client/src/Components/HostsTable/index.jsx @@ -1,10 +1,6 @@ import React from "react"; -import HostStatus from "../HostStatus"; -import Host from "../Host"; -import BarChart from "../Charts/BarChart/BarChart"; -import HostActions from "../HostActions"; -function HostsTable() { +const HostsTable = ({ monitors }) => { return (
@@ -17,90 +13,18 @@ function HostsTable() { - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + {monitors.map((monitor, index) => ( + + + + + + + ))}
- {Host("Discord", 100, "var(--env-var-color-17)")} - - {HostStatus( - "var(--env-var-color-20)", - "Up", - "var(--env-var-color-17)" - )} - - - {HostActions()}
- {Host("Google", 99.9, "var(--env-var-color-17)")} - - {HostStatus( - "var(--env-var-color-20)", - "Up", - "var(--env-var-color-17)" - )} - - - {HostActions()}
- {Host("NBC", 98.1, "var(--env-var-color-18)")} - - {HostStatus( - "var(--env-var-color-20)", - "Up", - "var(--env-var-color-17)" - )} - - - {HostActions()}
- {Host("Google", 95.1, "var(--env-var-color-19)")} - - {HostStatus( - "var(--env-var-color-21)", - "Down", - "var(--env-var-color-19)" - )} - - - {HostActions()}
- {Host("NBC", 99.9, "var(--env-var-color-17)")} - - {HostStatus( - "var(--env-var-color-15)", - "Cannot resolve", - "var(--env-var-color-22)" - )} - - - {HostActions()}
{monitor.host}{monitor.status}{monitor.team}{monitor.actions}
); -} +}; export default HostsTable; diff --git a/Client/src/Components/TextFields/Flexibile/FlexibileTextField.jsx b/Client/src/Components/TextFields/Flexibile/FlexibileTextField.jsx new file mode 100644 index 000000000..b59ecea2b --- /dev/null +++ b/Client/src/Components/TextFields/Flexibile/FlexibileTextField.jsx @@ -0,0 +1,17 @@ +import "./flexibileTextField.css"; +import React from "react"; + +const FlexibileTextField = ({ title, type, placeholder }) => { + return ( +
+
{title}
+ +
+ ); +}; + +export default FlexibileTextField; diff --git a/Client/src/Components/TextFields/Flexibile/flexibileTextField.css b/Client/src/Components/TextFields/Flexibile/flexibileTextField.css new file mode 100644 index 000000000..2e0422876 --- /dev/null +++ b/Client/src/Components/TextFields/Flexibile/flexibileTextField.css @@ -0,0 +1,22 @@ +.flexibile-textfield-title { + color: var(--env-var-color-5); + font-size: var(--env-var-font-size-medium); +} + +.flexibile-textfield-input { + width: 292.8px; + height: 6.8px; + padding: var(--env-var-spacing-1); + margin-top: 10px; + border: 1px solid var(--env-var-color-4); + border-radius: var(--env-var-radius-1); +} + +.flexibile-textfield-input:focus { + outline: none; +} + +.flexibile-textfield-input::placeholder { + color: var(--env-var-color-25); + font-size: var(--env-var-font-size-medium); +} diff --git a/Client/src/Components/TextFields/Search/searchTextField.css b/Client/src/Components/TextFields/Search/searchTextField.css index 71c9f0e20..a3d560e15 100644 --- a/Client/src/Components/TextFields/Search/searchTextField.css +++ b/Client/src/Components/TextFields/Search/searchTextField.css @@ -18,7 +18,7 @@ width: 150px; border: none; outline: none; - font-size: var(--env-var-font-size-large); + font-size: var(--env-var-font-size-medium); } .search-field::placeholder { diff --git a/Client/src/Pages/Monitors/CreateNewMonitor.jsx b/Client/src/Pages/Monitors/CreateNewMonitor.jsx new file mode 100644 index 000000000..43c853748 --- /dev/null +++ b/Client/src/Pages/Monitors/CreateNewMonitor.jsx @@ -0,0 +1,85 @@ +import ConfigBox from "../../Components/ConfigBox"; +import FlexibileTextField from "../../Components/TextFields/Flexibile/FlexibileTextField"; +import "./index.css"; +import React from "react"; + +const CreateNewMonitor = () => { + return ( +
+
+
+
Create new monitor
+
+ +
General settings
+
+ Here you can select the URL of the host, together with the type of + monitor. +
+
+ } + rightLayout={ +
+ +
+ +
+ } + /> +
+
+ +
Checks to perform
+
+ You can always add or remove checks after adding your site. +
+ + } + /> +
+
+ +
Incident notifications
+
+ When there is an incident, notify users. +
+ + } + /> +
+
+ +
Advanced settings
+ + } + /> +
+
+ +
Proxy settings
+ + } + /> + + ); +}; + +export default CreateNewMonitor; diff --git a/Client/src/Pages/Monitors/CurrentStats.jsx b/Client/src/Pages/Monitors/CurrentStats.jsx new file mode 100644 index 000000000..b84f53620 --- /dev/null +++ b/Client/src/Pages/Monitors/CurrentStats.jsx @@ -0,0 +1,99 @@ +import React, { useEffect, useState } from "react"; +import Host from "../../Components/Host"; +import HostStatus from "../../Components/HostStatus"; +import HostActions from "../../Components/HostActions"; +import BarChart from "../../Components/Charts/BarChart/BarChart"; +import Button from "../../Components/Button"; +import ServerStatus from "../../Components/Charts/Servers/ServerStatus"; +import CurrentMonitors from "../../Components/CurrentMonitors"; + +const hardCodedMonitors = [ + { + host: Host("Discord", 100, "var(--env-var-color-17)"), + status: HostStatus( + "var(--env-var-color-20)", + "Up", + "var(--env-var-color-17)" + ), + team: , + actions: HostActions(), + }, + { + host: Host("Google", 99.9, "var(--env-var-color-17)"), + status: HostStatus( + "var(--env-var-color-20)", + "Up", + "var(--env-var-color-17)" + ), + team: , + actions: HostActions(), + }, + { + host: Host("NBC", 98.1, "var(--env-var-color-18)"), + status: HostStatus( + "var(--env-var-color-20)", + "Up", + "var(--env-var-color-17)" + ), + team: , + actions: HostActions(), + }, + { + host: Host("Google", 95.1, "var(--env-var-color-19)"), + status: HostStatus( + "var(--env-var-color-21)", + "Down", + "var(--env-var-color-19)" + ), + team: , + actions: HostActions(), + }, + { + host: Host("NBC", 99.9, "var(--env-var-color-17)"), + status: HostStatus( + "var(--env-var-color-15)", + "Cannot resolve", + "var(--env-var-color-22)" + ), + team: , + actions: HostActions(), + }, +]; + +const CurrentStats = () => { + // The hardcoded part is passed as default value for the purpose of demonstration. + // Pass an empty array, [], before fetching the data + const [monitors, setMonitors] = useState(hardCodedMonitors); + + useEffect(() => { + fetch("API_URL") + .then((response) => response.json()) + .then((data) => setMonitors(data)) + .catch((error) => console.error(error)); + }, []); + + return ( +
+
+
+
+
Hello, Jackie
+
+
+
+ + + +
+
+ +
+ ); +}; + +export default CurrentStats; diff --git a/Client/src/Pages/Monitors/index.css b/Client/src/Pages/Monitors/index.css index d6d272e7c..2d2ad87eb 100644 --- a/Client/src/Pages/Monitors/index.css +++ b/Client/src/Pages/Monitors/index.css @@ -1,4 +1,5 @@ -.monitors { +.monitors, +.new-monitor { width: 70vw; padding: 4vw; } @@ -22,3 +23,9 @@ .monitors-gaps-medium { height: var(--env-var-spacing-2); } + +.new-monitor-header { + color: var(--env-var-color-1); + font-size: var(--env-var-font-size-large-plus); + font-weight: 600; +} diff --git a/Client/src/Pages/Monitors/index.jsx b/Client/src/Pages/Monitors/index.jsx index 846f140b8..153ac852c 100644 --- a/Client/src/Pages/Monitors/index.jsx +++ b/Client/src/Pages/Monitors/index.jsx @@ -1,30 +1,11 @@ -import Button from "../../Components/Button"; -import ServerStatus from "../../Components/Charts/Servers/ServerStatus"; -import CurrentMonitors from "../../Components/CurrentMonitors"; +import CurrentStats from "./CurrentStats"; import "./index.css"; import React from "react"; const Monitors = () => { return (
-
-
-
-
Hello, Jackie
-
-
-
- - - -
-
- +
); }; diff --git a/Client/src/index.css b/Client/src/index.css index 3166674ad..76ad93989 100644 --- a/Client/src/index.css +++ b/Client/src/index.css @@ -39,6 +39,7 @@ --env-var-color-22: #4e5ba6; --env-var-color-23: #17b26a; --env-var-color-24: #d92d20; + --env-var-color-25: #667085; --env-var-radius-1: 4px; --env-var-radius-2: 8px; @@ -57,6 +58,7 @@ --env-var-font-size-medium: 13px; --env-var-font-size-medium-plus: 14px; --env-var-font-size-large: 16px; + --env-var-font-size-large-plus: 24px; --env-var-font-size-xlarge: 30px; --env-var-img-width-1: 20px;