/** * yvan.grid.js * @author luoyifan * 2018-12-27 10:17:00 */ 'use strict'; (function ($) { if (!echarts) { console.warn('no echarts!!'); return; } function resizeMe() { var $panel = $(this); var $chart = $panel.down('echarts'); var state = $.data($chart[0], 'echarts'); state.handle.resize(); } function bindEvents(target) { var $panel = $(target).parent(); if ($panel.data().hasOwnProperty('panel')) { $panel.panel({ onResize: resizeMe }); resizeMe.call($panel[0]); } } function show(target) { var state = $.data(target, 'echarts'); var opts = state.options; state.handle.setOption(opts); } $.fn.echarts = function (options, param) { if (typeof options === 'string') { return $.fn.echarts.methods[options](this, param); } options = options || {}; return this.each(function () { var state = $.data(this, 'echarts'); if (state) { $.extend(state.options, options); } else { state = $.data(this, 'echarts', { options: $.extend({}, $.fn.echarts.defaults, options), handle: echarts.init(this) }); } //setSize(this); bindEvents(this); show(this); }); }; $.fn.echarts.methods = { options: function (jq) { return $.data(jq[0], 'echarts').options; }, setOption: function (jq, options) { return jq.each(function () { var state = $.data(this, 'echarts'); $.extend(state.options, options); show(this); }); } }; //扩展到 power.xtype $.extend($.fn.power.defaults.xtype, { 'echarts': function ($target, item, context) { item.id = item.id || $.yvan.createId('echarts'); var $dom = $('
'); $.yvan.fillCommonProperties($dom, item); $dom.css({ width: '100%', height: '100%' }); $target.append($dom); $dom.echarts(item); return $dom; } }); $.fn.echarts.defaults = {}; })(jQuery);