This commit is contained in:
2020-09-14 19:23:56 +00:00
parent 77d030e04b
commit f69226d853
3 changed files with 9 additions and 36 deletions

View File

@@ -3,16 +3,9 @@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
todo: export from grid to xls, csv etc.
I'm thinking perhaps also a secondary ability to make report templates that are actually intended for export to xls or whatever as an additional feature
but the easiest thing for people would be a straight export of grid data from grid, perhaps using the reportdata system since it pulls in all the bits needed for full data rather than just id links
https://www.npmjs.com/package/json-2-csv
todo: Is the report list filtered by roles? It should not present reports that a user is not permitted to use by role.
probably need to post-process the report list or include the roles with it and then test them at the client before displaying or at the server before sending
todo: Add sanitize html for Marked markdown helper as in Wiki control todo: Add sanitize html for Marked markdown helper as in Wiki control
todo: what does jsreport do to sanitize / secure the generated templates?
TODO: Report confirmation checklist TODO: Report confirmation checklist
page breaks properly EXAMPLE NEEDED page breaks properly EXAMPLE NEEDED
@@ -38,6 +31,13 @@ TODO: Report confirmation checklist
-------- NON REPORTING RELATED STUFF --------------- -------- NON REPORTING RELATED STUFF ---------------
todo: export from grid to xls, csv etc.
I'm thinking perhaps also a secondary ability to make report templates that are actually intended for export to xls or whatever as an additional feature
but the easiest thing for people would be a straight export of grid data from grid, perhaps using the reportdata system since it pulls in all the bits needed for full data rather than just id links
https://www.npmjs.com/package/json-2-csv
From extensions?
(because it's a single or list thing)
todo: consider feature to set server to always use a pre-set browser locale settings and not the ones in the browse itself todo: consider feature to set server to always use a pre-set browser locale settings and not the ones in the browse itself
Scenario is user in another country but needs to login and work with central server? Scenario is user in another country but needs to login and work with central server?
server - wide server - wide

View File

@@ -87,16 +87,6 @@ export default {
return; return;
} }
/*
public class RenderReportParameter
{
public long ReportId { get; set; }
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
}
*/
let reportDataOptions = vm.reportDataOptions; let reportDataOptions = vm.reportDataOptions;
if (!reportDataOptions) { if (!reportDataOptions) {
throw "Missing report data unable to render report"; throw "Missing report data unable to render report";
@@ -104,15 +94,12 @@ export default {
reportDataOptions.ReportId = reportId; reportDataOptions.ReportId = reportId;
//Meta data from client for use by report script //Meta data from client for use by report script
reportDataOptions.ClientMeta = window.$gz.api.reportClientMetaData(); reportDataOptions.ClientMeta = window.$gz.api.reportClientMetaData();
let url = "report/render"; let url = "report/render";
let res = await window.$gz.api.upsert(url, reportDataOptions); let res = await window.$gz.api.upsert(url, reportDataOptions);
if (res.error) { if (res.error) {
throw res.error; throw res.error;
} else { } else {
let reportUrl = window.$gz.api.reportDownloadUrl(res.data); let reportUrl = window.$gz.api.reportDownloadUrl(res.data);
//console.log("Report url:", reportUrl);
if (window.open(reportUrl, "Report") == null) { if (window.open(reportUrl, "Report") == null) {
throw "Problem displaying report in new window. Browser must allow pop-ups to view reports; check your browser setting"; throw "Problem displaying report in new window. Browser must allow pop-ups to view reports; check your browser setting";
} }
@@ -129,25 +116,11 @@ export default {
throw "report-selector:Open - ObjectType is missing or empty"; throw "report-selector:Open - ObjectType is missing or empty";
} }
//source data object
//either need to rehydrate or send as is if not selectedRowIds
// {
// ObjectType: ayaType,
// selectedRowIds: selectedRowIds,
// dataListKey: vm.dataListKey,
// listView: untokenizeListView(vm.listView)
// }
this.reportDataOptions = reportDataOptions; this.reportDataOptions = reportDataOptions;
//rights
//get report list from server //get report list from server
let res = await window.$gz.api.get( let res = await window.$gz.api.get(
`report/list/${reportDataOptions.ObjectType}` `report/list/${reportDataOptions.ObjectType}`
); );
//console.log("report-selectr report list from server is: ", res);
if (res.error) { if (res.error) {
throw res.error; throw res.error;
} else { } else {

View File

@@ -356,7 +356,7 @@ Handlebars.registerHelper('loud', function (aString) {
//enable / disable RENDER button if it can be rendered (has data) //enable / disable RENDER button if it can be rendered (has data)
if (this.reportData != null) { if (this.reportData != null) {
if (!val.dirty && val.valid) { if (!val.dirty) {//not disabling if invalid because that sometimes just means it needs to be re-run due to server error
window.$gz.eventBus.$emit("menu-enable-item", FORM_KEY + ":render"); window.$gz.eventBus.$emit("menu-enable-item", FORM_KEY + ":render");
} else { } else {
window.$gz.eventBus.$emit( window.$gz.eventBus.$emit(