import React from 'react';
import PropTypes from 'prop-types';
import {
ChartStateNoData as NoData,
ChartStateLoading as Loading,
} from '@bufferapp/analyze-shared-components';
import Chart from '../Chart';
import Footer from '../Footer';
const ChartAndFooter = ({
loading,
metrics,
metricKey,
profiles,
}) => {
if (loading) {
return <Loading active noBorder large />;
} else if (!metrics || !metrics[metricKey]) {
return <NoData />;
}
return (<div>
<Chart
metricKey={metricKey}
profilesMetricData={metrics[metricKey].profilesMetricData}
profiles={profiles}
/>
<Footer
profileTotals={metrics[metricKey].profileTotals}
profiles={profiles}
metricKey={metricKey}
/>
</div>);
};
ChartAndFooter.defaultProps = {
loading: false,
};
ChartAndFooter.propTypes = {
loading: PropTypes.bool,
metrics: PropTypes.shape({}).isRequired,
metricKey: PropTypes.string.isRequired,
profiles: PropTypes.arrayOf(PropTypes.shape({
id: PropTypes.string.isRequired,
username: PropTypes.string.isRequired,
avatarUrl: PropTypes.string.isRequired,
service: PropTypes.string.isRequired,
})).isRequired,
};
export default ChartAndFooter;
|