summaryrefslogtreecommitdiff
path: root/frontend/src/containers/app/sidebars/project/PortfolioListContainer.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/containers/app/sidebars/project/PortfolioListContainer.js
parent4befa57993831274ad7e6ca62f96aa582f81cc5d (diff)
parent3b4e27320c479bd6ef48998f448ed070e8bd7511 (diff)
Merge branch 'master' of github.com:atlarge-research/opendc-dev
Diffstat (limited to 'frontend/src/containers/app/sidebars/project/PortfolioListContainer.js')
-rw-r--r--frontend/src/containers/app/sidebars/project/PortfolioListContainer.js47
1 files changed, 47 insertions, 0 deletions
diff --git a/frontend/src/containers/app/sidebars/project/PortfolioListContainer.js b/frontend/src/containers/app/sidebars/project/PortfolioListContainer.js
new file mode 100644
index 00000000..d32a5c60
--- /dev/null
+++ b/frontend/src/containers/app/sidebars/project/PortfolioListContainer.js
@@ -0,0 +1,47 @@
+import { connect } from 'react-redux'
+import { withRouter } from 'react-router-dom'
+import PortfolioListComponent from '../../../../components/app/sidebars/project/PortfolioListComponent'
+import { deletePortfolio, setCurrentPortfolio } from '../../../../actions/portfolios'
+import { openNewPortfolioModal } from '../../../../actions/modals/portfolios'
+import { getState } from '../../../../util/state-utils'
+import { setCurrentTopology } from '../../../../actions/topology/building'
+
+const mapStateToProps = state => {
+ let portfolios = state.objects.project[state.currentProjectId] ? state.objects.project[state.currentProjectId].portfolioIds.map(t => (
+ state.objects.portfolio[t]
+ )) : []
+ if (portfolios.filter(t => !t).length > 0) {
+ portfolios = []
+ }
+
+ return {
+ currentProjectId: state.currentProjectId,
+ currentPortfolioId: state.currentPortfolioId,
+ portfolios,
+ }
+}
+
+const mapDispatchToProps = (dispatch, ownProps) => {
+ return {
+ onNewPortfolio: () => {
+ dispatch(openNewPortfolioModal())
+ },
+ onChoosePortfolio: (portfolioId) => {
+ dispatch(setCurrentPortfolio(portfolioId))
+ },
+ onDeletePortfolio: async (id) => {
+ if (id) {
+ const state = await getState(dispatch)
+ dispatch(deletePortfolio(id))
+ dispatch(setCurrentTopology(state.objects.project[state.currentProjectId].topologyIds[0]))
+ ownProps.history.push(`/projects/${state.currentProjectId}`)
+ }
+ },
+ }
+}
+
+const PortfolioListContainer = withRouter(connect(mapStateToProps, mapDispatchToProps)(
+ PortfolioListComponent,
+))
+
+export default PortfolioListContainer