+ );
+};
+
+/**
+ * Status component.
+ * This subcomponent receives a params object and displays the status details of a monitor.
+ *
+ * @component
+ * @param {Object} params - An object containing the following properties:
+ * @param {string} params.backgroundColor - The background color of the status box.
+ * @param {string} params.statusDotColor - The color of the status dot.
+ * @param {string} params.status - The status text to display.
+ * @returns {React.ElementType} Returns a div element with the host status.
+ */
+const Status = ({ params }) => {
+ return (
+
+
+
+
+ {params.status}
+
+
+
+ );
+};
+
+/**
+ * MonitorTable component.
+ * Takes an array of monitor objects and displays them in a table.
+ * Each row in the table represents a monitor and includes the host, status, response time, and action.
+ *
+ * @component
+ * @param {Object[]} monitors - An array of monitor objects. Each object should have the following properties:
+ * @param {string} monitors[].url - The URL of the monitor.
+ * @param {string} monitors[].name - The name of the monitor.
+ * @param {boolean} monitors[].status - The status of the monitor. True if the monitor is up, false otherwise.
+ * @param {Object[]} monitors[].checks - An array of check objects for the response time chart.
+ * @returns {React.Component} Returns a table with the monitor data.
+ */
+const MonitorTable = ({ monitors = [] }) => {
+ const [page, setPage] = useState(0);
+ const [rowsPerPage, setRowsPerPage] = useState(5);
+
+ const handleChangePage = (event, newPage) => {
+ setPage(newPage);
+ };
+
+ const handleChangeRowsPerPage = (event) => {
+ setRowsPerPage(parseInt(event.target.value, 10));
+ setPage(0);
+ };
+
+ const mappedRows = monitors
+ .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)
+ .map((monitor) => {
+ const params = {
+ url: monitor.url,
+ title: monitor.name,
+ precentage: 100,
+ percentageColor:
+ monitor.status === true
+ ? "var(--env-var-color-17)"
+ : "var(--env-var-color-19)",
+ status: monitor.status === true ? "up" : "down",
+ backgroundColor:
+ monitor.status === true
+ ? "var(--env-var-color-20)"
+ : "var(--env-var-color-21)",
+ statusDotColor:
+ monitor.status === true
+ ? "var(--env-var-color-17)"
+ : "var(--env-var-color-19)",
+ };
+
+ return (
+
+
+
+
+
+
+
+
+
+
+ TODO Add Actions
+
+ );
+ });
+
+ return (
+
+