summaryrefslogtreecommitdiff
path: root/opendc-web/opendc-web-ui/src/containers/app/sidebars/project
diff options
context:
space:
mode:
authorFabian Mastenbroek <mail.fabianm@gmail.com>2021-07-07 11:46:57 +0200
committerFabian Mastenbroek <mail.fabianm@gmail.com>2021-07-07 11:46:57 +0200
commit1ce8bf170cda2afab334cd330325cd4fbb97dab4 (patch)
tree59911227f622a99844645b3276e73181777ab209 /opendc-web/opendc-web-ui/src/containers/app/sidebars/project
parentdfd2ded56780995cec6d91af37443b710d4ddb3b (diff)
ui: Split App container into separate components
This change splits the App container into separate pages, as a starting point for removing much of the unnecessary state from Redux.
Diffstat (limited to 'opendc-web/opendc-web-ui/src/containers/app/sidebars/project')
-rw-r--r--opendc-web/opendc-web-ui/src/containers/app/sidebars/project/PortfolioListContainer.js7
-rw-r--r--opendc-web/opendc-web-ui/src/containers/app/sidebars/project/ScenarioListContainer.js11
-rw-r--r--opendc-web/opendc-web-ui/src/containers/app/sidebars/project/TopologyListContainer.js4
3 files changed, 14 insertions, 8 deletions
diff --git a/opendc-web/opendc-web-ui/src/containers/app/sidebars/project/PortfolioListContainer.js b/opendc-web/opendc-web-ui/src/containers/app/sidebars/project/PortfolioListContainer.js
index a36997ff..28d7f0d1 100644
--- a/opendc-web/opendc-web-ui/src/containers/app/sidebars/project/PortfolioListContainer.js
+++ b/opendc-web/opendc-web-ui/src/containers/app/sidebars/project/PortfolioListContainer.js
@@ -6,16 +6,15 @@ import { addPortfolio, deletePortfolio, setCurrentPortfolio } from '../../../../
import { getState } from '../../../../util/state-utils'
import { setCurrentTopology } from '../../../../redux/actions/topology/building'
import NewPortfolioModalComponent from '../../../../components/modals/custom-components/NewPortfolioModalComponent'
-import { useActivePortfolio, useActiveProject, usePortfolios } from '../../../../data/project'
+import { usePortfolios } from '../../../../data/project'
const PortfolioListContainer = () => {
- const currentProjectId = useActiveProject()?._id
- const currentPortfolioId = useActivePortfolio()?._id
+ const router = useRouter()
+ const { project: currentProjectId, portfolio: currentPortfolioId } = router.query
const portfolios = usePortfolios(currentProjectId)
const dispatch = useDispatch()
const [isVisible, setVisible] = useState(false)
- const router = useRouter()
const actions = {
onNewPortfolio: () => setVisible(true),
onChoosePortfolio: (portfolioId) => {
diff --git a/opendc-web/opendc-web-ui/src/containers/app/sidebars/project/ScenarioListContainer.js b/opendc-web/opendc-web-ui/src/containers/app/sidebars/project/ScenarioListContainer.js
index e1be51dc..10743401 100644
--- a/opendc-web/opendc-web-ui/src/containers/app/sidebars/project/ScenarioListContainer.js
+++ b/opendc-web/opendc-web-ui/src/containers/app/sidebars/project/ScenarioListContainer.js
@@ -1,3 +1,4 @@
+import PropTypes from 'prop-types'
import React, { useState } from 'react'
import { useDispatch } from 'react-redux'
import ScenarioListComponent from '../../../../components/app/sidebars/project/ScenarioListComponent'
@@ -5,11 +6,13 @@ import { addScenario, deleteScenario, setCurrentScenario } from '../../../../red
import { setCurrentPortfolio } from '../../../../redux/actions/portfolios'
import NewScenarioModalComponent from '../../../../components/modals/custom-components/NewScenarioModalComponent'
import { useProjectTopologies } from '../../../../data/topology'
-import { useActiveScenario, useActiveProject, useScenarios } from '../../../../data/project'
+import { useActiveScenario, useScenarios } from '../../../../data/project'
import { useSchedulers, useTraces } from '../../../../data/experiments'
+import { useRouter } from 'next/router'
const ScenarioListContainer = ({ portfolioId }) => {
- const currentProjectId = useActiveProject()?._id
+ const router = useRouter()
+ const { project: currentProjectId } = router.query
const currentScenarioId = useActiveScenario()?._id
const scenarios = useScenarios(portfolioId)
const topologies = useProjectTopologies()
@@ -71,4 +74,8 @@ const ScenarioListContainer = ({ portfolioId }) => {
)
}
+ScenarioListContainer.propTypes = {
+ portfolioId: PropTypes.string.isRequired,
+}
+
export default ScenarioListContainer
diff --git a/opendc-web/opendc-web-ui/src/containers/app/sidebars/project/TopologyListContainer.js b/opendc-web/opendc-web-ui/src/containers/app/sidebars/project/TopologyListContainer.js
index 266ca495..648c4500 100644
--- a/opendc-web/opendc-web-ui/src/containers/app/sidebars/project/TopologyListContainer.js
+++ b/opendc-web/opendc-web-ui/src/containers/app/sidebars/project/TopologyListContainer.js
@@ -18,14 +18,14 @@ const TopologyListContainer = () => {
const onChooseTopology = async (id) => {
dispatch(setCurrentTopology(id))
const state = await getState(dispatch)
- router.push(`/projects/${state.currentProjectId}`)
+ await router.push(`/projects/${state.currentProjectId}/topologies/${id}`)
}
const onDeleteTopology = async (id) => {
if (id) {
const state = await getState(dispatch)
dispatch(deleteTopology(id))
dispatch(setCurrentTopology(state.objects.project[state.currentProjectId].topologyIds[0]))
- router.push(`/projects/${state.currentProjectId}`)
+ await router.push(`/projects/${state.currentProjectId}`)
}
}
const onCreateTopology = (name) => {