umami/src/components/metrics/MetricsBar.js

24 lines
738 B
JavaScript
Raw Normal View History

2023-07-11 10:16:17 +02:00
import { Loading, cloneChildren } from 'react-basics';
import ErrorMessage from 'components/common/ErrorMessage';
2023-10-05 01:04:10 +02:00
import { formatLongNumber } from 'lib/format';
2023-10-03 08:51:26 +02:00
import styles from './MetricsBar.module.css';
2023-07-11 10:16:17 +02:00
export function MetricsBar({ children, isLoading, isFetched, error }) {
2023-10-05 01:04:10 +02:00
const formatFunc = n => (n >= 0 ? formatLongNumber(n) : `-${formatLongNumber(Math.abs(n))}`);
return (
2023-10-05 01:04:10 +02:00
<div className={styles.bar}>
2023-02-04 17:59:52 +01:00
{isLoading && !isFetched && <Loading icon="dots" />}
{error && <ErrorMessage />}
2023-10-03 08:51:26 +02:00
{!isLoading &&
!error &&
isFetched &&
cloneChildren(children, child => {
return { format: child.props.format || formatFunc };
})}
</div>
);
}
2023-04-21 17:00:42 +02:00
export default MetricsBar;