diff options
Diffstat (limited to 'src/containers/simulations')
| -rw-r--r-- | src/containers/simulations/FilterLink.js | 22 | ||||
| -rw-r--r-- | src/containers/simulations/NewSimulationModal.js | 34 | ||||
| -rw-r--r-- | src/containers/simulations/SimulationActions.js | 24 | ||||
| -rw-r--r-- | src/containers/simulations/VisibleSimulationAuthList.js | 32 |
4 files changed, 112 insertions, 0 deletions
diff --git a/src/containers/simulations/FilterLink.js b/src/containers/simulations/FilterLink.js new file mode 100644 index 00000000..dff01ab2 --- /dev/null +++ b/src/containers/simulations/FilterLink.js @@ -0,0 +1,22 @@ +import {connect} from "react-redux"; +import {setAuthVisibilityFilter} from "../../actions/simulations"; +import FilterButton from "../../components/simulations/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/simulations/NewSimulationModal.js b/src/containers/simulations/NewSimulationModal.js new file mode 100644 index 00000000..a4a3d2a8 --- /dev/null +++ b/src/containers/simulations/NewSimulationModal.js @@ -0,0 +1,34 @@ +import React from "react"; +import {connect} from "react-redux"; +import {addSimulation, closeNewSimulationModal} from "../../actions/simulations"; +import TextInputModal from "../../components/modals/TextInputModal"; + +const NewSimulationModalComponent = ({visible, callback}) => ( + <TextInputModal title="New Simulation" label="Simulation title" + show={visible} + callback={callback}/> +); + +const mapStateToProps = state => { + return { + visible: state.newSimulationModalVisible + }; +}; + +const mapDispatchToProps = dispatch => { + return { + callback: (text) => { + if (text) { + dispatch(addSimulation(text)); + } + dispatch(closeNewSimulationModal()); + } + }; +}; + +const NewSimulationModal = connect( + mapStateToProps, + mapDispatchToProps +)(NewSimulationModalComponent); + +export default NewSimulationModal; diff --git a/src/containers/simulations/SimulationActions.js b/src/containers/simulations/SimulationActions.js new file mode 100644 index 00000000..e2ca2795 --- /dev/null +++ b/src/containers/simulations/SimulationActions.js @@ -0,0 +1,24 @@ +import {connect} from "react-redux"; +import {deleteSimulation, openSimulation} from "../../actions/simulations"; +import SimulationActionButtons from "../../components/simulations/SimulationActionButtons"; + +const mapStateToProps = (state, ownProps) => { + return { + simulationId: ownProps.simulationId + }; +}; + +const mapDispatchToProps = dispatch => { + return { + onOpen: (id) => dispatch(openSimulation(id)), + onViewUsers: (id) => {}, + onDelete: (id) => dispatch(deleteSimulation(id)), + }; +}; + +const SimulationActions = connect( + mapStateToProps, + mapDispatchToProps +)(SimulationActionButtons); + +export default SimulationActions; diff --git a/src/containers/simulations/VisibleSimulationAuthList.js b/src/containers/simulations/VisibleSimulationAuthList.js new file mode 100644 index 00000000..07740435 --- /dev/null +++ b/src/containers/simulations/VisibleSimulationAuthList.js @@ -0,0 +1,32 @@ +import {connect} from "react-redux"; +import SimulationList from "../../components/simulations/SimulationAuthList"; + +const getVisibleSimulationAuths = (simulationAuths, filter) => { + switch (filter) { + case 'SHOW_ALL': + return simulationAuths; + case 'SHOW_OWN': + return simulationAuths.filter(simulationAuth => simulationAuth.authorizationLevel === "OWN"); + case 'SHOW_SHARED': + return simulationAuths.filter(simulationAuth => simulationAuth.authorizationLevel !== "OWN"); + default: + return simulationAuths; + } +}; + +const mapStateToProps = state => { + const denormalizedAuthorizations = state.authorizationsOfCurrentUser.map(authorizationIds => { + const authorization = Object.assign({}, state.objects.authorizations[authorizationIds]); + authorization.simulation = state.objects.simulations[authorization.simulationId]; + authorization.user = state.objects.users[authorization.userId]; + return authorization; + }); + + return { + authorizations: getVisibleSimulationAuths(denormalizedAuthorizations, state.authVisibilityFilter) + }; +}; + +const VisibleSimulationAuthList = connect(mapStateToProps)(SimulationList); + +export default VisibleSimulationAuthList; |
