UNPKG

make-shift-brew-ui

Version:

Common User Interface for the Brewfactory projects, modified for MakeShift Aleworks

97 lines (75 loc) 1.8 kB
/* jshint ignore:start */ var React = require('react/addons'); var LineChart = require('./LineChart.jsx'); var DEFAULT_WIDTH = 600; var DEFAULT_HEIGHT = 300; var LogChart = React.createClass({ propTypes: { logs : React.PropTypes.array, width: React.PropTypes.number, height: React.PropTypes.number, dataKey : React.PropTypes.string.isRequired, }, /* * Get initial state * * @method getInitialState * @return {Object} state */ getInitialState: function () { return { width: DEFAULT_WIDTH }; }, /* * Get default properties * * @method getDefaultProps * @return {Object} */ getDefaultProps: function() { return { logs : [], width: DEFAULT_WIDTH, height: DEFAULT_HEIGHT }; }, componentDidMount: function () { var parent = this.getDOMNode().parentNode; window.addEventListener('resize', this.handleResize); this.setState({ width: parent.offsetWidth }); }, handleResize: function() { var parent = this.getDOMNode().parentNode; this.setState({ width: parent.offsetWidth }); }, componentWillUnmount: function() { window.removeEventListener('resize', this.handleResize); }, /* * Render * * @method render */ render: function () { var logs = this.props.logs; var width = this.state.width; var height = this.props.height; var dataKey = this.props.dataKey; var data = []; var data = [logs.map(function (log) { return { value: Math.round(log[dataKey] * 100) / 100, date: new Date(log.date) }; })]; return ( <LineChart data={data} width={width} height={height} fill={[this.props.fill]} stroke={[this.props.stroke]} /> ); } }); module.exports = LogChart;