2018-09-25 17:16:02 -04:00
|
|
|
const PropTypes = require('prop-types');
|
|
|
|
const React = require('react');
|
|
|
|
const FlexRow = require('../../components/flex-row/flex-row.jsx');
|
|
|
|
const classNames = require('classnames');
|
|
|
|
const approx = require('approximate-number');
|
|
|
|
|
|
|
|
const CappedNumber = require('../../components/cappednumber/cappednumber.jsx');
|
|
|
|
const projectShape = require('./projectshape.jsx').projectShape;
|
|
|
|
|
2018-09-24 15:28:10 -04:00
|
|
|
require('./stats.scss');
|
|
|
|
|
2018-09-25 17:16:02 -04:00
|
|
|
const Stats = props => (
|
2018-12-08 09:10:38 -05:00
|
|
|
<FlexRow className="stats noselect">
|
2018-09-25 17:16:02 -04:00
|
|
|
<div
|
|
|
|
className={classNames('project-loves', {loved: props.loved})}
|
|
|
|
key="loves"
|
|
|
|
onClick={props.onLoveClicked}
|
|
|
|
>
|
2018-11-14 20:06:33 -05:00
|
|
|
{approx(Math.max(0, props.loveCount), {decimal: false})}
|
2018-09-25 17:16:02 -04:00
|
|
|
</div>
|
|
|
|
<div
|
|
|
|
className={classNames('project-favorites', {favorited: props.faved})}
|
|
|
|
key="favorites"
|
|
|
|
onClick={props.onFavoriteClicked}
|
|
|
|
>
|
2018-11-14 20:06:33 -05:00
|
|
|
{approx(Math.max(0, props.favoriteCount), {decimal: false})}
|
2018-09-25 17:16:02 -04:00
|
|
|
</div>
|
|
|
|
<div
|
|
|
|
className="project-remixes"
|
|
|
|
key="remixes"
|
|
|
|
>
|
|
|
|
{approx(props.projectInfo.stats.remixes, {decimal: false})}
|
|
|
|
</div>
|
|
|
|
<div
|
|
|
|
className="project-views"
|
|
|
|
key="views"
|
|
|
|
>
|
|
|
|
<CappedNumber value={props.projectInfo.stats.views} />
|
|
|
|
</div>
|
|
|
|
</FlexRow>
|
|
|
|
);
|
|
|
|
|
|
|
|
Stats.propTypes = {
|
|
|
|
faved: PropTypes.bool,
|
|
|
|
favoriteCount: PropTypes.number,
|
|
|
|
loveCount: PropTypes.number,
|
|
|
|
loved: PropTypes.bool,
|
|
|
|
onFavoriteClicked: PropTypes.func,
|
|
|
|
onLoveClicked: PropTypes.func,
|
|
|
|
projectInfo: projectShape
|
|
|
|
};
|
|
|
|
|
|
|
|
module.exports = Stats;
|