var _ = require('underscore'); var React = require('react/addons'); var exec = require('exec'); var ContainerStore = require('./ContainerStore'); var ContainerUtil = require('./ContainerUtil'); var Router = require('react-router'); var request = require('request'); var metrics = require('./Metrics'); var webPorts = require('./Util').webPorts; var ContainerHomePreview = React.createClass({ mixins: [Router.State, Router.Navigation], getInitialState: function () { return { ports: {}, defaultPort: null }; }, componentWillReceiveProps: function () { this.init(); }, componentDidMount: function() { this.init(); }, reload: function () { var webview = document.getElementById('webview'); if (webview) { var url = webview.src; request(url, err => { if (err && err.code === 'ECONNREFUSED') { setTimeout(this.reload, 2000); } else { try { webview.reload(); } catch (err) {} } }); } }, componentDidUpdate: function () { this.reload(); }, componentWillUnmount: function() { clearInterval(this.timer); }, 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 webPorts.indexOf(port) !== -1; }) }); }, handleClickPreview: function () { if (this.state.defaultPort) { metrics.track('Opened In Browser', { from: 'preview' }); exec(['open', this.state.ports[this.state.defaultPort].url], function (err) { if (err) { throw err; } }); } }, handleClickNotShowingCorrectly: function () { metrics.track('Viewed Port Settings', { from: 'preview' }); this.transitionTo('containerSettingsPorts', {name: this.getParams().name}); }, render: function () { var preview; if (this.state.defaultPort) { var frame = React.createElement('webview', {className: 'frame', id: 'webview', src: this.state.ports[this.state.defaultPort].url, autosize: 'on'}); preview = (
You can access this container from the outside using the following IP & Port(s):
{ports}