Transition to newly created containers

This commit is contained in:
Jeffrey Morgan 2015-01-22 10:59:25 -05:00
parent b010c3eeed
commit 638d6b71f9
5 changed files with 55 additions and 48 deletions

View File

@ -1,15 +1,11 @@
var async = require('async');
var $ = require('jquery');
var React = require('react');
var Router = require('react-router');
var Modal = require('react-bootstrap/Modal');
var RetinaImage = require('react-retina-image');
var ContainerStore = require('./ContainerStore');
var Navigation = Router.Navigation;
var ContainerModal = React.createClass({
mixins: [Navigation],
_searchRequest: null,
getInitialState: function () {
return {
@ -54,7 +50,7 @@ var ContainerModal = React.createClass({
var name = event.target.getAttribute('name');
var self = this;
ContainerStore.create(name, 'latest', function (err, containerName) {
// this.transitionTo('containers', {container: containerName});
require('./router').transitionTo('container', {name: containerName});
self.props.onRequestHide();
}.bind(this));
},

View File

@ -39,7 +39,6 @@ var ContainerStore = assign(EventEmitter.prototype, {
_createContainer: function (image, name, callback) {
var existing = docker.client().getContainer(name);
existing.remove(function (err, data) {
console.log('Placeholder removed.');
docker.client().createContainer({
Image: image,
Tty: false,
@ -49,12 +48,10 @@ var ContainerStore = assign(EventEmitter.prototype, {
callback(err, null);
return;
}
console.log('Created container: ' + container.id);
container.start({
PublishAllPorts: true
}, function (err) {
if (err) { callback(err, null); return; }
console.log('Started container: ' + container.id);
callback(null, container);
});
});
@ -130,14 +127,12 @@ var ContainerStore = assign(EventEmitter.prototype, {
docker.client().getEvents(function (err, stream) {
stream.setEncoding('utf8');
stream.on('data', function (data) {
console.log(data);
// TODO: Dont refresh on deleting placeholder containers
var deletingPlaceholder = data.status === 'destroy' && self.container(data.id) && self.container(data.id).Config.Env.indexOf('KITEMATIC_DOWNLOADING=true') !== -1;
console.log(deletingPlaceholder);
if (!deletingPlaceholder) {
self.update(function (err) {
console.log('Updated container data.');
});
}
});

View File

@ -3,13 +3,10 @@ var Router = require('react-router');
var RetinaImage = require('react-retina-image');
var Raven = require('raven');
var async = require('async');
var docker = require('./docker.js');
var boot2docker = require('./boot2docker.js');
var Setup = require('./Setup.react');
var Containers = require('./Containers.react');
var ContainerDetails = require('./ContainerDetails.react');
var docker = require('./docker');
var router = require('./router');
var boot2docker = require('./boot2docker');
var ContainerStore = require('./ContainerStore');
var Radial = require('./Radial.react');
var Route = Router.Route;
var NotFoundRoute = Router.NotFoundRoute;
@ -17,42 +14,11 @@ var DefaultRoute = Router.DefaultRoute;
var Link = Router.Link;
var RouteHandler = Router.RouteHandler;
var App = React.createClass({
render: function () {
return (
<RouteHandler/>
);
}
});
var NoContainers = React.createClass({
render: function () {
return (
<div>
No Containers
</div>
);
}
});
var routes = (
<Route name="app" path="/" handler={App}>
<Route name="containers" handler={Containers}>
<Route name="container" path=":name" handler={ContainerDetails}>
</Route>
<DefaultRoute handler={NoContainers}/>
</Route>
<DefaultRoute handler={Setup}/>
<Route name="setup" handler={Setup}>
</Route>
</Route>
);
boot2docker.ip(function (err, ip) {
if (window.location.hash !== '#/') {
docker.setHost(ip);
ContainerStore.init(function () {
Router.run(routes, function (Handler) {
router.run(function (Handler) {
React.render(<Handler/>, document.body);
});
});

8
app/router.js Normal file
View File

@ -0,0 +1,8 @@
var Router = require('react-router');
var routes = require('./routes');
var router = Router.create({
routes: routes
});
module.exports = router;

42
app/routes.js Normal file
View File

@ -0,0 +1,42 @@
var React = require('react');
var Setup = require('./Setup.react');
var Containers = require('./Containers.react');
var ContainerDetails = require('./ContainerDetails.react');
var Router = require('react-router');
var Route = Router.Route;
var DefaultRoute = Router.DefaultRoute;
var RouteHandler = Router.RouteHandler;
var App = React.createClass({
render: function () {
return (
<RouteHandler/>
);
}
});
var NoContainers = React.createClass({
render: function () {
return (
<div>
No Containers
</div>
);
}
});
var routes = (
<Route name="app" path="/" handler={App}>
<Route name="containers" handler={Containers}>
<Route name="container" path=":name" handler={ContainerDetails}>
</Route>
<DefaultRoute handler={NoContainers}/>
</Route>
<DefaultRoute handler={Setup}/>
<Route name="setup" handler={Setup}>
</Route>
</Route>
);
module.exports = routes;