mirror of
https://github.com/nasa/openmct.git
synced 2025-06-01 07:00:49 +00:00
parent
0f1d685ae6
commit
3093ab8067
@ -45,7 +45,7 @@ define(
|
|||||||
* @param {constant} EXPORT_IMAGE_TIMEOUT time in milliseconds before a timeout error is returned
|
* @param {constant} EXPORT_IMAGE_TIMEOUT time in milliseconds before a timeout error is returned
|
||||||
* @constructor
|
* @constructor
|
||||||
*/
|
*/
|
||||||
function ExportImageService($q, $timeout, $log, EXPORT_IMAGE_TIMEOUT, injHtml2Canvas, injJsPDF, injSaveAs) {
|
function ExportImageService($q, $timeout, $log, EXPORT_IMAGE_TIMEOUT, injHtml2Canvas, injJsPDF, injSaveAs, injFileReader) {
|
||||||
self.$q = $q;
|
self.$q = $q;
|
||||||
self.$timeout = $timeout;
|
self.$timeout = $timeout;
|
||||||
self.$log = $log;
|
self.$log = $log;
|
||||||
@ -53,6 +53,7 @@ define(
|
|||||||
self.html2canvas = injHtml2Canvas || html2canvas;
|
self.html2canvas = injHtml2Canvas || html2canvas;
|
||||||
self.jsPDF = injJsPDF || jsPDF;
|
self.jsPDF = injJsPDF || jsPDF;
|
||||||
self.saveAs = injSaveAs || saveAs;
|
self.saveAs = injSaveAs || saveAs;
|
||||||
|
self.reader = injFileReader || new FileReader();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -64,8 +65,14 @@ define(
|
|||||||
*/
|
*/
|
||||||
function renderElement(element, type) {
|
function renderElement(element, type) {
|
||||||
var defer = self.$q.defer(),
|
var defer = self.$q.defer(),
|
||||||
|
validTypes = ["png", "jpg", "jpeg"],
|
||||||
renderTimeout;
|
renderTimeout;
|
||||||
|
|
||||||
|
if (validTypes.indexOf(type) === -1) {
|
||||||
|
self.$log.error("Invalid type requested. Try: (" + validTypes.join(",") + ")");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
renderTimeout = self.$timeout(function () {
|
renderTimeout = self.$timeout(function () {
|
||||||
defer.reject("html2canvas timed out");
|
defer.reject("html2canvas timed out");
|
||||||
self.$log.warn("html2canvas timed out");
|
self.$log.warn("html2canvas timed out");
|
||||||
@ -75,18 +82,14 @@ define(
|
|||||||
self.html2canvas(element, {
|
self.html2canvas(element, {
|
||||||
onrendered: function (canvas) {
|
onrendered: function (canvas) {
|
||||||
switch (type.toLowerCase()) {
|
switch (type.toLowerCase()) {
|
||||||
case "blob":
|
|
||||||
canvas.toBlob(defer.resolve);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "png":
|
case "png":
|
||||||
defer.resolve(canvas.toDataURL("image/png", 1.0));
|
canvas.toBlob(defer.resolve, "image/png");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
case "jpg":
|
case "jpg":
|
||||||
case "jpeg":
|
case "jpeg":
|
||||||
defer.resolve(canvas.toDataURL("image/jpeg", 1.0));
|
canvas.toBlob(defer.resolve, "image/jpeg");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -133,9 +136,12 @@ define(
|
|||||||
*/
|
*/
|
||||||
ExportImageService.prototype.exportPDF = function (element, filename) {
|
ExportImageService.prototype.exportPDF = function (element, filename) {
|
||||||
return renderElement(element, "jpeg").then(function (img) {
|
return renderElement(element, "jpeg").then(function (img) {
|
||||||
var pdf = new self.jsPDF("l", "px", [element.offsetHeight, element.offsetWidth]);
|
self.reader.readAsDataURL(img);
|
||||||
pdf.addImage(img, "JPEG", 0, 0, element.offsetWidth, element.offsetHeight);
|
self.reader.onloadend = function() {
|
||||||
pdf.save(filename);
|
var pdf = new self.jsPDF("l", "px", [element.offsetHeight, element.offsetWidth]);
|
||||||
|
pdf.addImage(reader.result, "JPEG", 0, 0, element.offsetWidth, element.offsetHeight);
|
||||||
|
pdf.save(filename);
|
||||||
|
};
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -146,7 +152,7 @@ define(
|
|||||||
* @returns {promise}
|
* @returns {promise}
|
||||||
*/
|
*/
|
||||||
ExportImageService.prototype.exportJPG = function (element, filename) {
|
ExportImageService.prototype.exportJPG = function (element, filename) {
|
||||||
return renderElement(element, "blob").then(function (img) {
|
return renderElement(element, "jpeg").then(function (img) {
|
||||||
self.saveAs(img, filename);
|
self.saveAs(img, filename);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@ -158,7 +164,7 @@ define(
|
|||||||
* @returns {promise}
|
* @returns {promise}
|
||||||
*/
|
*/
|
||||||
ExportImageService.prototype.exportPNG = function (element, filename) {
|
ExportImageService.prototype.exportPNG = function (element, filename) {
|
||||||
return renderElement(element, "blob").then(function (img) {
|
return renderElement(element, "png").then(function (img) {
|
||||||
self.saveAs(img, filename);
|
self.saveAs(img, filename);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user