From f604406453f95c82c3e5e4294a51245661868bbe Mon Sep 17 00:00:00 2001 From: Georgios Andreadis Date: Thu, 14 Sep 2017 14:07:21 +0200 Subject: First attempt at experiment list UI --- .../experiments/ExperimentListContainer.js | 27 ++++++++++++++++ .../experiments/ExperimentRowContainer.js | 19 ++++++++++++ src/containers/modals/NewExperimentModal.js | 36 ++++++++++++++++++++++ 3 files changed, 82 insertions(+) create mode 100644 src/containers/experiments/ExperimentListContainer.js create mode 100644 src/containers/experiments/ExperimentRowContainer.js create mode 100644 src/containers/modals/NewExperimentModal.js (limited to 'src/containers') diff --git a/src/containers/experiments/ExperimentListContainer.js b/src/containers/experiments/ExperimentListContainer.js new file mode 100644 index 00000000..38e5a9f6 --- /dev/null +++ b/src/containers/experiments/ExperimentListContainer.js @@ -0,0 +1,27 @@ +import {connect} from "react-redux"; +import ExperimentListComponent from "../../components/experiments/ExperimentListComponent"; + +const mapStateToProps = state => { + if (!state.currentSimulationId) { + return { + experimentIds: [], + }; + } + + const experimentIds = state.objects.simulation[state.currentSimulationId].experimentIds; + if (experimentIds) { + return { + experimentIds, + }; + } + + return { + experimentIds: [], + }; +}; + +const ExperimentListContainer = connect( + mapStateToProps +)(ExperimentListComponent); + +export default ExperimentListContainer; diff --git a/src/containers/experiments/ExperimentRowContainer.js b/src/containers/experiments/ExperimentRowContainer.js new file mode 100644 index 00000000..99b35779 --- /dev/null +++ b/src/containers/experiments/ExperimentRowContainer.js @@ -0,0 +1,19 @@ +import {connect} from "react-redux"; +import ExperimentRowComponent from "../../components/experiments/ExperimentRowComponent"; + +const mapStateToProps = (state, ownProps) => { + const experiment = Object.assign({}, state.objects.experiment[ownProps.experimentId]); + experiment.trace = state.objects.trace[experiment.traceId]; + experiment.scheduler = state.objects.scheduler[experiment.schedulerName]; + experiment.path = state.objects.path[experiment.pathId]; + + return { + experiment, + }; +}; + +const ExperimentRowContainer = connect( + mapStateToProps +)(ExperimentRowComponent); + +export default ExperimentRowContainer; diff --git a/src/containers/modals/NewExperimentModal.js b/src/containers/modals/NewExperimentModal.js new file mode 100644 index 00000000..13aed74d --- /dev/null +++ b/src/containers/modals/NewExperimentModal.js @@ -0,0 +1,36 @@ +import {connect} from "react-redux"; +import {addExperiment} from "../../actions/experiments"; +import {closeNewExperimentModal} from "../../actions/modals/experiments"; +import NewExperimentModalComponent from "../../components/modals/custom-components/NewExperimentModalComponent"; + +const mapStateToProps = state => { + return { + show: state.modals.newExperimentModalVisible, + paths: Object.values(state.objects.path).filter(path => path.simulationId === state.currentSimulationId), + traces: Object.values(state.objects.trace), + schedulers: Object.values(state.objects.scheduler), + }; +}; + +const mapDispatchToProps = dispatch => { + return { + callback: (name, pathId, traceId, schedulerName) => { + if (name) { + dispatch(addExperiment({ + name, + pathId, + traceId, + schedulerName + })); + } + dispatch(closeNewExperimentModal()); + } + }; +}; + +const NewExperimentModal = connect( + mapStateToProps, + mapDispatchToProps +)(NewExperimentModalComponent); + +export default NewExperimentModal; -- cgit v1.2.3