import PropTypes from 'prop-types' import React, { useEffect } from 'react' import DocumentTitle from 'react-document-title' import { HotKeys } from 'react-hotkeys' import { useDispatch, useSelector } from 'react-redux' import { openPortfolioSucceeded } from '../actions/portfolios' import { openProjectSucceeded } from '../actions/projects' import ToolPanelComponent from '../components/app/map/controls/ToolPanelComponent' import LoadingScreen from '../components/app/map/LoadingScreen' import ScaleIndicatorContainer from '../containers/app/map/controls/ScaleIndicatorContainer' import MapStage from '../containers/app/map/MapStage' import TopologySidebarContainer from '../containers/app/sidebars/topology/TopologySidebarContainer' import DeleteMachineModal from '../containers/modals/DeleteMachineModal' import DeleteRackModal from '../containers/modals/DeleteRackModal' import DeleteRoomModal from '../containers/modals/DeleteRoomModal' import EditRackNameModal from '../containers/modals/EditRackNameModal' import EditRoomNameModal from '../containers/modals/EditRoomNameModal' import NewTopologyModal from '../containers/modals/NewTopologyModal' 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' import PortfolioResultsContainer from '../containers/app/results/PortfolioResultsContainer' import KeymapConfiguration from '../shortcuts/keymap' const App = ({ projectId, portfolioId, scenarioId }) => { const projectName = useSelector( (state) => state.currentProjectId !== '-1' && state.objects.project[state.currentProjectId] && state.objects.project[state.currentProjectId].name ) const topologyIsLoading = useSelector((state) => state.currentTopologyId === '-1') const dispatch = useDispatch() useEffect(() => { if (scenarioId) { dispatch(openScenarioSucceeded(projectId, portfolioId, scenarioId)) } else if (portfolioId) { dispatch(openPortfolioSucceeded(projectId, portfolioId)) } else { dispatch(openProjectSucceeded(projectId)) } }, [projectId, portfolioId, scenarioId, dispatch]) const constructionElements = topologyIsLoading ? (
) : (
) const portfolioElements = (
) const scenarioElements = (

Scenario loading

) return ( {scenarioId ? scenarioElements : portfolioId ? portfolioElements : constructionElements} ) } App.propTypes = { projectId: PropTypes.string.isRequired, portfolioId: PropTypes.string, scenarioId: PropTypes.string, } export default App