mozaik
Version:
Mozaik dashboard composition tool
59 lines (47 loc) • 1.44 kB
JSX
import React, { Component, PropTypes } from 'react';
import Pie from './Pie';
class PieChart extends Component {
componentDidMount() {
let { innerRadius, spacing, transitionDuration } = this.props;
this.pie = new Pie(React.findDOMNode(this.refs.svg), {
donutRatio: innerRadius,
spacing: spacing,
transitionDuration: transitionDuration
});
}
shouldComponentUpdate(data) {
if (!data.data) {
return false;
}
let wrapper = React.findDOMNode(this);
this.pie
.size(wrapper.offsetWidth, wrapper.offsetHeight)
.draw(data.data)
;
return false;
}
render() {
return (
<div className="pie_chart_wrapper">
<svg ref="svg"/>
</div>
);
}
}
PieChart.propTypes = {
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
};
PieChart.defaultProps = {
spacing: {},
innerRadius: 0,
transitionDuration: 600,
data: []
};
export { PieChart as default };