import PropTypes from 'prop-types'; import { useContext, useEffect, useState } from 'react'; import HeaderTitle from '../../common/HeaderTitle'; import ConditionallyRender from '../../common/ConditionallyRender/ConditionallyRender'; import { CREATE_PROJECT, DELETE_PROJECT, UPDATE_PROJECT, } from '../../AccessProvider/permissions'; import { IconButton, List, ListItem, ListItemAvatar, ListItemText, Tooltip, } from '@material-ui/core'; import { Add, SupervisedUserCircle, Delete, FolderOpen, } from '@material-ui/icons'; import { Link } from 'react-router-dom'; import ConfirmDialogue from '../../common/Dialogue'; import PageContent from '../../common/PageContent/PageContent'; import { useStyles } from './styles'; import AccessContext from '../../../contexts/AccessContext'; import ResponsiveButton from '../../common/ResponsiveButton/ResponsiveButton'; const ProjectList = ({ projects, fetchProjects, removeProject, history }) => { const { hasAccess } = useContext(AccessContext); const [showDelDialogue, setShowDelDialogue] = useState(false); const [project, setProject] = useState(undefined); const styles = useStyles(); useEffect(() => { fetchProjects(); }, [fetchProjects]); const addProjectButton = () => ( history.push('/projects/create')} maxWidth="700px" tooltip="Add new project" /> } /> ); const projectLink = ({ id, name }) => ( {name} ); const mgmAccessButton = project => ( ); const deleteProjectButton = project => ( { setProject(project); setShowDelDialogue(true); }} > ); const renderProjectList = () => projects.map(project => ( )); return ( } > 0} show={renderProjectList()} elseShow={No projects defined} /> { removeProject(project); setProject(undefined); setShowDelDialogue(false); }} onClose={() => { setProject(undefined); setShowDelDialogue(false); }} title="Really delete project" /> ); }; ProjectList.propTypes = { projects: PropTypes.array.isRequired, fetchProjects: PropTypes.func.isRequired, removeProject: PropTypes.func.isRequired, history: PropTypes.object.isRequired, }; export default ProjectList;