/* eslint-disable jsx-a11y/img-redundant-alt */ import React from 'react'; import PropTypes from 'prop-types'; import { CCard, CCardHeader, CRow, CCol, CCardBody, CBadge, CAlert, CPopover, CButton, CSpinner, CLabel, } from '@coreui/react'; import CIcon from '@coreui/icons-react'; import { cilSync } from '@coreui/icons'; import { prettyDate, compactSecondsToDetailed } from 'utils/helper'; import MemoryBar from './MemoryBar'; import styles from './index.module.scss'; const errorField = (t) => ( {t('status.error')} ); const DeviceStatusCard = ({ t, loading, error, deviceSerialNumber, getData, status, deviceConfig, lastStats, }) => (
{deviceSerialNumber}, {deviceConfig?.compatible}
{(!lastStats || !status) && loading ? (
) : (
Image not found { e.target.onerror = null; e.target.src = 'assets/NotFound.png'; }} height="auto" width="auto" /> {t('status.connection_status')}: {status?.connected ? ( {t('common.connected')} ) : ( {t('common.not_connected')} )} {t('status.uptime')}: {error ? errorField(t) : compactSecondsToDetailed( lastStats?.unit?.uptime, t('common.day'), t('common.days'), t('common.seconds'), )} {t('status.last_contact')}: {error ? errorField(t) : prettyDate(status?.lastContact)} {t('status.localtime')}: {error ? errorField(t) : prettyDate(lastStats?.unit?.localtime)} {t('firmware.revision')}: {deviceConfig?.firmware?.split(' / ').length > 1 ? deviceConfig.firmware.split(' / ')[1] : deviceConfig?.firmware} {t('status.load_averages')}: {error ? ( errorField(t) ) : (
{lastStats?.unit?.load[0] !== undefined ? (lastStats?.unit?.load[0] * 100).toFixed(2) : '-'} %{' / '} {lastStats?.unit?.load[1] !== undefined ? (lastStats?.unit?.load[1] * 100).toFixed(2) : '-'} %{' / '} {lastStats?.unit?.load[2] !== undefined ? (lastStats?.unit?.load[2] * 100).toFixed(2) : '-'} %
)}
{t('status.memory')}: {error ? ( errorField(t) ) : ( )}
)}
); DeviceStatusCard.propTypes = { t: PropTypes.func.isRequired, loading: PropTypes.bool.isRequired, error: PropTypes.bool.isRequired, deviceSerialNumber: PropTypes.string.isRequired, getData: PropTypes.func.isRequired, status: PropTypes.instanceOf(Object), deviceConfig: PropTypes.instanceOf(Object), lastStats: PropTypes.instanceOf(Object), }; DeviceStatusCard.defaultProps = { status: null, lastStats: null, deviceConfig: null, }; export default React.memo(DeviceStatusCard);