diff options
Diffstat (limited to 'frontend/src/containers/projects')
4 files changed, 99 insertions, 0 deletions
diff --git a/frontend/src/containers/projects/FilterLink.js b/frontend/src/containers/projects/FilterLink.js new file mode 100644 index 00000000..dfd6affe --- /dev/null +++ b/frontend/src/containers/projects/FilterLink.js @@ -0,0 +1,19 @@ +import { connect } from 'react-redux' +import { setAuthVisibilityFilter } from '../../actions/projects' +import FilterButton from '../../components/projects/FilterButton' + +const mapStateToProps = (state, ownProps) => { + return { + active: state.projectList.authVisibilityFilter === ownProps.filter, + } +} + +const mapDispatchToProps = (dispatch, ownProps) => { + return { + onClick: () => dispatch(setAuthVisibilityFilter(ownProps.filter)), + } +} + +const FilterLink = connect(mapStateToProps, mapDispatchToProps)(FilterButton) + +export default FilterLink diff --git a/frontend/src/containers/projects/NewProjectButtonContainer.js b/frontend/src/containers/projects/NewProjectButtonContainer.js new file mode 100644 index 00000000..f1d83ea3 --- /dev/null +++ b/frontend/src/containers/projects/NewProjectButtonContainer.js @@ -0,0 +1,15 @@ +import { connect } from 'react-redux' +import { openNewProjectModal } from '../../actions/modals/projects' +import NewProjectButtonComponent from '../../components/projects/NewProjectButtonComponent' + +const mapDispatchToProps = dispatch => { + return { + onClick: () => dispatch(openNewProjectModal()), + } +} + +const NewProjectButtonContainer = connect(undefined, mapDispatchToProps)( + NewProjectButtonComponent, +) + +export default NewProjectButtonContainer diff --git a/frontend/src/containers/projects/ProjectActions.js b/frontend/src/containers/projects/ProjectActions.js new file mode 100644 index 00000000..b9f9a534 --- /dev/null +++ b/frontend/src/containers/projects/ProjectActions.js @@ -0,0 +1,23 @@ +import { connect } from 'react-redux' +import { deleteProject } from '../../actions/projects' +import ProjectActionButtons from '../../components/projects/ProjectActionButtons' + +const mapStateToProps = (state, ownProps) => { + return { + projectId: ownProps.projectId, + } +} + +const mapDispatchToProps = dispatch => { + return { + onViewUsers: id => { + }, // TODO implement user viewing + onDelete: id => dispatch(deleteProject(id)), + } +} + +const ProjectActions = connect(mapStateToProps, mapDispatchToProps)( + ProjectActionButtons, +) + +export default ProjectActions diff --git a/frontend/src/containers/projects/VisibleProjectAuthList.js b/frontend/src/containers/projects/VisibleProjectAuthList.js new file mode 100644 index 00000000..b7ef6d24 --- /dev/null +++ b/frontend/src/containers/projects/VisibleProjectAuthList.js @@ -0,0 +1,42 @@ +import { connect } from 'react-redux' +import ProjectList from '../../components/projects/ProjectAuthList' + +const getVisibleProjectAuths = (projectAuths, filter) => { + switch (filter) { + case 'SHOW_ALL': + return projectAuths + case 'SHOW_OWN': + return projectAuths.filter( + projectAuth => projectAuth.authorizationLevel === 'OWN', + ) + case 'SHOW_SHARED': + return projectAuths.filter( + projectAuth => projectAuth.authorizationLevel !== 'OWN', + ) + default: + return projectAuths + } +} + +const mapStateToProps = state => { + const denormalizedAuthorizations = state.projectList.authorizationsOfCurrentUser.map( + authorizationIds => { + const authorization = state.objects.authorization[authorizationIds] + authorization.user = state.objects.user[authorization.userId] + authorization.project = + state.objects.project[authorization.projectId] + return authorization + }, + ) + + return { + authorizations: getVisibleProjectAuths( + denormalizedAuthorizations, + state.projectList.authVisibilityFilter, + ), + } +} + +const VisibleProjectAuthList = connect(mapStateToProps)(ProjectList) + +export default VisibleProjectAuthList |
