This commit is contained in:
@@ -10,6 +10,7 @@ using AyaNova.Models;
|
||||
using EnumsNET;
|
||||
using PuppeteerSharp;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System.Threading;
|
||||
|
||||
namespace AyaNova.Biz
|
||||
{
|
||||
@@ -374,6 +375,7 @@ namespace AyaNova.Biz
|
||||
await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
|
||||
}
|
||||
|
||||
|
||||
//https://stackoverflow.com/questions/53367966/puppeteer-sharp-still-appear-many-chromium-instance-in-process-task-manager-when
|
||||
log.LogDebug($"Launching headless Chrome now:");
|
||||
using (var browser = await Puppeteer.LaunchAsync(lo))
|
||||
@@ -381,6 +383,8 @@ namespace AyaNova.Biz
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
|
||||
log.LogDebug($"Preparing page: adding base reporting scripts to page");
|
||||
|
||||
//Add Handlebars JS for compiling and presenting
|
||||
@@ -470,11 +474,21 @@ namespace AyaNova.Biz
|
||||
//prePareData / preRender
|
||||
var ReportDataObject = $"{{ ayReportData:{ReportData}, ayReportMetaData:{reportMeta}, ayClientMetaData:{clientMeta}, ayServerMetaData:{serverMeta} }}";
|
||||
log.LogDebug($"Calling ayPreRender...");
|
||||
var PreParedReportDataObject = await page.EvaluateExpressionAsync<dynamic>($"ayPreRender({ReportDataObject});");//note ayPreRender is async but dont' use await to call it as the EvaluateExpressionAsync function knows how to handle that already
|
||||
|
||||
//PRE-RENDER ORIGINAL WAY
|
||||
// var PreParedReportDataObject = await page.EvaluateExpressionAsync<dynamic>($"ayPreRender({ReportDataObject});");//note ayPreRender is async but dont' use await to call it as the EvaluateExpressionAsync function knows how to handle that already
|
||||
|
||||
//PRE_RENDER WITH TIMEOUT
|
||||
var w = new WaitForFunctionOptions() { Timeout = 10000 };
|
||||
//var test = await page.WaitForExpressionAsync($"aytest()==true", w);
|
||||
// var PreParedReportDataObject = await page.WaitForExpressionAsync($"ayPreRender({ReportDataObject})!=null", w);
|
||||
|
||||
//new style, nothing to return, keeps data on page
|
||||
await page.WaitForExpressionAsync($"ayPreRenderEx({ReportDataObject})", w);
|
||||
|
||||
//compile the template
|
||||
log.LogDebug($"Calling Handlebars.compile...");
|
||||
var compileScript = $"Handlebars.compile(`{report.Template}`)({PreParedReportDataObject});";
|
||||
var compileScript = $"Handlebars.compile(`{report.Template}`)(PreParedReportDataObject);";
|
||||
var compiledHTML = await page.EvaluateExpressionAsync<string>(compileScript);
|
||||
|
||||
//render report as HTML
|
||||
|
||||
Reference in New Issue
Block a user