diff --git a/packages/client/src/App.css b/packages/client/src/App.css index 9c7629a8..c1c0939c 100644 --- a/packages/client/src/App.css +++ b/packages/client/src/App.css @@ -1,7 +1,6 @@ #root { - max-width: 1280px; margin: 0 auto; - padding: 2rem; + padding: 3rem; text-align: center; } @@ -42,4 +41,4 @@ .read-the-docs { color: #888; -} \ No newline at end of file +} diff --git a/packages/client/src/App.tsx b/packages/client/src/App.tsx index 95bbcd4f..0eb8897a 100644 --- a/packages/client/src/App.tsx +++ b/packages/client/src/App.tsx @@ -25,23 +25,25 @@ import { CssBaseline, Box, styled } from '@mui/material'; import { useState } from 'react'; import { SideBar } from './components/SideBar'; -const drawerWidth = 240; +const drawerWidth = 256; -const Main = styled('main', { shouldForwardProp: (prop) => prop !== 'open' })<{ open?: boolean; }>(({ theme, open }) => ({ +const Main = styled('main', { shouldForwardProp: (prop) => prop !== 'open' })<{ + open?: boolean; +}>(({ theme, open }) => ({ flexGrow: 1, padding: theme.spacing(3), transition: theme.transitions.create('margin', { easing: theme.transitions.easing.sharp, - duration: theme.transitions.duration.leavingScreen, + duration: theme.transitions.duration.leavingScreen }), - marginRight: -drawerWidth, + marginLeft: `-${drawerWidth}px`, ...(open && { transition: theme.transitions.create('margin', { easing: theme.transitions.easing.easeOut, - duration: theme.transitions.duration.enteringScreen, + duration: theme.transitions.duration.enteringScreen }), - marginRight: 0, - }), + marginLeft: 0 + }) })); function App() { @@ -52,35 +54,37 @@ function App() { - - + + -
- - - - } /> - } /> - } /> - }> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - - - -
+
+
+ + + + + } /> + } /> + } /> + }> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + + + +
diff --git a/packages/client/src/components/ControlComponent.tsx b/packages/client/src/components/ControlComponent.tsx index 5930a6bc..7dae949f 100644 --- a/packages/client/src/components/ControlComponent.tsx +++ b/packages/client/src/components/ControlComponent.tsx @@ -1,4 +1,3 @@ -import { Box } from '@mui/material'; import { DataGrid, GridColDef } from '@mui/x-data-grid'; import DeleteIcon from '@mui/icons-material/DeleteOutlined'; import { GridRowModesModel, GridActionsCellItem, GridRowId } from '@mui/x-data-grid-pro'; @@ -31,13 +30,15 @@ export const ControlComponent: React.FC = ({ tableRows }: Table) => { { field: 'name', headerName: 'Name', - width: 200, + flex: 1, + maxWidth: 200, editable: true }, { field: 'description', headerName: 'Description', - width: 575, + flex: 1, + minWidth: 500, editable: true }, { @@ -53,32 +54,22 @@ export const ControlComponent: React.FC
= ({ tableRows }: Table) => { ]; return ( - - 'auto'} + rows={rows} + columns={columns} + rowModesModel={rowModesModel} + onRowModesModelChange={handleRowModesModelChange} + initialState={{ + pagination: { + paginationModel: { + pageSize: 5 } - }} - getRowHeight={() => 'auto'} - rows={rows} - columns={columns} - rowModesModel={rowModesModel} - onRowModesModelChange={handleRowModesModelChange} - initialState={{ - pagination: { - paginationModel: { - pageSize: 8 - } - } - }} - pageSizeOptions={[5]} - checkboxSelection - disableRowSelectionOnClick - /> - + } + }} + pageSizeOptions={[5]} + checkboxSelection + disableRowSelectionOnClick + /> ); }; diff --git a/packages/client/src/components/DatasetAccessComponent.tsx b/packages/client/src/components/DatasetAccessComponent.tsx index 1fd50881..047b4be9 100644 --- a/packages/client/src/components/DatasetAccessComponent.tsx +++ b/packages/client/src/components/DatasetAccessComponent.tsx @@ -1,4 +1,4 @@ -import { Box, Switch } from '@mui/material'; +import { Switch } from '@mui/material'; import useEnhancedEffect from '@mui/material/utils/useEnhancedEffect'; import { DataGrid, GridColDef, GridRenderCellParams, useGridApiContext } from '@mui/x-data-grid'; import { GridRowModesModel } from '@mui/x-data-grid-pro'; @@ -72,31 +72,22 @@ export const DatasetAccessComponent: React.FC
= ({ tableRows }: Table) => ]; return ( - - 'auto'} + rows={rows} + columns={columns} + rowModesModel={rowModesModel} + onRowModesModelChange={handleRowModesModelChange} + initialState={{ + pagination: { + paginationModel: { + pageSize: 10 } - }} - getRowHeight={() => 'auto'} - rows={rows} - columns={columns} - rowModesModel={rowModesModel} - onRowModesModelChange={handleRowModesModelChange} - initialState={{ - pagination: { - paginationModel: { - pageSize: 10 - } - } - }} - pageSizeOptions={[5]} - checkboxSelection - disableRowSelectionOnClick - /> - + } + }} + pageSizeOptions={[5]} + checkboxSelection + disableRowSelectionOnClick + /> ); }; diff --git a/packages/client/src/components/DatasetControlComponent.tsx b/packages/client/src/components/DatasetControlComponent.tsx index 48c5707d..a8c46d59 100644 --- a/packages/client/src/components/DatasetControlComponent.tsx +++ b/packages/client/src/components/DatasetControlComponent.tsx @@ -1,4 +1,3 @@ -import { Box } from '@mui/material'; import { DataGrid, GridColDef } from '@mui/x-data-grid'; import { GridRowModesModel } from '@mui/x-data-grid-pro'; import { useState } from 'react'; @@ -27,34 +26,22 @@ export const DatasetControlComponent: React.FC
= ({ tableRows, columns }: }; return ( - - 'auto'} + rows={rows} + columns={columns} + rowModesModel={rowModesModel} + onRowModesModelChange={handleRowModesModelChange} + initialState={{ + pagination: { + paginationModel: { + pageSize: 5 } - }} - getRowHeight={() => 'auto'} - rows={rows} - columns={columns} - rowModesModel={rowModesModel} - onRowModesModelChange={handleRowModesModelChange} - initialState={{ - pagination: { - paginationModel: { - pageSize: 5 - } - } - }} - pageSizeOptions={[5, 10, 15]} - checkboxSelection - disableRowSelectionOnClick - /> - + } + }} + pageSizeOptions={[5, 10, 15]} + checkboxSelection + disableRowSelectionOnClick + /> ); }; diff --git a/packages/client/src/components/Dropdown.tsx b/packages/client/src/components/Dropdown.tsx deleted file mode 100644 index bd3dfb9e..00000000 --- a/packages/client/src/components/Dropdown.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import { Accordion, Button, Link } from '@mui/material'; -import AccordionSummary from '@mui/material/AccordionSummary'; -import AccordionDetails from '@mui/material/AccordionDetails'; -import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; - -interface SubLink { - title: string; - link?: string; -} - -interface Link { - name: string; - sublinks: SubLink[]; -} - -interface LinksProps { - links: Link[]; -} - -export const DropdownComponent: React.FC = ({ links }: LinksProps) => { - return ( -
- {links?.map((item: Link) => ( - - }> - {item.name} - - - {item.sublinks?.map((sublink: SubLink) => ( -

- -

- ))} -
-
- ))} -
- ); -}; diff --git a/packages/client/src/components/SideBar.tsx b/packages/client/src/components/SideBar.tsx index 66d08766..374f8b1d 100644 --- a/packages/client/src/components/SideBar.tsx +++ b/packages/client/src/components/SideBar.tsx @@ -1,6 +1,6 @@ import { FC, ReactNode, useState } from 'react'; import { Collapse, Divider, Drawer, List, ListItem, ListItemButton, ListItemIcon, ListItemText } from '@mui/material'; -import { ExpandMore, ExpandLess, School, Dataset, Work, Logout } from '@mui/icons-material'; +import { ExpandMore, ExpandLess, School, Dataset, Work, Logout, GroupWork } from '@mui/icons-material'; import { useAuth } from '../context/AuthContext'; import {useNavigate} from 'react-router-dom'; @@ -30,7 +30,7 @@ export const SideBar: FC = ({ open, drawerWidth }) => { icon: , subItems: [ { name: 'New Study', action: () => navigate('/study/new') }, - { name: 'Study Control', action: () => navigate('/study/contols') }, + { name: 'Study Control', action: () => navigate('/study/controls') }, { name: 'User Permissions', action: () => navigate('/study/permissions') }, { name: 'Entry Controls', action: () => navigate('/study/controls') }, { name: 'Download Tags', action: () => navigate('/study/tags') } @@ -45,6 +45,14 @@ export const SideBar: FC = ({ open, drawerWidth }) => { { name: 'Project Access', action: () => navigate('/dataset/projectaccess') } ] }, + { + name: 'Contribute', + action: () => {}, + icon: , + subItems: [ + { name: 'Tag in Study', action: () => navigate('/study/contribute') } + ] + }, { name: 'Logout', action: logout, @@ -63,6 +71,7 @@ export const SideBar: FC = ({ open, drawerWidth }) => { boxSizing: 'border-box', backgroundColor: '#103F68', color: 'white', + paddingTop: 18, mt: '64px' } }} diff --git a/packages/client/src/components/TagView.tsx b/packages/client/src/components/TagView.tsx index d0ef47c1..f2ab34b1 100644 --- a/packages/client/src/components/TagView.tsx +++ b/packages/client/src/components/TagView.tsx @@ -1,7 +1,7 @@ import { JsonForms } from '@jsonforms/react'; import { materialRenderers, materialCells } from '@jsonforms/material-renderers'; import { useLocation, useNavigate } from 'react-router-dom'; -import { Box, Button, Container } from '@mui/material'; +import { Box, Button, Container, Typography } from '@mui/material'; import { useState } from 'react'; export const TagView = () => { @@ -49,7 +49,7 @@ export const TagView = () => { ) : ( -

No Entries Tagged

+ No Entries Tagged diff --git a/packages/client/src/index.css b/packages/client/src/index.css index 2c3fac68..9ac59400 100644 --- a/packages/client/src/index.css +++ b/packages/client/src/index.css @@ -25,10 +25,9 @@ a:hover { body { margin: 0; - display: flex; place-items: center; - min-width: 320px; min-height: 100vh; + padding: 10px; } h1 { @@ -36,25 +35,6 @@ h1 { line-height: 1.1; } -button { - border-radius: 8px; - border: 1px solid transparent; - padding: 0.6em 1.2em; - font-size: 1em; - font-weight: 500; - font-family: inherit; - background-color: #1a1a1a; - cursor: pointer; - transition: border-color 0.25s; -} -button:hover { - border-color: #646cff; -} -button:focus, -button:focus-visible { - outline: 4px auto -webkit-focus-ring-color; -} - @media (prefers-color-scheme: light) { :root { color: #213547; diff --git a/packages/client/src/pages/contribute/Contribute.tsx b/packages/client/src/pages/contribute/Contribute.tsx index c8685310..e97bf7bf 100644 --- a/packages/client/src/pages/contribute/Contribute.tsx +++ b/packages/client/src/pages/contribute/Contribute.tsx @@ -1,4 +1,4 @@ -import { Container, Typography, Box, Stack, Button } from '@mui/material'; +import { Container, Typography, Box, Stack, Button, Grid } from '@mui/material'; import placeholder from './placeholder.png'; import { useNavigate } from 'react-router-dom'; @@ -92,26 +92,25 @@ export const ContributePage: React.FC = () => { }; return ( - - + + Study: {initialData.name} - - {initialData.image && } - - {initialData.complete ? 'Study Training' : 'Study Tagging'} - Study: {initialData.name} - Description: {initialData.description} - Instructions: {initialData.instructions} + + + {initialData.complete ? 'Study Training' : 'Study Tagging'} + Study: {initialData.name} + Description: {initialData.description} + Instructions: {initialData.instructions} {initialData.complete ? ( - Training Complete! Reach out to your study administrator to get access to tagging + Training Complete! Reach out to your study administrator to get access to tagging ) : ( - )} - +
); }; diff --git a/packages/client/src/pages/datasets/DatasetControls.tsx b/packages/client/src/pages/datasets/DatasetControls.tsx index bd21fbfe..fce4c3a3 100644 --- a/packages/client/src/pages/datasets/DatasetControls.tsx +++ b/packages/client/src/pages/datasets/DatasetControls.tsx @@ -97,8 +97,8 @@ export const DatasetControls: React.FC = () => { }; return ( - -

Dataset Controls

+ <> + Dataset Controls handleClick('add')}> @@ -136,6 +136,6 @@ export const DatasetControls: React.FC = () => { ))} - + ); }; diff --git a/packages/client/src/pages/datasets/ProjectAccess.tsx b/packages/client/src/pages/datasets/ProjectAccess.tsx index 936468bd..c41c8071 100644 --- a/packages/client/src/pages/datasets/ProjectAccess.tsx +++ b/packages/client/src/pages/datasets/ProjectAccess.tsx @@ -35,7 +35,7 @@ const rows = [ export const ProjectAccess: React.FC = () => { return ( - + <> Project Access } aria-controls="panel1a-content" id="panel1a-header"> @@ -63,6 +63,6 @@ export const ProjectAccess: React.FC = () => { - + ); }; diff --git a/packages/client/src/pages/projects/NewProject.tsx b/packages/client/src/pages/projects/NewProject.tsx index 304dea4e..824b3313 100644 --- a/packages/client/src/pages/projects/NewProject.tsx +++ b/packages/client/src/pages/projects/NewProject.tsx @@ -1,5 +1,5 @@ import { useNavigate } from 'react-router-dom'; -import { Button, Container } from '@mui/material'; +import { Button } from '@mui/material'; import { useState } from 'react'; import { materialRenderers, materialCells } from '@jsonforms/material-renderers'; import { JsonForms } from '@jsonforms/react'; @@ -73,11 +73,11 @@ export const NewProject: React.FC = () => { }; return ( - + <> handleChange(data)} /> - - + ); }; diff --git a/packages/client/src/pages/projects/ProjectControl.tsx b/packages/client/src/pages/projects/ProjectControl.tsx index 6c525d10..2e380beb 100644 --- a/packages/client/src/pages/projects/ProjectControl.tsx +++ b/packages/client/src/pages/projects/ProjectControl.tsx @@ -1,4 +1,4 @@ -import { Box, Container } from '@mui/material'; +import { Box, Typography } from '@mui/material'; import { ControlComponent } from '../../components/ControlComponent'; // currently hardcoded values, but eventully @@ -30,14 +30,12 @@ const rows = [ const ProjectControl: React.FC = () => { return ( - - -

