2017-06-01 12:28:59 +03:00
|
|
|
import React from 'react';
|
|
|
|
import PropTypes from 'prop-types';
|
|
|
|
import { Tooltip, TooltipButton, TooltipDivider } from 'joyent-ui-toolkit';
|
|
|
|
|
2017-06-19 15:10:57 +03:00
|
|
|
const ServicesQuickActions = ({
|
|
|
|
show,
|
|
|
|
position,
|
|
|
|
service,
|
|
|
|
url,
|
|
|
|
onBlur,
|
|
|
|
onRestartClick,
|
|
|
|
onStopClick,
|
|
|
|
onStartClick
|
|
|
|
}) => {
|
2017-06-01 12:28:59 +03:00
|
|
|
if (!show) {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
const p = Object.keys(position).reduce((p, key) => {
|
|
|
|
if (typeof position[key] === 'number') {
|
|
|
|
p[key] = `${position[key]}px`;
|
|
|
|
} else {
|
|
|
|
p[key] = position[key];
|
|
|
|
}
|
|
|
|
return p;
|
|
|
|
}, {});
|
|
|
|
|
2017-06-16 17:12:28 +03:00
|
|
|
const scaleUrl = `${url}/${service.slug}/scale`;
|
|
|
|
const deleteUrl = `${url}/${service.slug}/delete`;
|
|
|
|
|
2017-06-19 15:10:57 +03:00
|
|
|
const handleRestartClick = evt => {
|
|
|
|
onRestartClick(evt, service);
|
|
|
|
};
|
|
|
|
|
2017-06-26 15:25:46 +03:00
|
|
|
const handleStartClick = evt => {
|
|
|
|
onStartClick(evt, service);
|
|
|
|
};
|
|
|
|
|
2017-06-19 15:10:57 +03:00
|
|
|
const handleStopClick = evt => {
|
|
|
|
onStopClick(evt, service);
|
|
|
|
};
|
|
|
|
|
2017-06-26 15:25:46 +03:00
|
|
|
const status = service.instances.reduce((status, instance) => {
|
|
|
|
return status
|
|
|
|
? instance.status === status ? status : 'MIXED'
|
|
|
|
: instance.status;
|
|
|
|
}, null);
|
|
|
|
|
|
|
|
const startService = status === 'RUNNING'
|
|
|
|
? null
|
|
|
|
: <TooltipButton onClick={handleStartClick}>Start</TooltipButton>;
|
2017-06-19 15:10:57 +03:00
|
|
|
|
2017-06-26 15:25:46 +03:00
|
|
|
const stopService = status === 'STOPPED'
|
|
|
|
? null
|
|
|
|
: <TooltipButton onClick={handleStopClick}>Stop</TooltipButton>;
|
2017-06-19 15:10:57 +03:00
|
|
|
|
2017-06-01 12:28:59 +03:00
|
|
|
return (
|
|
|
|
<Tooltip {...p} onBlur={onBlur}>
|
2017-06-16 17:12:28 +03:00
|
|
|
<TooltipButton to={scaleUrl}>Scale</TooltipButton>
|
2017-06-19 15:10:57 +03:00
|
|
|
<TooltipButton onClick={handleRestartClick}>Restart</TooltipButton>
|
2017-06-26 15:25:46 +03:00
|
|
|
{startService}
|
|
|
|
{stopService}
|
2017-06-01 12:28:59 +03:00
|
|
|
<TooltipDivider />
|
2017-06-16 17:12:28 +03:00
|
|
|
<TooltipButton to={deleteUrl}>Delete</TooltipButton>
|
2017-06-01 12:28:59 +03:00
|
|
|
</Tooltip>
|
|
|
|
);
|
|
|
|
};
|
|
|
|
|
|
|
|
ServicesQuickActions.propTypes = {
|
2017-06-16 17:12:28 +03:00
|
|
|
service: PropTypes.object.isRequired,
|
|
|
|
url: PropTypes.string.isRequired,
|
2017-06-01 12:28:59 +03:00
|
|
|
position: PropTypes.object,
|
|
|
|
show: PropTypes.bool,
|
2017-06-19 15:10:57 +03:00
|
|
|
onBlur: PropTypes.func,
|
|
|
|
onRestartClick: PropTypes.func,
|
|
|
|
onStopClick: PropTypes.func,
|
|
|
|
onStartClick: PropTypes.func
|
2017-06-01 12:28:59 +03:00
|
|
|
};
|
|
|
|
|
|
|
|
export default ServicesQuickActions;
|