diff --git a/server/AyaNova/Controllers/ReportController.cs b/server/AyaNova/Controllers/ReportController.cs index 4fe6050c..01166891 100644 --- a/server/AyaNova/Controllers/ReportController.cs +++ b/server/AyaNova/Controllers/ReportController.cs @@ -194,7 +194,7 @@ namespace AyaNova.Api.Controllers /// From route path /// [HttpPost("data")] - public async Task GetReportData([FromBody] ObjectReportDataParameter reportDataParam, ApiVersion apiVersion) + public async Task GetReportData([FromBody] ReportDataParameter reportDataParam, ApiVersion apiVersion) { /*{ public AyaType ObjectType { get; set; } diff --git a/server/AyaNova/biz/ReportBiz.cs b/server/AyaNova/biz/ReportBiz.cs index 2ff2db70..022b5e49 100644 --- a/server/AyaNova/biz/ReportBiz.cs +++ b/server/AyaNova/biz/ReportBiz.cs @@ -253,7 +253,7 @@ namespace AyaNova.Biz //REPORT DATA //Data fetched to return to report designer for Client report design usage - public async Task GetReportData(ObjectReportDataParameter reportDataParam, AuthorizationRoles overrideRoles = AuthorizationRoles.NoRole) + public async Task 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(compileScript); //render report as HTML diff --git a/server/AyaNova/models/dto/ReportingModels.cs b/server/AyaNova/models/dto/ReportingModels.cs index d4b88a70..9fea3879 100644 --- a/server/AyaNova/models/dto/ReportingModels.cs +++ b/server/AyaNova/models/dto/ReportingModels.cs @@ -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; - } - } + } diff --git a/server/AyaNova/resource/rpt/ay-report.js b/server/AyaNova/resource/rpt/ay-report.js index 7aba3dae..7eba1ec7 100644 --- a/server/AyaNova/resource/rpt/ay-report.js +++ b/server/AyaNova/resource/rpt/ay-report.js @@ -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; } } - -