UNPKG

antui-mobile

Version:
151 lines (110 loc) 4.11 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _echarts = require('echarts/lib/echarts'); var _echarts2 = _interopRequireDefault(_echarts); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _react = require('react'); var _react2 = _interopRequireDefault(_react); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * 图形组件,基于echart3 */ var Chart = function (_React$Component) { (0, _inherits3.default)(Chart, _React$Component); function Chart(props) { (0, _classCallCheck3.default)(this, Chart); var _this = (0, _possibleConstructorReturn3.default)(this, (Chart.__proto__ || (0, _getPrototypeOf2.default)(Chart)).call(this, props)); _this.getEchartsInstance = function () { return _echarts2.default.getInstanceByDom(_this.echartsElement) || _echarts2.default.init(_this.echartsElement); }; _this.bindEvents = function (instance, events) { var _loopEvent = function _loopEvent(eventName) { // ignore the event config which not satisfy if (typeof eventName === 'string' && typeof events[eventName] === 'function') { // binding event instance.off(eventName); instance.on(eventName, function (param) { events[eventName](param, instance); }); } }; for (var eventName in events) { if (Object.prototype.hasOwnProperty.call(events, eventName)) { _loopEvent(eventName); } } }; _this.renderEchartDom = function () { // init the echart object var echartObj = _this.getEchartsInstance(); // set the echart option echartObj.setOption(_this.props.option); return echartObj; }; _this.echartsElement = null; // echarts div element return _this; } (0, _createClass3.default)(Chart, [{ key: 'componentDidMount', // first add value: function componentDidMount() { var echartObj = this.renderEchartDom(); var onEvents = this.props.onEvents; this.bindEvents(echartObj, onEvents); } // update }, { key: 'componentDidUpdate', value: function componentDidUpdate() { this.renderEchartDom(); this.bindEvents(this.getEchartsInstance(), this.props.onEvents || []); } // remove }, { key: 'componentWillUnmount', value: function componentWillUnmount() { if (this.echartsElement) { _echarts2.default.dispose(this.echartsElement); } } // return the echart object // bind the events // render the dom }, { key: 'render', value: function render() { var _this2 = this; return _react2.default.createElement('div', { ref: function ref(e) { _this2.echartsElement = e; }, style: this.props.style }); } }]); return Chart; }(_react2.default.Component); Chart.propTypes = { /** 图形配置, 详见 http://echarts.baidu.com/option.html#title. */ option: _propTypes2.default.object.isRequired, /** 样式 */ style: _propTypes2.default.object, /** 事件监听,详见 http://echarts.baidu.com/api.html#events */ onEvents: _propTypes2.default.object }; Chart.defaultProps = { style: { height: 300 }, onEvents: {} }; exports.default = Chart; module.exports = exports['default'];