import PropTypes from "prop-types"; import { PureComponent } from "react"; import { FormattedNumber } from "react-intl"; import api from "mastodon/api"; import { Skeleton } from "mastodon/components/skeleton"; import { roundTo10 } from "mastodon/utils/numbers"; export default class Dimension extends PureComponent { static propTypes = { dimension: PropTypes.string.isRequired, start_at: PropTypes.string.isRequired, end_at: PropTypes.string.isRequired, limit: PropTypes.number.isRequired, label: PropTypes.string.isRequired, params: PropTypes.object, }; state = { loading: true, data: null, }; componentDidMount () { const { start_at, end_at, dimension, limit, params } = this.props; api().post("/api/v1/admin/dimensions", { keys: [dimension], start_at, end_at, limit, [dimension]: params }).then(res => { this.setState({ loading: false, data: res.data, }); }).catch(err => { console.error(err); }); } render () { const { label, limit } = this.props; const { loading, data } = this.state; let content; if (loading) { content = ( {Array.from(Array(limit)).map((_, i) => ( ))}
); } else { const sum = data[0].data.reduce((sum, cur) => sum + (cur.value * 1), 0); content = ( {data[0].data.map(item => ( ))}
{item.human_key} {typeof item.human_value !== "undefined" ? item.human_value : }
); } return (

{label}

{content}
); } }