| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 | import $ from 'jquery';import React, { Component } from 'react';import PropTypes from 'prop-types';import deepEqual from 'deep-equal';import './chart-flot.scss';/** * Wrapper component for jquery-flot plugin */class FlotChart extends Component {    static propTypes = {        /** data to display */        data: PropTypes.array.isRequired,        /** flot options object */        options: PropTypes.object.isRequired,        /** height of the container element */        height: PropTypes.string,        /** width of the container element */        width: PropTypes.string    }    static defaultProps = {        height: null,        width: '100%'    }    componentDidMount() {        // Flot Charts        require('flot/jquery.flot.js');        require('flot/jquery.flot.categories.js');        require('flot/jquery.flot.pie.js');        require('flot/jquery.flot.resize.js');        require('flot/jquery.flot.time.js');        require('jquery.flot.spline/jquery.flot.spline.js');        require('jquery.flot.tooltip/js/jquery.flot.tooltip.min.js');        setTimeout(() => {            this.drawChart();        }, 100);    }    componentDidUpdate(prevProps) {        if (!deepEqual(prevProps.data, this.props.data) || !deepEqual(prevProps.options, this.props.options)) {            this.drawChart();        }    }    componentWillUnmount() {        $(this.flotElement).data('plot').shutdown();    }    drawChart(nextProps) {        const data = (nextProps && nextProps.data) || this.props.data;        const options = (nextProps && nextProps.options) || this.props.options;        $.plot(this.flotElement, data, options);    }    setRef = node => {        this.flotElement = node;    }    render() {        const style = {            height: this.props.height,            width: this.props.width        };        return (            <div ref={this.setRef} style={style} {...this.props}/>        );    }}export default FlotChart;
 |