Project Control

- - - -
-
+ <> + Project Control + + + + ); }; diff --git a/packages/client/src/pages/projects/ProjectUserPermissions.tsx b/packages/client/src/pages/projects/ProjectUserPermissions.tsx index 7dc85cac..003a8994 100644 --- a/packages/client/src/pages/projects/ProjectUserPermissions.tsx +++ b/packages/client/src/pages/projects/ProjectUserPermissions.tsx @@ -1,4 +1,4 @@ -import { Box, Switch } from '@mui/material'; +import { Switch, Typography } from '@mui/material'; import useEnhancedEffect from '@mui/material/utils/useEnhancedEffect'; import { DataGrid, GridColDef, GridRenderCellParams, useGridApiContext } from '@mui/x-data-grid'; import { GridRowModesModel } from '@mui/x-data-grid-pro'; @@ -94,17 +94,9 @@ export const ProjectUserPermissions: React.FC = () => { ]; return ( - -

User Permissions

+ <> + User Permissions 'auto'} rows={rows} columns={columns} @@ -113,7 +105,7 @@ export const ProjectUserPermissions: React.FC = () => { initialState={{ pagination: { paginationModel: { - pageSize: 8 + pageSize: 5 } } }} @@ -121,6 +113,6 @@ export const ProjectUserPermissions: React.FC = () => { checkboxSelection disableRowSelectionOnClick /> -
+ ); }; diff --git a/packages/client/src/pages/studies/DownloadTags.tsx b/packages/client/src/pages/studies/DownloadTags.tsx index df5a47f7..210011a7 100644 --- a/packages/client/src/pages/studies/DownloadTags.tsx +++ b/packages/client/src/pages/studies/DownloadTags.tsx @@ -1,9 +1,9 @@ -import { Button, Container } from '@mui/material'; +import { Button, Container, Typography } from '@mui/material'; export const DownloadTags: React.FC = () => { return ( -

Download Tags

+ Download Tags diff --git a/packages/client/src/pages/studies/NewStudy.tsx b/packages/client/src/pages/studies/NewStudy.tsx index 1361bfd1..d8c4e263 100644 --- a/packages/client/src/pages/studies/NewStudy.tsx +++ b/packages/client/src/pages/studies/NewStudy.tsx @@ -36,7 +36,7 @@ export const NewStudy: React.FC = () => { } return ( - + Create New Study diff --git a/packages/client/src/pages/studies/StudyControl.tsx b/packages/client/src/pages/studies/StudyControl.tsx index de2e6afc..3cce760a 100644 --- a/packages/client/src/pages/studies/StudyControl.tsx +++ b/packages/client/src/pages/studies/StudyControl.tsx @@ -1,4 +1,4 @@ -import { Box, Container } from '@mui/material'; +import {Typography} from '@mui/material'; import { ControlComponent } from '../../components/ControlComponent'; // currently hardcoded values, but eventully @@ -40,13 +40,9 @@ const rows = [ export const StudyControl: React.FC = () => { return ( - - -

Study Control

- - - -
-
+ <> + Study Control + + ); }; diff --git a/packages/client/src/pages/studies/UserPermissions.tsx b/packages/client/src/pages/studies/UserPermissions.tsx index c277b730..90718c7c 100644 --- a/packages/client/src/pages/studies/UserPermissions.tsx +++ b/packages/client/src/pages/studies/UserPermissions.tsx @@ -1,4 +1,4 @@ -import { Box, Switch } from '@mui/material'; +import { Box, Switch, Typography } from '@mui/material'; import useEnhancedEffect from '@mui/material/utils/useEnhancedEffect'; import { DataGrid, GridColDef, GridRenderCellParams, useGridApiContext } from '@mui/x-data-grid'; import { GridRowModesModel } from '@mui/x-data-grid-pro'; @@ -68,33 +68,42 @@ export const StudyUserPermissions: React.FC = () => { }; const columns: GridColDef[] = [ - { field: 'id', headerName: 'ID', flex: 0.3 }, + { + field: 'id', + headerName: 'ID', + flex: 1, + maxWidth: 100 + }, { field: 'name', headerName: 'Name', - flex: 0.9, - editable: true + editable: true, + flex: 1, + maxWidth: 300 }, { field: 'username', headerName: 'Username', - flex: 0.9, - editable: true + editable: true, + flex: 1, + maxWidth: 300 }, { field: 'email', headerName: 'Email', - flex: 1.1, + flex: 1, + maxWidth: 300, editable: true }, { field: 'adminSwitch', type: 'boolean', editable: true, + maxWidth: 200, + flex: 1, headerName: 'Study Admin', renderCell: (params) => , renderEditCell: (params) => , - flex: 0.75 }, { field: 'visibleSwitch', @@ -102,31 +111,26 @@ export const StudyUserPermissions: React.FC = () => { editable: true, headerName: 'Study Visible', renderCell: (params) => , + maxWidth: 200, + flex: 1, renderEditCell: (params) => , - flex: 0.75 }, { field: 'switch', type: 'boolean', editable: true, + maxWidth: 200, + flex: 1, headerName: 'Contribute', renderCell: (params) => , renderEditCell: (params) => , - flex: 0.75 } ]; return ( - -

User Permissions

+ <> + User Permissions 'auto'} rows={rows} columns={columns} @@ -143,6 +147,6 @@ export const StudyUserPermissions: React.FC = () => { checkboxSelection disableRowSelectionOnClick /> -
+ ); };