This commit is contained in:
@@ -10,6 +10,7 @@ using AyaNova.Models;
|
|||||||
using EnumsNET;
|
using EnumsNET;
|
||||||
using PuppeteerSharp;
|
using PuppeteerSharp;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
|
using System.Threading;
|
||||||
|
|
||||||
namespace AyaNova.Biz
|
namespace AyaNova.Biz
|
||||||
{
|
{
|
||||||
@@ -374,6 +375,7 @@ namespace AyaNova.Biz
|
|||||||
await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
|
await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//https://stackoverflow.com/questions/53367966/puppeteer-sharp-still-appear-many-chromium-instance-in-process-task-manager-when
|
//https://stackoverflow.com/questions/53367966/puppeteer-sharp-still-appear-many-chromium-instance-in-process-task-manager-when
|
||||||
log.LogDebug($"Launching headless Chrome now:");
|
log.LogDebug($"Launching headless Chrome now:");
|
||||||
using (var browser = await Puppeteer.LaunchAsync(lo))
|
using (var browser = await Puppeteer.LaunchAsync(lo))
|
||||||
@@ -381,6 +383,8 @@ namespace AyaNova.Biz
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
log.LogDebug($"Preparing page: adding base reporting scripts to page");
|
log.LogDebug($"Preparing page: adding base reporting scripts to page");
|
||||||
|
|
||||||
//Add Handlebars JS for compiling and presenting
|
//Add Handlebars JS for compiling and presenting
|
||||||
@@ -470,11 +474,21 @@ namespace AyaNova.Biz
|
|||||||
//prePareData / preRender
|
//prePareData / preRender
|
||||||
var ReportDataObject = $"{{ ayReportData:{ReportData}, ayReportMetaData:{reportMeta}, ayClientMetaData:{clientMeta}, ayServerMetaData:{serverMeta} }}";
|
var ReportDataObject = $"{{ ayReportData:{ReportData}, ayReportMetaData:{reportMeta}, ayClientMetaData:{clientMeta}, ayServerMetaData:{serverMeta} }}";
|
||||||
log.LogDebug($"Calling ayPreRender...");
|
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
|
//compile the template
|
||||||
log.LogDebug($"Calling Handlebars.compile...");
|
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);
|
var compiledHTML = await page.EvaluateExpressionAsync<string>(compileScript);
|
||||||
|
|
||||||
//render report as HTML
|
//render report as HTML
|
||||||
|
|||||||
@@ -9,6 +9,19 @@ async function ayPreRender(ayAllData) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let PreParedReportDataObject = null;
|
||||||
|
let DataReady=false;
|
||||||
|
|
||||||
|
async function ayPreRenderEx(ayAllData) {
|
||||||
|
if (typeof ayPrepareData === "function") {
|
||||||
|
PreParedReportDataObject = await ayPrepareData(ayAllData);
|
||||||
|
} else {
|
||||||
|
PreParedReportDataObject = ayAllData;
|
||||||
|
}
|
||||||
|
DataReady=true;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
///////////////////////////////////////
|
///////////////////////////////////////
|
||||||
// Set our stock handlebars helpers
|
// Set our stock handlebars helpers
|
||||||
//
|
//
|
||||||
@@ -38,7 +51,7 @@ function ayRegisterHelpers() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
Handlebars.registerHelper("ayWiki", function (ayValue) {
|
Handlebars.registerHelper("ayWiki", function (ayValue) {
|
||||||
if(ayValue==null){
|
if (ayValue == null) {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
return new Handlebars.SafeString(
|
return new Handlebars.SafeString(
|
||||||
|
|||||||
Reference in New Issue
Block a user