// 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 from 'react'; import PropTypes from 'prop-types'; import ReactTooltip from 'react-tooltip'; import { observer } from 'mobx-react'; import Store from './store'; import styles from './statusIndicator.css'; const statuses = ['bad', 'needsAttention', 'ok']; function StatusIndicator ({ id, status, title = [], tooltipPlacement, type = 'signal' }, { api }) { const store = Store.get(api); const checkStatus = status || store.overall.status; const message = title.length ? title : store.overall.message; return ( { type === 'signal' ? statuses.map((signal) => { const index = statuses.indexOf(checkStatus); const isActive = statuses.indexOf(signal) <= index; return ( ); }) : null } { message.find((x) => !x.isEmpty) ? ( { message.map((x) => (
{ x }
) ) }
) : null }
); } StatusIndicator.propTypes = { type: PropTypes.oneOf([ 'radial', 'signal' ]), id: PropTypes.string.isRequired, status: PropTypes.oneOf(statuses), title: PropTypes.arrayOf(PropTypes.node), tooltipPlacement: PropTypes.oneOf([ 'left', 'top', 'bottom', 'right' ]) }; StatusIndicator.contextTypes = { api: PropTypes.object.isRequired }; const ObserverComponent = observer(StatusIndicator); ObserverComponent.Store = Store; export default ObserverComponent;