var $ = require('jquery');
var React = require('react/addons');
var Router = require('react-router');
var remote = require('remote');
var dialog = remote.require('dialog');
var metrics = require('../utils/MetricsUtil');
var OverlayTrigger = require('react-bootstrap').OverlayTrigger;
var Tooltip = require('react-bootstrap').Tooltip;
var containerActions = require('../actions/ContainerActions');
var ContainerListItem = React.createClass({
handleItemMouseEnter: function () {
var $action = $(this.getDOMNode()).find('.action');
$action.show();
},
handleItemMouseLeave: function () {
var $action = $(this.getDOMNode()).find('.action');
$action.hide();
},
handleDeleteContainer: function (e) {
e.preventDefault();
e.stopPropagation();
dialog.showMessageBox({
message: 'Are you sure you want to delete this container?',
buttons: ['Delete', 'Cancel']
}, function (index) {
if (index === 0) {
metrics.track('Deleted Container', {
from: 'list',
type: 'existing'
});
containerActions.destroy(this.props.container.Name);
}
}.bind(this));
},
render: function () {
var self = this;
var container = this.props.container;
var imageNameTokens = container.Config.Image.split('/');
var repo;
if (imageNameTokens.length > 1) {
repo = imageNameTokens[1];
} else {
repo = imageNameTokens[0];
}
var imageName = (
{container.Config.Image}}>
{repo}
);
// Synchronize all animations
var style = {
WebkitAnimationDelay: 0 + 'ms'
};
var state;
if (container.State.Downloading) {
state = (
Downloading}>
);
} else if (container.State.Running && !container.State.Paused) {
state = (
Running}>
);
} else if (container.State.Restarting) {
state = (
Restarting}>
);
} else if (container.State.Paused) {
state = (
Paused}>
);
} else if (container.State.ExitCode) {
state = (
Stopped}>
);
} else {
state = (
Stopped}>
);
}
return (
{state}
{container.Name}
{imageName}
);
}
});
module.exports = ContainerListItem;