import React from 'react'; import { connect } from 'react-redux'; import NodesChart from '../charts/nodes-chart'; import NodesGrid from '../charts/nodes-grid'; import NodesError from '../charts/nodes-error'; import { DelayedShow } from '../utils/delayed-show'; import { Loading, getNodeType } from './loading'; import { isTopologyEmpty } from '../utils/topology-utils'; import { CANVAS_MARGINS } from '../constants/styles'; const navbarHeight = 194; const marginTop = 0; class Nodes extends React.Component { constructor(props, context) { super(props, context); this.handleResize = this.handleResize.bind(this); this.state = { width: window.innerWidth, height: window.innerHeight - navbarHeight - marginTop, }; } componentDidMount() { window.addEventListener('resize', this.handleResize); } componentWillUnmount() { window.removeEventListener('resize', this.handleResize); } renderEmptyTopologyError(show) { return ( ); } render() { const { topologyEmpty, gridMode, topologiesLoaded, nodesLoaded, topologies, currentTopology } = this.props; return (
{this.renderEmptyTopologyError(topologiesLoaded && nodesLoaded && topologyEmpty)} {gridMode ? : }
); } handleResize() { this.setDimensions(); } setDimensions() { const width = window.innerWidth; const height = window.innerHeight - navbarHeight - marginTop; this.setState({height, width}); } } function mapStateToProps(state) { return { currentTopology: state.get('currentTopology'), gridMode: state.get('gridMode'), nodesLoaded: state.get('nodesLoaded'), topologies: state.get('topologies'), topologiesLoaded: state.get('topologiesLoaded'), topologyEmpty: isTopologyEmpty(state), }; } export default connect( mapStateToProps )(Nodes);