This commit is contained in:
@@ -4,6 +4,22 @@
|
|||||||
|
|
||||||
REPORTING
|
REPORTING
|
||||||
|
|
||||||
|
TODO:
|
||||||
|
Plan how it would work, templating engine runs how, what steps lead from render route to produced report?
|
||||||
|
simlute it on paper before coding it
|
||||||
|
|
||||||
|
Find c# versions of all required tools to see if going to need dependency on Node or not
|
||||||
|
handlebars is a big one
|
||||||
|
|
||||||
|
Code minimum effective test as proof of concept, just start with static data, static report stuff and cobbled together render
|
||||||
|
no database involvement during testing!!
|
||||||
|
no designer other than vs code statically
|
||||||
|
|
||||||
|
just hit a route to trigger a static test then expand from there doing all the trickiest stuff first as proof of concept.
|
||||||
|
Once it renders a report of each type we need in mock then can actually code
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLIENT UI
|
CLIENT UI
|
||||||
At client maybe pick output format first then select report, so can pick HTML to just view immediately, can pick pdf to download or print, can pick csv to export etc
|
At client maybe pick output format first then select report, so can pick HTML to just view immediately, can pick pdf to download or print, can pick csv to export etc
|
||||||
|
|
||||||
@@ -21,7 +37,10 @@ REPORT TEMPLATE FORMAT
|
|||||||
can be subbed at runtime by giving alternate or this will just be the default
|
can be subbed at runtime by giving alternate or this will just be the default
|
||||||
defaultData - static data saved with report like a json fragment or something
|
defaultData - static data saved with report like a json fragment or something
|
||||||
renderAsType - renderType (pdf, text, csv, etc this way the report is designed specifically for that type and if they want more than one they need to copy and modify)
|
renderAsType - renderType (pdf, text, csv, etc this way the report is designed specifically for that type and if they want more than one they need to copy and modify)
|
||||||
|
How to include libs like labels etc?
|
||||||
|
I guess we have a curated set we include and for security and if they want something else they can just use a CDN script link
|
||||||
|
Need to vet those I guess
|
||||||
|
|
||||||
|
|
||||||
Data
|
Data
|
||||||
Reports during render can be told to use ayaType and id, dynamic data list object or static data object passed directly into route
|
Reports during render can be told to use ayaType and id, dynamic data list object or static data object passed directly into route
|
||||||
@@ -50,6 +69,10 @@ TODO:
|
|||||||
Actually, the report itself should contain the chosen localization stuff as it will be generated without a client involvement at times
|
Actually, the report itself should contain the chosen localization stuff as it will be generated without a client involvement at times
|
||||||
so the designer would set this, maybe it follows the server or maybe we *do* send a hint but also the report has a default locale if none specified
|
so the designer would set this, maybe it follows the server or maybe we *do* send a hint but also the report has a default locale if none specified
|
||||||
hard coded
|
hard coded
|
||||||
|
Process:
|
||||||
|
consolidates the data, report, checks rights, sanitizes report html / css using whatever tool is necessary (client should also do this)
|
||||||
|
renders document, perhaps in a queue system is best
|
||||||
|
|
||||||
returns:
|
returns:
|
||||||
like a download route, returns rendered document with correct mime type set
|
like a download route, returns rendered document with correct mime type set
|
||||||
|
|
||||||
@@ -95,6 +118,7 @@ HTML -> PDF
|
|||||||
|
|
||||||
|
|
||||||
Headless Chrome
|
Headless Chrome
|
||||||
|
https://github.com/jsreport/jsreport-chrome-pdf
|
||||||
FAST SPEED (according to jsreport docs)
|
FAST SPEED (according to jsreport docs)
|
||||||
jsreport uses headless chrome by default which has built in pdf from html ability.
|
jsreport uses headless chrome by default which has built in pdf from html ability.
|
||||||
they use a NODE library Puppeteer for it, but there is a c# wrapper for .net core linux windows mac: https://github.com/hardkoded/puppeteer-sharp
|
they use a NODE library Puppeteer for it, but there is a c# wrapper for .net core linux windows mac: https://github.com/hardkoded/puppeteer-sharp
|
||||||
@@ -119,6 +143,7 @@ HTML -> PDF
|
|||||||
https://stackoverflow.com/questions/62042078/puppeteer-sharp-for-server-side-html-to-pdf-conversions
|
https://stackoverflow.com/questions/62042078/puppeteer-sharp-for-server-side-html-to-pdf-conversions
|
||||||
|
|
||||||
WeasyPrint
|
WeasyPrint
|
||||||
|
https://github.com/jsreport/jsreport-weasyprint-pdf
|
||||||
SLOWEST SPEED
|
SLOWEST SPEED
|
||||||
https://github.com/Kozea/WeasyPrint based on python, does it's own rendering doesn't rely on a web browser engine like the rest
|
https://github.com/Kozea/WeasyPrint based on python, does it's own rendering doesn't rely on a web browser engine like the rest
|
||||||
free, recommended by wkhtmltopdf author as an alternative
|
free, recommended by wkhtmltopdf author as an alternative
|
||||||
@@ -129,6 +154,7 @@ HTML -> PDF
|
|||||||
|
|
||||||
|
|
||||||
wkhtmltopdf
|
wkhtmltopdf
|
||||||
|
https://github.com/jsreport/jsreport-wkhtmltopdf
|
||||||
MEDIUM SPEED
|
MEDIUM SPEED
|
||||||
https://wkhtmltopdf.org/downloads.html
|
https://wkhtmltopdf.org/downloads.html
|
||||||
Well used, old based on older webkit so doesn't support css3 but likely enough for our purposes
|
Well used, old based on older webkit so doesn't support css3 but likely enough for our purposes
|
||||||
@@ -142,12 +168,23 @@ HTML -> PDF
|
|||||||
|
|
||||||
HTML -> DOCX
|
HTML -> DOCX
|
||||||
This is a possiblity that needs to be researched, instead of pdf go docx which is in theory multi platform and openable on other devices? Not sure
|
This is a possiblity that needs to be researched, instead of pdf go docx which is in theory multi platform and openable on other devices? Not sure
|
||||||
|
https://github.com/jsreport/jsreport-docx
|
||||||
https://github.com/EricWhiteDev/Open-Xml-PowerTools
|
https://github.com/EricWhiteDev/Open-Xml-PowerTools
|
||||||
|
|
||||||
|
HTML -> XLSX
|
||||||
|
https://github.com/jsreport/jsreport-xlsx
|
||||||
|
|
||||||
|
HTML -> TEXT
|
||||||
|
https://github.com/jsreport/jsreport-html-to-text
|
||||||
|
https://github.com/jsreport/jsreport-text
|
||||||
|
|
||||||
|
|
||||||
TEMPLATE ENGINE
|
TEMPLATE ENGINE
|
||||||
|
https://github.com/jsreport/jsreport-handlebars
|
||||||
Handlebars by default for jsreport which is easy peasy to work with
|
Handlebars by default for jsreport which is easy peasy to work with
|
||||||
|
|
||||||
|
PDF META DATA EDITING
|
||||||
|
https://github.com/jsreport/jsreport-pdf-meta
|
||||||
|
|
||||||
Render outputs
|
Render outputs
|
||||||
JSReport renders to different outputs, they call it recipes https://jsreport.net/learn/recipes
|
JSReport renders to different outputs, they call it recipes https://jsreport.net/learn/recipes
|
||||||
|
|||||||
Reference in New Issue
Block a user