import React from 'react'; import { connect } from 'react-redux'; import find from 'lodash/find'; import map from 'lodash/map'; import { CircularProgress } from 'weaveworks-ui-components'; import { getImagesForService } from '../../actions/app-actions'; const topologyWhitelist = ['services', 'deployments']; function getNewImages(images, currentId) { // Assume that the current image is always in the list of all available images. // Should be a safe assumption... const current = find(images, i => i.ID === currentId); const timestamp = new Date(current.CreatedAt); return find(images, i => timestamp < new Date(i.CreatedAt)) || []; } class NodeDetailsImageStatus extends React.PureComponent { constructor(props, context) { super(props, context); this.handleServiceClick = this.handleServiceClick.bind(this); } componentDidMount() { if (this.shouldRender() && this.props.serviceId) { this.props.getImagesForService(this.props.params.orgId, this.props.serviceId); } } handleServiceClick() { const { router, serviceId, params } = this.props; router.push(`/flux/${params.orgId}/services/${encodeURIComponent(serviceId)}`); } shouldRender() { const { pseudo, currentTopologyId } = this.props; return !pseudo && currentTopologyId && topologyWhitelist.includes(currentTopologyId); } renderImages() { const { errors, containers, isFetching } = this.props; const error = !isFetching && errors; if (isFetching) { return (
Error: {JSON.stringify(map(errors, 'message'))}
); } if (!containers) { return 'No service images found'; } return (