Files
galaxy/static/scripts/mvc/visualization/chart/components/screenshot.js
T
2018-05-23 15:37:14 -04:00

1 line
3.0 KiB
JavaScript

define("mvc/visualization/chart/components/screenshot",["exports"],function(e){"use strict";function t(e){try{if(0!==e.width()&&0!==e.height()){var t=function e(t,i,r){var o=t.prop("tagName").toLowerCase(),s=t.position(),c=i+s.left+parseInt(t.css("marginLeft"),10)+parseInt(t.css("borderLeftWidth"),10)+parseInt(t.css("paddingLeft"),10),h=r+s.top+parseInt(t.css("marginTop"),10)+parseInt(t.css("borderTopWidth"),10)+parseInt(t.css("paddingTop"),10);n.width;"div"==o||"span"==o?t.children().each(function(){e($(this),c,h)}):"canvas"==o&&a.drawImage(t[0],c,h)},n=document.createElement("canvas");n.width=e.outerWidth(!0),n.height=e.outerHeight(!0);var a=n.getContext("2d");a.save(),a.fillStyle="rgb(255,255,255)",a.fillRect(0,0,n.width,n.height),a.restore(),a.translate(0,0),a.textAlign="left",a.textBaseline="top",e.children().each(function(){t($(this),0,0)});var i=n.toDataURL("image/png");i&&(window.location.href=i.replace("image/png","image/octet-stream"))}}catch(e){console.debug("FAILED - screenshot::_canvas2png() - "+e),options.error&&options.error("Please reduce your visualization to a single panel and try again.")}}function n(e){var t=a(e),n=document.createElement("canvas"),i=n.getContext("2d"),r=new Image,o=$('<div style="display:none;"/>').append($(n));$("body").append(o),n.width=5*t.width,n.height=5*t.height,r.src="data:image/svg+xml;base64,"+btoa(t.string),r.onload=function(){i.drawImage(r,0,0,n.width,n.height),window.location.href=n.toDataURL("image/png").replace("image/png","image/octet-stream"),o.remove()}}function a(e){var t=e.$el.find("svg");{if(0!=t.length||!e.error){e.$el;var n=t.length,a=parseInt(t.first().css("height")),r=parseInt(t.first().css("width")),o=new XMLSerializer,s=$("<svg/>").attr({version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:r*n,height:a}),c=0;return t.each(function(){var e=$(this).clone();i(e);var t=$('<g transform="translate('+c+', 0)">').attr("xmlns","http://www.w3.org/2000/svg");t.append(e.find("g").first()),s.append(t),c+=r}),{string:o.serializeToString(s[0]),height:a,width:r}}e.error("No SVG found. This visualization type does not support SVG/PDF export.")}}function i(e){for(var t in document.styleSheets){var n=document.styleSheets[t].cssRules;if(n)for(var a=0,i=n.length;a<i;a++)try{e.find(n[a].selectorText).each(function(e,t){t.style.cssText+=n[a].style.cssText})}catch(e){}}}Object.defineProperty(e,"__esModule",{value:!0}),e.default={createPNG:function(e){e.$el.find("svg").length>0?n(e):t(e.$el.find(".charts-viewer-canvas"))},createSVG:function(e){window.location.href="data:none/none;base64,"+btoa(a(e).string)},createPDF:function(e){var t=a(e),n={filename:"visualization",type:"application/pdf",height:t.height,width:t.width,scale:2,svg:t.string},i=$("body"),r=i.find("#viewer-form");0===r.length&&(r=$("<form>",{id:"viewer-form",method:"post",action:"http://export.highcharts.com/",display:"none"}),i.append(r)),r.empty();for(var o in n){var s=$("<input/>",{type:"hidden",name:o,value:n[o]});r.append(s)}try{r.submit()}catch(e){console.log(e)}}}});