import React from 'react'; import style from './style.clock'; class Face extends React.Component { static propTypes = { active: React.PropTypes.number, numbers: React.PropTypes.array, radius: React.PropTypes.number, spacing: React.PropTypes.number, twoDigits: React.PropTypes.bool }; static defaultProps = { active: null, numbers: [], radius: 0, twoDigits: false }; numberStyle (rad, num) { return { position: 'absolute', left: (rad + rad * Math.sin(360 * (Math.PI / 180) / 12 * (num - 1)) + this.props.spacing), top: (rad - rad * Math.cos(360 * (Math.PI / 180) / 12 * (num - 1)) + this.props.spacing) }; } faceStyle () { return { height: this.props.radius * 2, width: this.props.radius * 2 }; } renderNumber (number, idx) { let className = style.number; if (number === this.props.active) className += ` ${style.active}`; return ( {this.props.twoDigits ? ('0' + number).slice(-2) : number} ); } render () { return (
{this.props.numbers.map(this.renderNumber.bind(this))}
); } } export default Face;