From 7151ae60cf587a502a7e09d19ebd0fd33e761bf2 Mon Sep 17 00:00:00 2001 From: Georgios Andreadis Date: Wed, 13 Sep 2017 22:32:58 +0200 Subject: Add routes for experiments UI --- src/api/routes/experiments.js | 5 +++++ src/api/routes/schedulers.js | 5 +++++ src/api/routes/simulations.js | 20 +++++++++++++++++ src/api/routes/traces.js | 9 ++++++++ .../experiments/ExperimentListComponent.js | 26 ++++++++++++++++++++++ src/pages/App.js | 4 ++-- src/pages/Experiments.js | 10 ++++++--- 7 files changed, 74 insertions(+), 5 deletions(-) create mode 100644 src/api/routes/experiments.js create mode 100644 src/api/routes/schedulers.js create mode 100644 src/api/routes/traces.js create mode 100644 src/components/experiments/ExperimentListComponent.js diff --git a/src/api/routes/experiments.js b/src/api/routes/experiments.js new file mode 100644 index 00000000..8e9cfd2f --- /dev/null +++ b/src/api/routes/experiments.js @@ -0,0 +1,5 @@ +import {deleteById} from "./util"; + +export function deleteExperiment(experimentId) { + return deleteById("/experiments/{experimentId}", {experimentId}); +} diff --git a/src/api/routes/schedulers.js b/src/api/routes/schedulers.js new file mode 100644 index 00000000..246abf32 --- /dev/null +++ b/src/api/routes/schedulers.js @@ -0,0 +1,5 @@ +import {getAll} from "./util"; + +export function getAllSchedulers() { + return getAll("/schedulers"); +} diff --git a/src/api/routes/simulations.js b/src/api/routes/simulations.js index d65460ee..09f4b6d7 100644 --- a/src/api/routes/simulations.js +++ b/src/api/routes/simulations.js @@ -46,3 +46,23 @@ export function getAuthorizationsBySimulation(simulationId) { export function getPathsOfSimulation(simulationId) { return getById("/simulations/{simulationId}/paths", {simulationId}); } + +export function getExperimentsOfSimulation(simulationId) { + return getById("/simulations/{simulationId}/experiments", {simulationId}); +} + +export function addExperiment(simulationId, experiment) { + return sendRequest({ + path: "/simulations/{simulationId}/experiments", + method: "POST", + parameters: { + body: { + experiment + }, + path: { + simulationId + }, + query: {} + } + }); +} diff --git a/src/api/routes/traces.js b/src/api/routes/traces.js new file mode 100644 index 00000000..6a34ca7c --- /dev/null +++ b/src/api/routes/traces.js @@ -0,0 +1,9 @@ +import {getAll, getById} from "./util"; + +export function getAllTraces() { + return getAll("/traces"); +} + +export function getJobsOfTrace(traceId) { + return getById("/traces/{traceId}/jobs", {traceId}); +} diff --git a/src/components/experiments/ExperimentListComponent.js b/src/components/experiments/ExperimentListComponent.js new file mode 100644 index 00000000..c3e3db8d --- /dev/null +++ b/src/components/experiments/ExperimentListComponent.js @@ -0,0 +1,26 @@ +import React from "react"; + +const ExperimentListContainer = ({experiments}) => ( + + + + + + + + + + + {experiments.map(experiment => ( + + + + + + + ))} + +
NamePathTraceScheduler
{experiment.name}{experiment.path.name}{experiment.trace.name}{experiment.scheduler.name}
+); + +export default ExperimentListContainer; diff --git a/src/pages/App.js b/src/pages/App.js index 8254853d..e70c7e48 100644 --- a/src/pages/App.js +++ b/src/pages/App.js @@ -17,7 +17,7 @@ import KeymapConfiguration from "../shortcuts/keymap"; const shortcutManager = new ShortcutManager(KeymapConfiguration); -class AppContainer extends React.Component { +class AppComponent extends React.Component { static propTypes = { simulationId: PropTypes.number.isRequired, }; @@ -77,6 +77,6 @@ const mapDispatchToProps = dispatch => { const App = connect( mapStateToProps, mapDispatchToProps -)(AppContainer); +)(AppComponent); export default App; diff --git a/src/pages/Experiments.js b/src/pages/Experiments.js index b35916e5..9dbe0dc0 100644 --- a/src/pages/Experiments.js +++ b/src/pages/Experiments.js @@ -1,14 +1,16 @@ import PropTypes from "prop-types"; import React from "react"; import {connect} from "react-redux"; +import {openSimulationSucceeded} from "../actions/simulations"; import AppNavbar from "../components/navigation/AppNavbar"; -class ExperimentsContainer extends React.Component { +class ExperimentsComponent extends React.Component { static propTypes = { simulationId: PropTypes.number.isRequired, }; componentDidMount() { + this.props.storeSimulationId(this.props.simulationId); // TODO fetch experiments } @@ -25,12 +27,14 @@ class ExperimentsContainer extends React.Component { } const mapDispatchToProps = dispatch => { - return {}; + return { + storeSimulationId: id => dispatch(openSimulationSucceeded(id)), + }; }; const Experiments = connect( undefined, mapDispatchToProps -)(ExperimentsContainer); +)(ExperimentsComponent); export default Experiments; -- cgit v1.2.3