var _ = require('underscore'); var $ = require('jquery'); var React = require('react/addons'); var ContainerStore = require('./ContainerStore'); var Router = require('react-router'); var Radial = require('./Radial.react'); var ContainerHomePreview = require('./ContainerHomePreview.react'); var ContainerHomeLogs = require('./ContainerHomeLogs.react'); var ContainerHomeFolders = require('./ContainerHomeFolders.react'); var ContainerUtil = require('./ContainerUtil'); var util = require('./Util'); var resizeWindow = function () { $('.left .wrapper').height(window.innerHeight - 240); $('.right .wrapper').height(window.innerHeight / 2 - 100); }; var ContainerHome = React.createClass({ mixins: [Router.State, Router.Navigation], getInitialState: function () { return { ports: {}, defaultPort: null, progress: 0 }; }, handleResize: function () { resizeWindow(); }, handleErrorClick: function () { util.openPathOrUrl('https://github.com/kitematic/kitematic/issues/new'); }, componentWillReceiveProps: function () { this.init(); }, componentDidMount: function() { this.init(); ContainerStore.on(ContainerStore.SERVER_PROGRESS_EVENT, this.updateProgress); resizeWindow(); window.addEventListener('resize', this.handleResize); }, componentWillUnmount: function() { ContainerStore.removeListener(ContainerStore.SERVER_PROGRESS_EVENT, this.updateProgress); window.removeEventListener('resize', this.handleResize); }, componentDidUpdate: function () { resizeWindow(); }, init: function () { var container = ContainerStore.container(this.getParams().name); if (!container) { return; } var ports = ContainerUtil.ports(container); this.setState({ ports: ports, defaultPort: _.find(_.keys(ports), function (port) { return util.webPorts.indexOf(port) !== -1; }), progress: ContainerStore.progress(this.getParams().name), blocked: ContainerStore.blocked(this.getParams().name) }); }, updateProgress: function (name) { if (name === this.getParams().name) { this.setState({ blocked: ContainerStore.blocked(name), progress: ContainerStore.progress(name) }); } }, render: function () { var body; if (this.props.error) { body = (