Health.js 1.1 KiB
Newer Older
Amaury Martiny's avatar
Amaury Martiny committed
// Copyright 2015-2018 Parity Technologies (UK) Ltd.
// This file is part of Parity.
//
// SPDX-License-Identifier: MIT

Amaury Martiny's avatar
Amaury Martiny committed
import React, { Component } from 'react';
import { inject, observer } from 'mobx-react';
Amaury Martiny's avatar
Amaury Martiny committed
import { STATUS_BAD, STATUS_OK, STATUS_WARN } from '../stores/healthStore';

@inject('healthStore')
@observer
class Health extends Component {
Amaury Martiny's avatar
Amaury Martiny committed
  render () {
Amaury Martiny's avatar
Amaury Martiny committed
    const { healthStore: { averageHealth: { message } } } = this.props;
Amaury Martiny's avatar
Amaury Martiny committed
    return (
Amaury Martiny's avatar
Amaury Martiny committed
        <span className={['status_icon', this.statusToClassName()].join(' ')}>
          <svg viewBox='0 0 20 20'>
            <circle fill='#DDD' cx='10' cy='10' r='10' />
          </svg>
Amaury Martiny's avatar
Amaury Martiny committed
        </span>
Amaury Martiny's avatar
Amaury Martiny committed
        <span className='status_text'>
          {message && message.join('. ')}
        </span>
Amaury Martiny's avatar
Amaury Martiny committed
    );
  }
Amaury Martiny's avatar
Amaury Martiny committed

  statusToClassName = () => {
    const { healthStore: { averageHealth: { status } } } = this.props;
    switch (status) {
      case STATUS_OK:
        return '-good';
      case STATUS_WARN:
        return '-syncing';
      case STATUS_BAD:
      default:
        return '-bad';
    }
  };
Amaury Martiny's avatar
Amaury Martiny committed
}

export default Health;