This commit is contained in:
2020-09-03 21:58:58 +00:00
parent a3763b5503
commit 06601caac2
3 changed files with 23 additions and 11 deletions

View File

@@ -253,13 +253,19 @@ namespace AyaNova.Api.Controllers
var httpConnectionFeature = HttpContext.Features.Get<IHttpConnectionFeature>();
var API_URL = $"http://127.0.0.1:{httpConnectionFeature.LocalPort}/api/v8/";
try
{
var result = await biz.RenderReport(reportParam, API_URL);
var result = await biz.RenderReport(reportParam, API_URL);
if (string.IsNullOrWhiteSpace(result))
return BadRequest(new ApiErrorResponse(biz.Errors));
else
return Ok(ApiOkResponse.Response(result));
if (string.IsNullOrWhiteSpace(result))
return BadRequest(new ApiErrorResponse(biz.Errors));
else
return Ok(ApiOkResponse.Response(result));
}
catch (System.Exception ex)
{
return BadRequest(new ApiErrorResponse(ApiErrorCode.API_SERVER_ERROR, null, ex.Message));
}
}

View File

@@ -347,10 +347,16 @@ namespace AyaNova.Biz
log.LogDebug($"Preparing page: adding this report's scripts, style and templates to page");
//TODO: CUSTOM HELPERS
//add report pre-render, helpers and style
//TODO: Add code to vet / evaluate these scripts and see if they are safe and contain valid methods expected
await page.AddScriptTagAsync(new AddTagOptions() { Content = report.JsPrerender });
await page.AddScriptTagAsync(new AddTagOptions() { Content = report.JsHelpers });
await page.AddStyleTagAsync(new AddTagOptions() { Content = report.Style });
//compile and run handlebars template
var compileScript = $"let reportData=ayPreRender({ReportData});Handlebars.compile({report.Template})(reportData);";
var compileScript = $"let ayReportData=ayPreRender({ReportData});Handlebars.compile(`{report.Template}`)(ayReportData);";
var resultHTML = await page.EvaluateExpressionAsync<string>(compileScript);
//render report as HTML
@@ -365,8 +371,8 @@ namespace AyaNova.Biz
//If need the generated page content
//var pagecontent = await page.GetContentAsync();
string outputFileName = StringUtil.ReplaceLastOccurrence(FileUtil.NewRandomFileName,".","")+".pdf";
string outputFullPath= System.IO.Path.Combine(FileUtil.TemporaryFilesFolder,outputFileName);
string outputFileName = StringUtil.ReplaceLastOccurrence(FileUtil.NewRandomFileName, ".", "") + ".pdf";
string outputFullPath = System.IO.Path.Combine(FileUtil.TemporaryFilesFolder, outputFileName);
//render to pdf and return
await page.PdfAsync(outputFullPath);

View File

@@ -9,7 +9,7 @@ function ayRegisterHelpers() {
}
function ayPreRender(theReportData) {
if (reportPrerender != null) {
if (typeof reportPreRender === "function") {
return reportPreRender(theReportData);
}else{
return theReportData;