const React = require('react'); const Logo = require('./logo'); const AppStore = require('../stores/app-store'); const Sidebar = require('./sidebar.js'); const Status = require('./status.js'); const Topologies = require('./topologies.js'); const TopologyOptions = require('./topology-options.js'); const WebapiUtils = require('../utils/web-api-utils'); const AppActions = require('../actions/app-actions'); const Details = require('./details'); const Nodes = require('./nodes'); const RouterUtils = require('../utils/router-utils'); const ESC_KEY_CODE = 27; function getStateFromStores() { return { activeTopologyOptions: AppStore.getActiveTopologyOptions(), controlError: AppStore.getControlError(), controlPending: AppStore.isControlPending(), currentTopology: AppStore.getCurrentTopology(), currentTopologyId: AppStore.getCurrentTopologyId(), currentTopologyOptions: AppStore.getCurrentTopologyOptions(), errorUrl: AppStore.getErrorUrl(), highlightedEdgeIds: AppStore.getHighlightedEdgeIds(), highlightedNodeIds: AppStore.getHighlightedNodeIds(), selectedNodeId: AppStore.getSelectedNodeId(), nodeDetails: AppStore.getNodeDetails(), nodes: AppStore.getNodes(), topologies: AppStore.getTopologies(), topologiesLoaded: AppStore.isTopologiesLoaded(), version: AppStore.getVersion(), websocketClosed: AppStore.isWebsocketClosed() }; } const App = React.createClass({ getInitialState: function() { return getStateFromStores(); }, componentDidMount: function() { AppStore.on(AppStore.CHANGE_EVENT, this.onChange); window.addEventListener('keyup', this.onKeyPress); RouterUtils.getRouter().start({hashbang: true}); if (!AppStore.isRouteSet()) { // dont request topologies when already done via router WebapiUtils.getTopologies(AppStore.getActiveTopologyOptions()); } WebapiUtils.getApiDetails(); }, onChange: function() { this.setState(getStateFromStores()); }, onKeyPress: function(ev) { if (ev.keyCode === ESC_KEY_CODE) { AppActions.hitEsc(); } }, render: function() { const showingDetails = this.state.selectedNodeId; const versionString = this.state.version ? 'Version ' + this.state.version : ''; // width of details panel blocking a view const detailsWidth = showingDetails ? 450 : 0; const topMargin = 100; return (
{showingDetails &&
}
{versionString}   Report an issue
); }, }); module.exports = App;