diff options
| author | Georgios Andreadis <g.andreadis@student.tudelft.nl> | 2017-08-09 14:29:14 +0300 |
|---|---|---|
| committer | Georgios Andreadis <g.andreadis@student.tudelft.nl> | 2017-09-23 10:05:18 +0200 |
| commit | 67a771cbb02ec9da3c60704901f3150b46a7262b (patch) | |
| tree | f5e8e28cc0b7539196e7cdc2f4f4e7cc2c165fbd /src/containers/projects | |
| parent | d1194f0706789287b98996b629451042f62bf6eb (diff) | |
Create basic projects page with add-button
Diffstat (limited to 'src/containers/projects')
| -rw-r--r-- | src/containers/projects/FilterLink.js | 22 | ||||
| -rw-r--r-- | src/containers/projects/NewProjectModal.js | 34 | ||||
| -rw-r--r-- | src/containers/projects/VisibleProjectAuthList.js | 25 |
3 files changed, 81 insertions, 0 deletions
diff --git a/src/containers/projects/FilterLink.js b/src/containers/projects/FilterLink.js new file mode 100644 index 00000000..e9a13436 --- /dev/null +++ b/src/containers/projects/FilterLink.js @@ -0,0 +1,22 @@ +import {connect} from "react-redux"; +import {setAuthVisibilityFilter} from "../../actions/projects"; +import FilterButton from "../../components/projects/FilterButton"; + +const mapStateToProps = (state, ownProps) => { + return { + active: state.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/src/containers/projects/NewProjectModal.js b/src/containers/projects/NewProjectModal.js new file mode 100644 index 00000000..7321cb4d --- /dev/null +++ b/src/containers/projects/NewProjectModal.js @@ -0,0 +1,34 @@ +import React from "react"; +import {connect} from "react-redux"; +import {addProject, closeNewProjectModal} from "../../actions/projects"; +import TextInputModal from "../../components/modals/TextInputModal"; + +const NewProjectModalComponent = ({visible, callback}) => ( + <TextInputModal title="New Project" label="Project title" + show={visible} + callback={callback}/> +); + +const mapStateToProps = state => { + return { + visible: state.newProjectModalVisible + }; +}; + +const mapDispatchToProps = dispatch => { + return { + callback: (text) => { + if (text) { + dispatch(addProject(text)); + dispatch(closeNewProjectModal()); + } + } + }; +}; + +const NewProjectModal = connect( + mapStateToProps, + mapDispatchToProps +)(NewProjectModalComponent); + +export default NewProjectModal; diff --git a/src/containers/projects/VisibleProjectAuthList.js b/src/containers/projects/VisibleProjectAuthList.js new file mode 100644 index 00000000..746380f6 --- /dev/null +++ b/src/containers/projects/VisibleProjectAuthList.js @@ -0,0 +1,25 @@ +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 => { + return { + authorizations: getVisibleProjectAuths(state.authorizations, state.authVisibilityFilter) + }; +}; + +const VisibleProjectAuthList = connect(mapStateToProps)(ProjectList); + +export default VisibleProjectAuthList; |
