diff options
Diffstat (limited to 'opendc-web/opendc-web-ui/src/containers/projects')
4 files changed, 84 insertions, 0 deletions
diff --git a/opendc-web/opendc-web-ui/src/containers/projects/FilterLink.js b/opendc-web/opendc-web-ui/src/containers/projects/FilterLink.js new file mode 100644 index 00000000..dfd6affe --- /dev/null +++ b/opendc-web/opendc-web-ui/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/opendc-web/opendc-web-ui/src/containers/projects/NewProjectButtonContainer.js b/opendc-web/opendc-web-ui/src/containers/projects/NewProjectButtonContainer.js new file mode 100644 index 00000000..ffd4a4a3 --- /dev/null +++ b/opendc-web/opendc-web-ui/src/containers/projects/NewProjectButtonContainer.js @@ -0,0 +1,13 @@ +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/opendc-web/opendc-web-ui/src/containers/projects/ProjectActions.js b/opendc-web/opendc-web-ui/src/containers/projects/ProjectActions.js new file mode 100644 index 00000000..8bcbb7fd --- /dev/null +++ b/opendc-web/opendc-web-ui/src/containers/projects/ProjectActions.js @@ -0,0 +1,20 @@ +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/opendc-web/opendc-web-ui/src/containers/projects/VisibleProjectAuthList.js b/opendc-web/opendc-web-ui/src/containers/projects/VisibleProjectAuthList.js new file mode 100644 index 00000000..f0010540 --- /dev/null +++ b/opendc-web/opendc-web-ui/src/containers/projects/VisibleProjectAuthList.js @@ -0,0 +1,32 @@ +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 |
