import Button from '@material-ui/core/Button'; import CircularProgress from '@material-ui/core/CircularProgress'; import Dialog from '@material-ui/core/Dialog'; import DialogActions from '@material-ui/core/DialogActions'; import DialogContent from '@material-ui/core/DialogContent'; import DialogTitle from '@material-ui/core/DialogTitle'; import ErrorIcon from '@material-ui/icons/Error'; import Grid from '@material-ui/core/Grid'; import PropTypes from 'prop-types'; import React from 'react'; import Switch from '@material-ui/core/Switch'; import Tooltip from '@material-ui/core/Tooltip'; import Typography from '@material-ui/core/Typography'; import _ from 'lodash'; import { friendlyTitle } from './util/Utils.js'; // max characters we display for error messages before truncating them const maxErrorLength = 500; class ErrorModal extends React.Component { state = { truncateErrors: true, open: false, scroll: 'paper', }; handleClickOpen = () => { this.setState({ open: true }); }; handleClose = () => { this.setState({ open: false }); }; toggleTruncateErrors = () => { this.setState({ truncateErrors: !this.state.truncateErrors }); } processErrorData = podErrors => { let shouldTruncate = false; let byPodAndContainer = _(podErrors) .keys() .sortBy() .map(pod => { let byContainer = _(podErrors[pod].errors).reduce((errors, err) => { if (!_.isEmpty(err.container)) { let c = err.container; if (_.isEmpty(errors[c.container])) { errors[c.container] = []; } let errMsg = c.message; if (_.size(errMsg) > maxErrorLength) { shouldTruncate = true; c.truncatedMessage = _.take(errMsg, maxErrorLength).join("") + "..."; } errors[c.container].push(c); } return errors; }, {}); return { pod, byContainer }; }).value(); return { byPodAndContainer, shouldTruncate }; } renderContainerErrors = (pod, errorsByContainer) => { if (_.isEmpty(errorsByContainer)) { return "No messages to display"; } return _.map(errorsByContainer, (errors, container) => (
{!er.reason ? null : er.reason + ": "} {message}