antui-mobile
Version:
mobile ui for antd
151 lines (110 loc) • 4.11 kB
JavaScript
;
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'];