// Copyright 2015-2017 Parity Technologies (UK) Ltd. // This file is part of Parity. // Parity is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // Parity is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with Parity. If not, see . import React, { Component } from 'react'; import PropTypes from 'prop-types'; import ReactTooltip from 'react-tooltip'; import styles from './statusIndicator.css'; const statuses = ['bad', 'needsAttention', 'ok']; export default class StatusIndicator extends Component { static propTypes = { type: PropTypes.oneOf(['radial', 'signal']), id: PropTypes.string.isRequired, status: PropTypes.oneOf(statuses).isRequired, title: PropTypes.arrayOf(PropTypes.node), tooltipPlacement: PropTypes.oneOf(['left', 'top', 'bottom', 'right']) }; static defaultProps = { type: 'signal', title: [] }; render () { const { id, status, title, type, tooltipPlacement } = this.props; const tooltip = title.find(x => !x.isEmpty) ? ( { title.map(x => (
{ x }
)) }
) : null; return ( { type === 'signal' && statuses.map(this.renderBar) } {tooltip} ); } renderBar = (signal) => { const idx = statuses.indexOf(this.props.status); const isActive = statuses.indexOf(signal) <= idx; const activeClass = isActive ? styles.active : ''; return ( ); } }