theforeman/foreman

View on GitHub
webpack/assets/javascripts/react_app/components/HostDetails/Status/StatusIcon.js

Summary

Maintainability
A
2 hrs
Test Coverage
import PropTypes from 'prop-types';
import React from 'react';
import {
  ExclamationTriangleIcon,
  CheckCircleIcon,
  ExclamationCircleIcon,
  BanIcon,
} from '@patternfly/react-icons';
import './styles.scss';
import {
  ERROR_STATUS_STATE,
  NA_STATUS_STATE,
  OK_STATUS_STATE,
  WARNING_STATUS_STATE,
} from './Constants';

const StatusIcon = ({ statusNumber, label, style }) => {
  switch (statusNumber) {
    case OK_STATUS_STATE:
      return (
        <span className="status-success" style={style}>
          <CheckCircleIcon noVerticalAlign /> {label}
        </span>
      );
    case WARNING_STATUS_STATE:
      return (
        <span className="status-warning" style={style}>
          <ExclamationTriangleIcon noVerticalAlign /> {label}
        </span>
      );

    case ERROR_STATUS_STATE:
      return (
        <span className="status-error" style={style}>
          <ExclamationCircleIcon noVerticalAlign /> {label}
        </span>
      );
    case NA_STATUS_STATE:
      return (
        <span className="disabled" style={style}>
          <BanIcon noVerticalAlign /> {label}
        </span>
      );
    default:
      return null;
  }
};

StatusIcon.propTypes = {
  label: PropTypes.string,
  statusNumber: PropTypes.number,
  style: PropTypes.shape({}),
};

StatusIcon.defaultProps = {
  label: '',
  statusNumber: undefined,
  style: undefined,
};

export default StatusIcon;