This commit is contained in:
@@ -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; }
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user