yvanui.echarts.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /**
  2. * yvan.grid.js
  3. * @author luoyifan
  4. * 2018-12-27 10:17:00
  5. */
  6. 'use strict';
  7. (function ($) {
  8. if (!echarts) {
  9. console.warn('no echarts!!');
  10. return;
  11. }
  12. function resizeMe() {
  13. var $panel = $(this);
  14. var $chart = $panel.down('echarts');
  15. var state = $.data($chart[0], 'echarts');
  16. state.handle.resize();
  17. }
  18. function bindEvents(target) {
  19. var $panel = $(target).parent();
  20. if ($panel.data().hasOwnProperty('panel')) {
  21. $panel.panel({ onResize: resizeMe });
  22. resizeMe.call($panel[0]);
  23. }
  24. }
  25. function show(target) {
  26. var state = $.data(target, 'echarts');
  27. var opts = state.options;
  28. state.handle.setOption(opts);
  29. }
  30. $.fn.echarts = function (options, param) {
  31. if (typeof options === 'string') {
  32. return $.fn.echarts.methods[options](this, param);
  33. }
  34. options = options || {};
  35. return this.each(function () {
  36. var state = $.data(this, 'echarts');
  37. if (state) {
  38. $.extend(state.options, options);
  39. } else {
  40. state = $.data(this, 'echarts', {
  41. options: $.extend({}, $.fn.echarts.defaults, options),
  42. handle: echarts.init(this)
  43. });
  44. }
  45. //setSize(this);
  46. bindEvents(this);
  47. show(this);
  48. });
  49. };
  50. $.fn.echarts.methods = {
  51. options: function (jq) {
  52. return $.data(jq[0], 'echarts').options;
  53. },
  54. setOption: function (jq, options) {
  55. return jq.each(function () {
  56. var state = $.data(this, 'echarts');
  57. $.extend(state.options, options);
  58. show(this);
  59. });
  60. }
  61. };
  62. //扩展到 power.xtype
  63. $.extend($.fn.power.defaults.xtype, {
  64. 'echarts': function ($target, item, context) {
  65. item.id = item.id || $.yvan.createId('echarts');
  66. var $dom = $('<div></div>');
  67. $.yvan.fillCommonProperties($dom, item);
  68. $dom.css({ width: '100%', height: '100%' });
  69. $target.append($dom);
  70. $dom.echarts(item);
  71. return $dom;
  72. }
  73. });
  74. $.fn.echarts.defaults = {};
  75. })(jQuery);