summaryrefslogtreecommitdiff
path: root/frontend/src/pages/App.js
diff options
context:
space:
mode:
authorjc0b <j@jc0b.computer>2020-07-10 15:18:49 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2020-08-24 19:48:02 +0200
commitd8479e7e3744b8d1d31ac4d9f972e560eacd2cf8 (patch)
tree79b7dfccec6e3cc1fce189b4605a37b354d676a2 /frontend/src/pages/App.js
parent4befa57993831274ad7e6ca62f96aa582f81cc5d (diff)
parent3b4e27320c479bd6ef48998f448ed070e8bd7511 (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.js78
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)),
}
}