SaveAsImage.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. var env = require("zrender/lib/core/env");
  2. var lang = require("../../../lang");
  3. var featureManager = require("../featureManager");
  4. var saveAsImageLang = lang.toolbox.saveAsImage;
  5. function SaveAsImage(model) {
  6. this.model = model;
  7. }
  8. SaveAsImage.defaultOption = {
  9. show: true,
  10. icon: 'M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0',
  11. title: saveAsImageLang.title,
  12. type: 'png',
  13. // Default use option.backgroundColor
  14. // backgroundColor: '#fff',
  15. name: '',
  16. excludeComponents: ['toolbox'],
  17. pixelRatio: 1,
  18. lang: saveAsImageLang.lang.slice()
  19. };
  20. SaveAsImage.prototype.unusable = !env.canvasSupported;
  21. var proto = SaveAsImage.prototype;
  22. proto.onclick = function (ecModel, api) {
  23. var model = this.model;
  24. var title = model.get('name') || ecModel.get('title.0.text') || 'echarts';
  25. var $a = document.createElement('a');
  26. var type = model.get('type', true) || 'png';
  27. $a.download = title + '.' + type;
  28. $a.target = '_blank';
  29. var url = api.getConnectedDataURL({
  30. type: type,
  31. backgroundColor: model.get('backgroundColor', true) || ecModel.get('backgroundColor') || '#fff',
  32. excludeComponents: model.get('excludeComponents'),
  33. pixelRatio: model.get('pixelRatio')
  34. });
  35. $a.href = url; // Chrome and Firefox
  36. if (typeof MouseEvent === 'function' && !env.browser.ie && !env.browser.edge) {
  37. var evt = new MouseEvent('click', {
  38. view: window,
  39. bubbles: true,
  40. cancelable: false
  41. });
  42. $a.dispatchEvent(evt);
  43. } // IE
  44. else {
  45. if (window.navigator.msSaveOrOpenBlob) {
  46. var bstr = atob(url.split(',')[1]);
  47. var n = bstr.length;
  48. var u8arr = new Uint8Array(n);
  49. while (n--) {
  50. u8arr[n] = bstr.charCodeAt(n);
  51. }
  52. var blob = new Blob([u8arr]);
  53. window.navigator.msSaveOrOpenBlob(blob, title + '.' + type);
  54. } else {
  55. var lang = model.get('lang');
  56. var html = '' + '<body style="margin:0;">' + '<img src="' + url + '" style="max-width:100%;" title="' + (lang && lang[0] || '') + '" />' + '</body>';
  57. var tab = window.open();
  58. tab.document.write(html);
  59. }
  60. }
  61. };
  62. featureManager.register('saveAsImage', SaveAsImage);
  63. var _default = SaveAsImage;
  64. module.exports = _default;