import * as React from "react" import styled from "styled-components" import Icon from "../../icon" import withTranslate from "jamplay-common/i18n/withTranslate" const RatingStarContainer = styled.div.attrs({ className: "RatingStarContainer" })` display: flex; align-items: center; span { white-space: pre; } .RatingStarIndicator--stars-container { display: inline-block; margin-top: 4px; margin-right: 5px; color: ${(props: any) => props.theme.pumpkin}; .jamplay-icon { display: inline-block; padding-bottom: 4px; } } ` export function getStars( _count, onClick: (index) => void = (s) => s, onMouseEnter: (index) => void = (s) => s ) { const count = Math.round(_count) const stars: any[] = [] const click = (i) => () => onClick(i + 1) const enter = (i) => () => onMouseEnter(i + 1) let starCount = 0 for (let i = 0; i < count; i++) { stars.push( ) starCount++ } for (let i = 0; i < 5 - count; i++) { stars.push( ) starCount++ } return stars } type StarIndicatorPropTypes = { count: any average: any onMouseEnter?: (index: number) => void onMouseLeave?: () => void onClick?: (index: number) => void } export const StarIndicator: React.SFC = (props) => { const { count, average, onClick, onMouseEnter, onMouseLeave } = props return count > 0 ? (
{getStars(average, onClick, onMouseEnter)}
) : null } StarIndicator.displayName = "StarIndicator" interface RatingStarIndicatorPropType extends withTranslatePropType { average: any count: any } export class RatingStarIndicator extends React.Component< RatingStarIndicatorPropType, {} > { public render() { let { t } = this.props if (!t) { t = (s) => s } return ( {this.props.count > 0 ? ( {`${this.props.count} ` + t("book/reviews")} ) : ( {/* {this.props.t('book/reviews-is-not-enough-to-show')} */} )} ) } } export default withTranslate(RatingStarIndicator) as React.ComponentClass< RatingStarIndicatorPropType >