var React = require('react/addons'); var Router = require('react-router'); var Modal = require('react-bootstrap/Modal'); var RetinaImage = require('react-retina-image'); var ModalTrigger = require('react-bootstrap/ModalTrigger'); var ContainerModal = require('./ContainerModal.react'); var ContainerStore = require('./ContainerStore'); var Header = require('./Header.react'); var async = require('async'); var _ = require('underscore'); var docker = require('./docker'); var Link = Router.Link; var RouteHandler = Router.RouteHandler; var Navigation= Router.Navigation; var ContainerList = React.createClass({ mixins: [Navigation], getInitialState: function () { return { containers: [] }; }, componentDidMount: function () { this.update(); ContainerStore.addChangeListener(this.update); if (this.state.active) { this.transitionTo('container', {name: this.state.active}); } }, componentWillMount: function () { this._start = Date.now(); }, componentWillUnmount: function () { ContainerStore.removeChangeListener(this.update); }, update: function () { var containers = _.values(ContainerStore.containers()).sort(function (a, b) { return a.Name.localeCompare(b.Name); }); var state = {}; if (!this.state.active && containers.length > 0) { state.active = containers[0].Name.replace('/', ''); } state.containers = containers; this.setState(state); }, handleClick: function (containerId) { this.setState({ active: containerId }); }, render: function () { var self = this; var containers = this.state.containers.map(function (container) { var downloadingImage = null, downloading = false; var env = container.Config.Env; if (env.length) { var obj = _.object(env.map(function (e) { return e.split('='); })); if (obj.KITEMATIC_DOWNLOADING) { downloading = true; } downloadingImage = obj.KITEMATIC_DOWNLOADING_IMAGE || null; } var imageName = downloadingImage || container.Config.Image; var state; // Synchronize all animations var style = { WebkitAnimationDelay: (self._start - Date.now()) + 'ms' }; if (downloading) { state =