import PropTypes from "prop-types"; import React from "react"; import {connect} from "react-redux"; import {ShortcutManager} from "react-shortcuts"; import {openSimulationSucceeded} from "../actions/simulations"; import {fetchLatestDatacenter, resetCurrentDatacenter} from "../actions/topology/building"; import LoadingScreen from "../components/map/LoadingScreen"; import AppNavbar from "../components/navigation/AppNavbar"; import MapStage from "../containers/map/MapStage"; 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 TopologySidebar from "../containers/sidebars/topology/TopologySidebar"; import KeymapConfiguration from "../shortcuts/keymap"; const shortcutManager = new ShortcutManager(KeymapConfiguration); class AppComponent extends React.Component { static propTypes = { simulationId: PropTypes.number.isRequired, }; static childContextTypes = { shortcuts: PropTypes.object.isRequired }; componentDidMount() { this.props.storeSimulationId(this.props.simulationId); this.props.resetCurrentDatacenter(); this.props.fetchLatestDatacenter(); } getChildContext() { return { shortcuts: shortcutManager } } render() { return (
{this.props.datacenterIsLoading ?
:
}
); } } const mapStateToProps = state => { return { datacenterIsLoading: state.currentDatacenterId === -1, }; }; const mapDispatchToProps = dispatch => { return { storeSimulationId: id => dispatch(openSimulationSucceeded(id)), resetCurrentDatacenter: () => dispatch(resetCurrentDatacenter()), fetchLatestDatacenter: () => dispatch(fetchLatestDatacenter()), }; }; const App = connect( mapStateToProps, mapDispatchToProps )(AppComponent); export default App;