mozaik
Version:
Mozaik dashboard composition tool
69 lines (60 loc) • 1.98 kB
JSX
import React, { Component, PropTypes } from 'react';
import PieLegends from './PieLegends.jsx';
import PieCount from './PieCount.jsx';
import PieChart from './PieChart.jsx';
class Pie extends Component {
render() {
const { data, spacing, innerRadius, transitionDuration, count, countUnit, countLabel } = this.props;
let overlay = null;
if (count !== undefined) {
overlay = (
<div className="pie_overlay">
<PieCount
count={count}
unit={countUnit}
label={countLabel}
/>
</div>
);
}
return (
<div className="pie">
<div className="pie_chart" ref="wrapper">
<PieChart
data={data}
spacing={spacing}
innerRadius={innerRadius}
transitionDuration={transitionDuration}
/>
{overlay}
</div>
<PieLegends legends={data}/>
</div>
);
}
}
Pie.propTypes = {
count: PropTypes.number,
countUnit: PropTypes.string,
countLabel: PropTypes.string,
spacing: PropTypes.object.isRequired,
innerRadius: PropTypes.number.isRequired,
transitionDuration: PropTypes.number.isRequired,
data: PropTypes.arrayOf(PropTypes.shape({
id: PropTypes.isRequired,
count: PropTypes.number,
color: PropTypes.string
})).isRequired
};
Pie.defaultProps = {
innerRadius: 0,
transitionDuration: 600,
data: [],
spacing: {
top: 30,
right: 30,
bottom: 30,
left: 30
}
};
export default Pie;