diff options
| author | jc0b <j@jc0b.computer> | 2020-07-10 15:18:49 +0200 |
|---|---|---|
| committer | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2020-08-24 19:48:02 +0200 |
| commit | d8479e7e3744b8d1d31ac4d9f972e560eacd2cf8 (patch) | |
| tree | 79b7dfccec6e3cc1fce189b4605a37b354d676a2 /frontend/src/pages/App.js | |
| parent | 4befa57993831274ad7e6ca62f96aa582f81cc5d (diff) | |
| parent | 3b4e27320c479bd6ef48998f448ed070e8bd7511 (diff) | |
Merge branch 'master' of github.com:atlarge-research/opendc-dev
Diffstat (limited to 'frontend/src/pages/App.js')
| -rw-r--r-- | frontend/src/pages/App.js | 78 |
1 files changed, 54 insertions, 24 deletions
diff --git a/frontend/src/pages/App.js b/frontend/src/pages/App.js index 8f99d1bd..3ccae29d 100644 --- a/frontend/src/pages/App.js +++ b/frontend/src/pages/App.js @@ -3,9 +3,8 @@ import React from 'react' import DocumentTitle from 'react-document-title' import { connect } from 'react-redux' import { ShortcutManager } from 'react-shortcuts' -import { openExperimentSucceeded } from '../actions/experiments' +import { openPortfolioSucceeded } from '../actions/portfolios' import { openProjectSucceeded } from '../actions/projects' -import { resetCurrentTopology } from '../actions/topology/building' import ToolPanelComponent from '../components/app/map/controls/ToolPanelComponent' import LoadingScreen from '../components/app/map/LoadingScreen' import ScaleIndicatorContainer from '../containers/app/map/controls/ScaleIndicatorContainer' @@ -18,25 +17,33 @@ import EditRackNameModal from '../containers/modals/EditRackNameModal' import EditRoomNameModal from '../containers/modals/EditRoomNameModal' import KeymapConfiguration from '../shortcuts/keymap' import NewTopologyModal from '../containers/modals/NewTopologyModal' -import { openNewTopologyModal } from '../actions/modals/topology' import AppNavbarContainer from '../containers/navigation/AppNavbarContainer' import ProjectSidebarContainer from '../containers/app/sidebars/project/ProjectSidebarContainer' +import { openScenarioSucceeded } from '../actions/scenarios' +import NewPortfolioModal from '../containers/modals/NewPortfolioModal' +import NewScenarioModal from '../containers/modals/NewScenarioModal' const shortcutManager = new ShortcutManager(KeymapConfiguration) class AppComponent extends React.Component { static propTypes = { projectId: PropTypes.string.isRequired, - experimentId: PropTypes.number, + portfolioId: PropTypes.string, + scenarioId: PropTypes.string, projectName: PropTypes.string, - onViewTopologies: PropTypes.func, } static childContextTypes = { shortcuts: PropTypes.object.isRequired, } componentDidMount() { - this.props.openProjectSucceeded(this.props.projectId) + if (this.props.scenarioId) { + this.props.openScenarioSucceeded(this.props.projectId, this.props.portfolioId, this.props.scenarioId) + } else if (this.props.portfolioId) { + this.props.openPortfolioSucceeded(this.props.projectId, this.props.portfolioId) + } else { + this.props.openProjectSucceeded(this.props.projectId) + } } getChildContext() { @@ -46,26 +53,51 @@ class AppComponent extends React.Component { } render() { + const constructionElements = this.props.topologyIsLoading ? ( + <div className="full-height d-flex align-items-center justify-content-center"> + <LoadingScreen/> + </div> + ) : ( + <div className="full-height"> + <MapStage/> + <ScaleIndicatorContainer/> + <ToolPanelComponent/> + <ProjectSidebarContainer/> + <TopologySidebarContainer/> + </div> + ) + + const portfolioElements = ( + <div className="full-height"> + <ProjectSidebarContainer/> + <h2>Portfolio loading</h2> + </div> + ) + + const scenarioElements = ( + <div className="full-height"> + <ProjectSidebarContainer/> + <h2>Scenario loading</h2> + </div> + ) + return ( <DocumentTitle title={this.props.projectName ? this.props.projectName + ' - OpenDC' : 'Simulation - OpenDC'} > <div className="page-container full-height"> - <AppNavbarContainer fullWidth={true} /> - {this.props.topologyIsLoading ? ( - <div className="full-height d-flex align-items-center justify-content-center"> - <LoadingScreen/> - </div> - ) : ( - <div className="full-height"> - <MapStage/> - <ScaleIndicatorContainer/> - <ToolPanelComponent/> - <ProjectSidebarContainer/> - <TopologySidebarContainer/> - </div> + <AppNavbarContainer fullWidth={true}/> + {this.props.scenarioId ? ( + scenarioElements + ) : (this.props.portfolioId ? ( + portfolioElements + ) : ( + constructionElements + ) )} <NewTopologyModal/> + <NewPortfolioModal/> + <NewScenarioModal/> <EditRoomNameModal/> <DeleteRoomModal/> <EditRackNameModal/> @@ -91,11 +123,9 @@ const mapStateToProps = (state) => { const mapDispatchToProps = (dispatch) => { return { - resetCurrentTopology: () => dispatch(resetCurrentTopology()), - openProjectSucceeded: (id) => dispatch(openProjectSucceeded(id)), - onViewTopologies: () => dispatch(openNewTopologyModal()), - openExperimentSucceeded: (projectId, experimentId) => - dispatch(openExperimentSucceeded(projectId, experimentId)), + openProjectSucceeded: (projectId) => dispatch(openProjectSucceeded(projectId)), + openPortfolioSucceeded: (projectId, portfolioId) => dispatch(openPortfolioSucceeded(projectId, portfolioId)), + openScenarioSucceeded: (projectId, portfolioId, scenarioId) => dispatch(openScenarioSucceeded(projectId, portfolioId, scenarioId)), } } |
