diff --git a/frontend/src/pages/Dashboard.tsx b/frontend/src/pages/Dashboard.tsx index 63fc55b8..c3bc6a67 100644 --- a/frontend/src/pages/Dashboard.tsx +++ b/frontend/src/pages/Dashboard.tsx @@ -11,36 +11,209 @@ import TableRow from '@mui/material/TableRow' import { DataGrid, GridToolbar } from '@mui/x-data-grid' import { useEffect, useState } from 'react' import type { AxiosResponse } from '~/axios' +import { DeleteRounded, Description } from '@mui/icons-material' // import config from '../config' import _kc from '@/keycloak' import UserService from '@/service/user-service' +import { + Box, + FormControl, + FormLabel, + Grid, + IconButton, + MenuItem, + Select, + TextField, + Typography, +} from '@mui/material' +import { Label } from '@mui/icons-material' const columns = [ { - field: 'id', - headerName: 'Employee ID', + field: 'fileName', + headerName: 'Filen Name', sortable: true, filterable: true, - flex: 1, + flex: 1.5, + renderCell: (params) => ( + handleDownload(params.row.fileName)} + > + {params.value} + + ), + }, + { + field: 'submissionDate', + headerName: 'Submission Date', + sortable: true, + filterable: true, + flex: 2, + }, + { + field: 'submitterUsername', + headerName: 'Submitter Username', + sortable: true, + filterable: true, + flex: 2, }, { - field: 'name', - headerName: 'Employee Name', + field: 'submitterAgency', + headerName: 'Submitter Agency', + sortable: true, + filterable: true, + flex: 2, + }, + { + field: 'fileStatus', + headerName: 'Status', + sortable: true, + filterable: true, + flex: 1.5, + }, + { + field: 'samples', + headerName: '# Samples', sortable: true, filterable: true, flex: 1, }, { - field: 'email', - headerName: 'Employee Email', + field: 'results', + headerName: '# Results', sortable: true, filterable: true, flex: 1, }, + { + field: 'delete', + headerName: 'Delete', + flex: 0.75, + renderCell: (params) => ( + handleDelete(params.row.fileName)} + > + + + ), + }, + { + field: 'messages', + headerName: 'Messages', + flex: 1, + renderCell: (params) => ( + handleMessages(params.row.fileName)} + > + + + ), + }, ] + export default function Dashboard() { + const handleSearch = () => { + console.log('SEARCH HERE') + } + const [data, setData] = useState([ - { id: 1, name: 'Michael', email: 'michael@email.com' }, + { + fileName: 'testFileGUI.txt', + submissionDate: '2024-06-19', + submitterUsername: 'VMANAWAT', + submitterAgency: 'SALUSSYSTEMS', + fileStatus: 'VALIDATED', + samples: 12, + results: 12, + }, + { + fileName: 'test2.csv', + submissionDate: '2024-06-19', + submitterUsername: 'VMANAWAT', + submitterAgency: 'SALUSSYSTEMS', + fileStatus: 'IN PROGRESS', + samples: 12, + results: 12, + }, + { + fileName: 'test3.xlsx', + submissionDate: '2024-06-19', + submitterUsername: 'VMANAWAT', + submitterAgency: 'SALUSSYSTEMS', + fileStatus: 'ACCEPTED', + samples: 12, + results: 12, + }, + { + fileName: 'test4.txt', + submissionDate: '2024-06-19', + submitterUsername: 'VMANAWAT', + submitterAgency: 'SALUSSYSTEMS', + fileStatus: 'REJECTED', + samples: 12, + results: 12, + }, + { + fileName: 'test5.xlsx', + submissionDate: '2024-06-19', + submitterUsername: 'VMANAWAT', + submitterAgency: 'SALUSSYSTEMS', + fileStatus: 'VALIDATED', + samples: 12, + results: 12, + }, + { + fileName: 'test6.xlsx', + submissionDate: '2024-06-19', + submitterUsername: 'VMANAWAT', + submitterAgency: 'SALUSSYSTEMS', + fileStatus: 'VALIDATED', + samples: 12, + results: 12, + }, + { + fileName: 'test7.xlsx', + submissionDate: '2024-06-19', + submitterUsername: 'VMANAWAT', + submitterAgency: 'SALUSSYSTEMS', + fileStatus: 'VALIDATED', + samples: 12, + results: 12, + }, + { + fileName: 'test8.xlsx', + submissionDate: '2024-06-19', + submitterUsername: 'VMANAWAT', + submitterAgency: 'SALUSSYSTEMS', + fileStatus: 'VALIDATED', + samples: 12, + results: 12, + }, + { + fileName: 'test9.xlsx', + submissionDate: '2024-06-19', + submitterUsername: 'VMANAWAT', + submitterAgency: 'SALUSSYSTEMS', + fileStatus: 'VALIDATED', + samples: 12, + results: 12, + }, + { + fileName: 'test10.xlsx', + submissionDate: '2024-06-19', + submitterUsername: 'VMANAWAT', + submitterAgency: 'SALUSSYSTEMS', + fileStatus: 'VALIDATED', + samples: 12, + results: 12, + }, ]) useEffect(() => { @@ -70,50 +243,166 @@ export default function Dashboard() { } return ( -
- +
row['id']} - onRowClick={(params) => setSelectedRow(params.row)} - /> - - Row Details - - - - {selectedRow && - Object.entries(selectedRow).map(([key, value]) => ( - - {key} - {value} - - ))} - -
-
- - - -
-
+ +
+
+ row['fileName']} + // onRowClick={(params) => setSelectedRow(params.row)} + sx={{ width: '1200px' }} + /> + + Row Details + + + + {selectedRow && + Object.entries(selectedRow).map(([key, value]) => ( + + {key} + {value} + + ))} + +
+
+ + + +
+
+ ) } + +function handleDownload(fileName: any): void { + console.log(fileName) +} + +function handleDelete(fileName: any): void { + console.log(fileName) +} + +function handleMessages(fileName: any): void { + console.log(fileName) +} diff --git a/frontend/src/theme.tsx b/frontend/src/theme.tsx index 75d70d67..4d9955a8 100644 --- a/frontend/src/theme.tsx +++ b/frontend/src/theme.tsx @@ -4,7 +4,7 @@ import { createTheme } from '@mui/material/styles' const theme = createTheme({ palette: { primary: { - main: '#ffffff', + main: '#0B5394', }, secondary: { main: '#385a8a', diff --git a/migrations/sql/V1.0.2__insert_file_test_data.sql b/migrations/sql/V1.0.2__insert_file_test_data.sql new file mode 100644 index 00000000..e75b61ed --- /dev/null +++ b/migrations/sql/V1.0.2__insert_file_test_data.sql @@ -0,0 +1,47 @@ +DO $$ + DECLARE i integer := 0; + v_fileName varchar(200); + v_submissionDate date; +BEGIN + WHILE i < 50 LOOP + v_submissionDate := date '2022-01-01' + (floor(random() * (date '2024-12-31' - date '2022-01-01'))::int); + BEGIN + v_fileName := CONCAT('file_', substring(md5(random()::text), 0, 10)); + IF NOT EXISTS (SELECT 1 FROM enmods.file_submissions WHERE file_name = v_fileName) THEN + INSERT INTO enmods.file_submissions ( + file_name, + submission_date, + submitter_user_id, + submission_status_code, + submitter_agency_name, + sample_count, + results_count, + active_ind, + error_log, + organization_guid, + create_user_id, + create_utc_timestamp, + update_user_id, + update_utc_timestamp + ) + VALUES ( + v_fileName, + v_submissionDate, + 'VMANAWAT', + 'SUBMITTED', + 'MANAWAT CORP', + 12, + 50, + true, + 'THIS IS TEST ERROR LOG', + gen_random_uuid(), + 'VMANAWAT', + (now() at time zone 'utc'), + 'VMANAWAT', + (now() at time zone 'utc') + ); + i := i + 1; + END IF; + END; + END LOOP; +END $$ \ No newline at end of file