summaryrefslogtreecommitdiff
path: root/frontend/src/containers/projects
diff options
context:
space:
mode:
authorjc0b <j@jc0b.computer>2020-07-07 16:55:22 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2020-08-24 19:47:51 +0200
commit223e916997eb641a1662110b6de630a4cdfdf479 (patch)
tree90ca4364461f676db45f25e03d8f22fc32f9fdd8 /frontend/src/containers/projects
parent9ff1e3c6bae253372a468dbdc9b8369ab8dd2c6f (diff)
parentb810c4413079bf5aeb5374f1cd20e151a83530d0 (diff)
Merge branch 'feature/mongodb-migration' of github.com:atlarge-research/opendc-dev into feature/mongodb-migration
Diffstat (limited to 'frontend/src/containers/projects')
-rw-r--r--frontend/src/containers/projects/FilterLink.js19
-rw-r--r--frontend/src/containers/projects/NewProjectButtonContainer.js15
-rw-r--r--frontend/src/containers/projects/ProjectActions.js23
-rw-r--r--frontend/src/containers/projects/VisibleProjectAuthList.js42
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