What's the best way of doing Reports in Zen Mojo.

Hi everyone, I have and Zen Mojo application, it's all working but I have some doubts about what is recommended to use: There is some reports of employees, for example, and actually I'm using some plugins : "Excelent export" to generate Excel reports and "jspdf" to generate PDF reports in client side.

I have an REST service, that receives the request, process and returns JSON, after client side receive the response it's processed.

- This can be slow/bad in applications with large data?

- It's better/recommended to use ZenReports even with ZenMojo applications?

- Or Zen Mojo, like any other applications based on HTML, JS and PHP can support this with any problem?

- The preparation of the JSON is very fast because the use of %DynamicObject and %DynamicArray; ZenReport can be slower than it?

 

Thanks,

Andrei L. Nenevê

Answers

Reports are a big, separate issue from modern web applications technologies.  Unless you're writing a reports web application.

This can be slow/bad in applications with large data?

Sure. To avoid that make your REST service logically asynchronous (see DeepSee REST API for MDX execution):

  • User sends a query
  • Server immediately returns query key
  • Server executes query into another (jobbed) process
  • Some time later user sends query key
  • Server returns current query status (in progress, done)
  • If query is done send user the data

Also, if you're using pure SQL, scrollable resultset can be used in a similar fashion.

  It's better/recommended to use ZenReports even with ZenMojo applications?

It's just another approach to reports.

  Or Zen Mojo, like any other applications based on HTML, JS and PHP can support this with any problem?

Reports can be done using ZEN Mojo, sure.

The preparation of the JSON is very fast because the use of %DynamicObject and %DynamicArray; ZenReport can be slower than it?

Time to render JSON is negligible compared to time time you need to generate a report. ZenReport calls other software to render report files, so it's slower, sure, but still I think the main timesink here is execution and not rendering.

To sum up, your requirements determine the necessarily approach.

Thanks Eduard,

For now I will use both way, but in the future maybe I need to take a closer look at what fits the most.