This commit is contained in:
2020-09-04 21:48:36 +00:00
parent e9341ea972
commit e854688523
4 changed files with 25 additions and 21 deletions

View File

@@ -194,7 +194,7 @@ namespace AyaNova.Api.Controllers
/// <param name="apiVersion">From route path</param>
/// <returns></returns>
[HttpPost("data")]
public async Task<IActionResult> GetReportData([FromBody] ObjectReportDataParameter reportDataParam, ApiVersion apiVersion)
public async Task<IActionResult> GetReportData([FromBody] ReportDataParameter reportDataParam, ApiVersion apiVersion)
{
/*{
public AyaType ObjectType { get; set; }

View File

@@ -253,7 +253,7 @@ namespace AyaNova.Biz
//REPORT DATA
//Data fetched to return to report designer for Client report design usage
public async Task<Newtonsoft.Json.Linq.JArray> GetReportData(ObjectReportDataParameter reportDataParam, AuthorizationRoles overrideRoles = AuthorizationRoles.NoRole)
public async Task<Newtonsoft.Json.Linq.JArray> GetReportData(ReportDataParameter reportDataParam, AuthorizationRoles overrideRoles = AuthorizationRoles.NoRole)
{
var log = AyaNova.Util.ApplicationLogging.CreateLogger("ReportBiz::GetReportData");
AuthorizationRoles effectiveRoles = CurrentUserRoles;
@@ -307,7 +307,7 @@ namespace AyaNova.Biz
//Get data
var ReportData = await GetReportData(new ObjectReportDataParameter() { ObjectType = report.ObjectType, SelectedRowIds = reportParam.SelectedRowIds, DataListKey = reportParam.DataListKey, ListView = reportParam.ListView });
var ReportData = await GetReportData(new ReportDataParameter() { ObjectType = report.ObjectType, SelectedRowIds = reportParam.SelectedRowIds, DataListKey = reportParam.DataListKey, ListView = reportParam.ListView });
//initialization
log.LogDebug("Initializing report system");
@@ -355,11 +355,20 @@ namespace AyaNova.Biz
await page.AddScriptTagAsync(new AddTagOptions() { Content = report.JsHelpers });
await page.AddStyleTagAsync(new AddTagOptions() { Content = report.Style });
var pagecontent = await page.GetContentAsync();
//add Client meta data
var clientMeta = "{}";
if (reportParam.ClientMeta != null)
clientMeta = reportParam.ClientMeta.ToString();
// await page.AddScriptTagAsync(new AddTagOptions() { Content = $"var ayClientMetaData = {clientMeta}" });
//this is how you view the contents of the page
#if (DEBUG)
var pagecontent = await page.GetContentAsync();
#endif
//compile and run handlebars template
// var compileScript = $"let ayReportData=ayPreRender({ReportData});Handlebars.compile(`{report.Template}`)(ayReportData);";
var compileScript = $"Handlebars.compile(`{report.Template}`)({{ayReportData:ayPreRender({ReportData})}});";
var compileScript = $"Handlebars.compile(`{report.Template}`)({{ ayReportData:ayPreRender({ReportData}), ayClientMetaData:{clientMeta} }});";
var resultHTML = await page.EvaluateExpressionAsync<string>(compileScript);
//render report as HTML

View File

@@ -1,7 +1,8 @@
using AyaNova.Biz;
using Newtonsoft.Json.Linq;
namespace AyaNova.Models
{
public class ObjectReportDataParameter
public class ReportDataParameter
{
public AyaType ObjectType { get; set; }
public long[] SelectedRowIds { get; set; }
@@ -16,16 +17,8 @@ namespace AyaNova.Models
public long[] SelectedRowIds { get; set; }
public string DataListKey { get; set; }
public string ListView { get; set; }//optional, if null or empty will use default list view built into DataList
public JToken ClientMeta {get;set;}//meta JSON data passed from client, not part of biz object data
}
public class RenderedReport
{
public string MimeType { get; set; }
public byte[] RenderedOutput { get; set; }
public RenderedReport()
{
MimeType = "application/pdf";
RenderedOutput = null;
}
}
}

View File

@@ -6,14 +6,16 @@ function ayRegisterHelpers() {
Handlebars.registerHelper("aymarkdown", function (astring) {
return marked(astring, { breaks: true });
});
Handlebars.registerHelper("ayJSON", function (obj) {
return JSON.stringify(obj, null, 3);
});
}
function ayPreRender(theReportData) {
function ayPreRender(theReportData) {
if (typeof reportPreRender === "function") {
return reportPreRender(theReportData);
}else{
} else {
return theReportData;
}
}