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 =
; } else if (container.State.Running && !container.State.Paused) { state =
; } else if (container.State.Restarting) { state =
; } else if (container.State.Paused) { state =
; } else if (container.State.ExitCode) { // state =
; state =
; } else { state =
; } return (
  • {state}
    {container.Name.replace('/', '')}
    {imageName}
  • ); }); return ( ); } }); var Containers = React.createClass({ getInitialState: function () { return { sidebarOffset: 0 }; }, handleScroll: function (e) { if (e.target.scrollTop > 0 && !this.state.sidebarOffset) { this.setState({ sidebarOffset: e.target.scrollTop }); } else if (e.target.scrollTop === 0 && this.state.sidebarOffset) { this.setState({ sidebarOffset: 0 }); } }, render: function () { var sidebarHeaderClass = 'sidebar-header'; if (this.state.sidebarOffset) { sidebarHeaderClass += ' sep'; } return (

    containers

    }>
    ); } }); module.exports = Containers;