X-Git-Url: https://git.evergreen-ils.org/?p=working%2FEvergreen.git;a=blobdiff_plain;f=Open-ILS%2Fsrc%2Feg2%2Fsrc%2Fapp%2Fshare%2Fprint%2Fprint.component.ts;h=ff1c3ed1f49feabbe804a96bd3263cac4c9782f6;hp=e7754abbd3347f7dd90a8c4f26931551d5e416c0;hb=d372c6c204fb3b835bfa8d97ee6f19622a1a6890;hpb=b489e21561d045ed760c85b983fe8fa4e339bca7 diff --git a/Open-ILS/src/eg2/src/app/share/print/print.component.ts b/Open-ILS/src/eg2/src/app/share/print/print.component.ts index e7754abbd3..ff1c3ed1f4 100644 --- a/Open-ILS/src/eg2/src/app/share/print/print.component.ts +++ b/Open-ILS/src/eg2/src/app/share/print/print.component.ts @@ -53,35 +53,64 @@ export class PrintComponent implements OnInit { this.isPrinting = true; - this.applyTemplate(printReq); - - // Give templates a chance to render before printing - setTimeout(() => { - this.dispatchPrint(printReq); - this.reset(); + this.applyTemplate(printReq).then(() => { + // Give templates a chance to render before printing + setTimeout(() => { + this.dispatchPrint(printReq); + this.reset(); + }); }); } - applyTemplate(printReq: PrintRequest) { + applyTemplate(printReq: PrintRequest): Promise { if (printReq.template) { - // Inline template. Let Angular do the interpolationwork. + // Local Angular template. this.template = printReq.template; this.context = {$implicit: printReq.contextData}; - return; + return Promise.resolve(); + } + + let promise; + + // Precompiled text + if (printReq.text) { + promise = Promise.resolve(); + + } else if (printReq.templateName || printReq.templateId) { + // Server-compiled template + + promise = this.printer.compileRemoteTemplate(printReq).then( + response => { + printReq.text = response.content; + printReq.contentType = response.contentType; + }, + err => { + console.error('Error compiling template', printReq); + return Promise.reject(new Error( + 'Error compiling server-hosted print template')); + } + ); + + } else { + console.error('Cannot find template', printReq); + return Promise.reject(new Error('Cannot find print template')); } - if (printReq.text && !this.useHatch()) { - // Insert HTML into the browser DOM for in-browser printing only. + return promise.then(() => { + + // Insert HTML into the browser DOM for in-browser printing. + if (printReq.text && !this.useHatch()) { - if (printReq.contentType === 'text/plain') { + if (printReq.contentType === 'text/plain') { // Wrap text/plain content in pre's to prevent // unintended html formatting. - printReq.text = `
${printReq.text}
`; - } + printReq.text = `
${printReq.text}
`; + } - this.htmlContainer.innerHTML = printReq.text; - } + this.htmlContainer.innerHTML = printReq.text; + } + }); } // Clear the print data @@ -129,7 +158,10 @@ export class PrintComponent implements OnInit { printViaHatch(printReq: PrintRequest) { // Send a full HTML document to Hatch - const html = `${printReq.text}`; + let html = printReq.text; + if (printReq.contentType === 'text/html') { + html = `${printReq.text}`; + } this.serverStore.getItem(`eg.print.config.${printReq.printContext}`) .then(config => {