diff --git a/ayanova/src/api/gzapi.js b/ayanova/src/api/gzapi.js index 96f257c9..7fde4f2f 100644 --- a/ayanova/src/api/gzapi.js +++ b/ayanova/src/api/gzapi.js @@ -190,6 +190,7 @@ export default { return response; } let contentType = response.headers.get("content-type"); + if (!contentType) { return response; } @@ -199,6 +200,10 @@ export default { if (contentType.includes("text/plain")) { return await response.text(); } + + if (contentType.includes("application/pdf")) { + return await response.blob(); + } return response; }, extractBody(response) { diff --git a/ayanova/src/views/ay-report-edit.vue b/ayanova/src/views/ay-report-edit.vue index 8a9391df..9c4bea02 100644 --- a/ayanova/src/views/ay-report-edit.vue +++ b/ayanova/src/views/ay-report-edit.vue @@ -699,8 +699,13 @@ Handlebars.registerHelper('loud', function (aString) { async render() { let vm = this; //test open new window for test url - window.open("http://localhost:7575/api/v8/report/poc", "_blank"); + // window.open("http://localhost:7575/api/v8/report/poc", "_blank"); + let test = await window.$gz.api.upsert("report/post-poc", { + name: "Demko" + }); + console.log("Test is ", test); + showFile(test, "myreport"); // return; @@ -920,4 +925,40 @@ async function fetchReportData(vm) { vm.reportData = res.data; } } + +const showFile = (blobData, reportName) => { + // Adapted from: https://blog.jayway.com/2017/07/13/open-pdf-downloaded-api-javascript/ + + const fileName = (reportName && `${reportName}.pdf`) || "myreport.pdf"; + + const newBlob = new Blob([blobData], { type: "application/pdf" }); + + const newWindow = window.open("", reportName, "width=800,height=1200"); + console.log(newWindow); + if (newWindow != null) { + setTimeout(() => { + const dataUrl = window.URL.createObjectURL(newBlob); + const title = newWindow.document.createElement("title"); + const iframe = newWindow.document.createElement("iframe"); + + title.appendChild(document.createTextNode(reportName)); + newWindow.document.head.appendChild(title); + + iframe.setAttribute("src", dataUrl); + iframe.setAttribute("width", "100%"); + iframe.setAttribute("height", "100%"); + + newWindow.document.body.appendChild(iframe); + + setTimeout(() => { + // For Firefox it is necessary to delay revoking the ObjectURL + window.URL.revokeObjectURL(dataUrl); + }, 100); + }, 100); + } else { + alert( + "To display reports, please disable any pop-blockers for this page and try again." + ); + } +};