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