This commit is contained in:
2020-09-23 18:44:30 +00:00
parent 28beeaf783
commit 629acaceb9
3 changed files with 42 additions and 8 deletions

View File

@@ -116,7 +116,7 @@ namespace AyaNova.Biz
newObject.Name = newUniqueName;
// This was stupid considering JObject can serialize directly to a report type
//but leaving in for a little while just to be sure it's all good
// newObject.Active = (bool)o["Active"];
// newObject.JsHelpers = (string)o["JsHelpers"];
// newObject.JsPrerender = (string)o["JsPrerender"];
@@ -417,15 +417,40 @@ namespace AyaNova.Biz
await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
}
System.Text.StringBuilder PageLog = new System.Text.StringBuilder();
//API DOCS http://www.puppeteersharp.com/api/index.html
log.LogDebug($"Launching headless Chrome now:");
using (var browser = await Puppeteer.LaunchAsync(lo))
using (var page = await browser.NewPageAsync())
{
try
{
//info and error logging
page.Console += async (sender, args) =>
{
switch (args.Message.Type)
{
case ConsoleType.Error:
try
{
var errorArgs = await Task.WhenAll(args.Message.Args.Select(arg => arg.ExecutionContext.EvaluateFunctionAsync("(arg) => arg instanceof Error ? arg.message : arg", arg)));
PageLog.AppendLine($"ERROR: {args.Message.Text} args: [{string.Join<object>(", ", errorArgs)}]");
}
catch { }
break;
case ConsoleType.Warning:
PageLog.AppendLine($"WARNING: {args.Message.Text}");
break;
default:
PageLog.AppendLine($"INFO: {args.Message.Text}");
break;
}
};
log.LogDebug($"Preparing page: adding base reporting scripts to page");
@@ -618,10 +643,6 @@ namespace AyaNova.Biz
log.LogDebug($"Calling render page contents to PDF");
await page.PdfAsync(outputFullPath, PdfOptions);
//close the browser
// log.LogDebug($"Closing browser");
// await browser.CloseAsync();
log.LogDebug($"Completed, returning results");
return outputFileName;
}
@@ -635,12 +656,17 @@ namespace AyaNova.Biz
//This is the error when a helper is used on the template but doesn't exist:
//Evaluation failed: d
//(it might also mean other things wrong with template)
if (PageLog.Length > 0)
{
log.LogInformation($"Error rendering report \"{report.Name}\": ");
log.LogInformation(PageLog.ToString());
}
// var v=await page.GetContentAsync();
throw;
}
finally
{
log.LogDebug($"Closing browser");
await browser.CloseAsync();
}
}