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> /// <param name="apiVersion">From route path</param>
/// <returns></returns> /// <returns></returns>
[HttpPost("data")] [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; } public AyaType ObjectType { get; set; }

View File

@@ -253,7 +253,7 @@ namespace AyaNova.Biz
//REPORT DATA //REPORT DATA
//Data fetched to return to report designer for Client report design usage //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"); var log = AyaNova.Util.ApplicationLogging.CreateLogger("ReportBiz::GetReportData");
AuthorizationRoles effectiveRoles = CurrentUserRoles; AuthorizationRoles effectiveRoles = CurrentUserRoles;
@@ -307,7 +307,7 @@ namespace AyaNova.Biz
//Get data //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 //initialization
log.LogDebug("Initializing report system"); log.LogDebug("Initializing report system");
@@ -355,11 +355,20 @@ namespace AyaNova.Biz
await page.AddScriptTagAsync(new AddTagOptions() { Content = report.JsHelpers }); await page.AddScriptTagAsync(new AddTagOptions() { Content = report.JsHelpers });
await page.AddStyleTagAsync(new AddTagOptions() { Content = report.Style }); 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 //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); var resultHTML = await page.EvaluateExpressionAsync<string>(compileScript);
//render report as HTML //render report as HTML

View File

@@ -1,7 +1,8 @@
using AyaNova.Biz; using AyaNova.Biz;
using Newtonsoft.Json.Linq;
namespace AyaNova.Models namespace AyaNova.Models
{ {
public class ObjectReportDataParameter public class ReportDataParameter
{ {
public AyaType ObjectType { get; set; } public AyaType ObjectType { get; set; }
public long[] SelectedRowIds { get; set; } public long[] SelectedRowIds { get; set; }
@@ -16,16 +17,8 @@ namespace AyaNova.Models
public long[] SelectedRowIds { get; set; } public long[] SelectedRowIds { get; set; }
public string DataListKey { 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 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) { Handlebars.registerHelper("aymarkdown", function (astring) {
return marked(astring, { breaks: true }); 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") { if (typeof reportPreRender === "function") {
return reportPreRender(theReportData); return reportPreRender(theReportData);
}else{ } else {
return theReportData; return theReportData;
} }
} }