diff --git a/Client/src/Pages/Incidents/index.jsx b/Client/src/Pages/Incidents/index.jsx
index a2cb59517..b9778cbe9 100644
--- a/Client/src/Pages/Incidents/index.jsx
+++ b/Client/src/Pages/Incidents/index.jsx
@@ -1,4 +1,7 @@
-import { styled } from '@mui/material/styles';
+import * as React from 'react';
+import TextField from '@mui/material/TextField';
+import Autocomplete, { createFilterOptions } from '@mui/material/Autocomplete';
+import { styled, useTheme } from '@mui/material/styles';
import Table from '@mui/material/Table';
import TableBody from '@mui/material/TableBody';
import TableCell, { tableCellClasses } from '@mui/material/TableCell';
@@ -6,12 +9,19 @@ import TableContainer from '@mui/material/TableContainer';
import TableHead from '@mui/material/TableHead';
import TableRow from '@mui/material/TableRow';
import Paper from '@mui/material/Paper';
+import Box from '@mui/material/Box';
+import Typography from '@mui/material/Typography';
import { StatusLabel } from "../../Components/Label/";
+import TuneIcon from '@mui/icons-material/Tune';
-
+/**
+ * Creates a styled TableCell component.
+ * @param {object} theme - The theme object.
+ * @returns {JSX.Element} The styled TableCell component.
+ */
const StyledTableCell = styled(TableCell)(({ theme }) => ({
[`&.${tableCellClasses.head}`]: {
- backgroundColor: theme.palette.action.hover,
+ backgroundColor: theme.palette.action.hover,
color: theme.palette.common.black,
},
[`&.${tableCellClasses.body}`]: {
@@ -19,54 +29,139 @@ const StyledTableCell = styled(TableCell)(({ theme }) => ({
},
}));
+/**
+ * Creates a styled TableRow component.
+ * @param {object} theme - The theme object.
+ * @returns {JSX.Element} The styled TableRow component.
+ */
const StyledTableRow = styled(TableRow)(({ theme }) => ({
- '&:nth-of-type(1)': {
- backgroundColor: theme.palette.action.hover,
+ '&:nth-of-type(odd)': {
+ backgroundColor: theme.palette.action.hover,
},
- '&:nth-of-type(n+1)': {
- backgroundColor: theme.palette.common.white,
+ '&:nth-of-type(even)': {
+ backgroundColor: theme.palette.common.white,
},
'&:last-child td, &:last-child th': {
border: 0,
},
}));
-function createData(name, calories, fat, carbs, protein) {
- return { name, calories, fat, carbs, protein };
-}
+const filterOptions = createFilterOptions({
+ matchFrom: 'start',
+ stringify: (option) => option.title,
+});
-const rows = [
- createData(, '2024-03-14 21:41:09', 'HTTP 350 - NOK'),
- createData(, '2024-03-14 21:41:09', 'timeout of 48000ms exceeded'),
- createData(, '2024-03-14 21:41:09', 'timeout of 48000ms exceeded'),
- createData(, '2024-03-14 21:41:09', 'timeout of 48000ms exceeded'),
- createData(, '2024-03-14 21:41:09', 'HTTP 350 - NOK'),
+
+const titles = [
+ { title: 'Down' },
+ { title: 'Cannot resolve' },
+ { title: 'Clear / show all' },
];
+/**
+ * Creates a data object for the table row.
+ * @param {JSX.Element} name - The status label JSX element.
+ * @param {string} date - The date and time string.
+ * @param {string} message - The message string.
+ * @returns {object} The data object containing name, date, and message.
+ */
+function createData(name, date, message) {
+ return { name, date, message };
+}
+/**
+ * Customized table component displaying incident history.
+ * @returns {JSX.Element} The JSX element representing the customized table.
+ */
export default function CustomizedTables() {
+ const theme = useTheme();
+
+ const rows = [
+ createData(, '2024-03-14 21:41:09', 'HTTP 350 - NOK'),
+ createData(, '2024-03-14 21:41:09', 'timeout of 48000ms exceeded'),
+ createData(, '2024-03-14 21:41:09', 'timeout of 48000ms exceeded'),
+ createData(, '2024-03-14 21:41:09', 'timeout of 48000ms exceeded'),
+ createData(, '2024-03-14 21:41:09', 'HTTP 350 - NOK'),
+ ];
+
return (
-
-
-
-
- Status
- Date & Time
- Message
-
-
-
- {rows.map((row, index) => (
-
-
- {row.name}
-
- {row.calories}
- {row.fat}
-
- ))}
-
-
-
+
+
+
+ Incident History
+
+
+
+
+
+
+
+ Status
+ Date & Time
+ Message
+
+
+
+ {rows.map((row, index) => (
+
+
+ {row.name}
+
+ {row.date}
+ {row.message}
+
+ ))}
+
+
+
+
+ );
+}
+
+/**
+ * Filter component with autocomplete for status filtering.
+ * @returns {JSX.Element} The JSX element representing the filter component.
+ */
+function Filter() {
+ return (
+ option.title}
+ filterOptions={filterOptions}
+ sx={{
+ width: 170,
+ '& .MuiAutocomplete-inputRoot': {
+ height: '50px',
+ },
+ '& .MuiAutocomplete-listbox': {
+ maxHeight: '200px',
+ },
+ }}
+ disableClearable
+ renderInput={(params) => (
+
+
+ Filter by status
+
+ }
+ InputProps={{ ...params.InputProps, endAdornment: null }}
+ />
+ )}
+ />
);
}