±âȹÄ÷³
2020.09.21 / 14:00

Javascript Reporting Server

XMaLL°ü¸®ÀÚ

FEATURES

pdf, excel, docx, html, csv

Various output formats can be produced just from the html and javascript

open source, cross-platform

Templating engines for powerful dynamic layouts, custom javasript hooks for data fetching, full support for the latest css and javascript

html designer

jsreport includes web based designer, just connect with a modern browser and you're ready to design reports

complete set of extensions

scheduling, templates versioning, import export and backup, sub reports, users management

API

Use simple REST API, CLI or SDKs to render a report from everywhere



@bjrmatos bjrmatos released this 13 days ago

highlights of updates

general updates

  • chrome was not updated this time because some compatibility issues, we are still using Chrome 79
  • docx recipe improvements for charts, table and white space handling
  • extensions were updated to be compatible with new version of jsreport-studio
  • all extensions dependencies were updated to ensure that we don't use vulnerable packages, so npm audit now reports 0 vulnerabilities in most cases

core

  • fix issue when parsing/serializing empty buffers in scripts/template execution

cli

  • update the jsreport client to make infinite body size the default for remote requests

docx

  • don't break execution when chart has no xml style, color files defined
  • charts should preserve colors and number format defined in the series
  • add support for chartEx charts (waterfall, treemap, sunburst, funnel, stockChart, clusteredColumn, scatterChart, bubbleChart)
  • add support for vertical table
  • add support for dynamic table creation (both rows and columns can be created based on data)
  • fix support for xml:space="preserve" when concatenating tags
  • remove lines that just contain handlebars block tags

express

  • use 50mb as default limit for the input request

fs-store

  • ignore .git folder and expose reload
  • use state from files (instead from memory) during compaction

import-export

  • fix issue when importing zip with a lot of nested levels

licensing

  • fix validation when server is down
  • mask license key written to the startup log

pdf-utils

  • expose api to remove page from pdf
  • improve the groups and items values serialization
  • add option "removeHiddenMarks" to prevent the remove of the marks that we create during group/item serialization
  • add basic support for the digital signature form field

reports

  • add option "options.reports.public" to support exposing the report content in unauthenticated/public url

scheduling

  • add options "cleanScheduleHistoryInterval", "maxHistoryPerSchedule" for scheduling history clean up

studio

  • update React to v16 and remove usage of deprecated apis
Assets5

@bjrmatos bjrmatos released this on 18 Jul ¡¤ 7 commits to master since this release

highlights of updates

general updates

  • chrome was not updated this time because some compatibility issues, we are still using Chrome 79
  • extensions were updated to annotate entity type properties that references other entities
  • better support for operations that are related to references between entities
  • folder copy and clone support
  • import merge now uses a better strategy to resolve conflicts, pairing entities by path and regenerating and fixing references of duplicated _idshortid fields when needed
  • all extensions dependencies were updated to ensure that we don't use vulnerable packages, so npm audit now reports 0 vulnerabilities in most cases

assets

  • use core function for resolving paths of entities

authorization

  • fixed user permission inheritance for custom users

child-templates

  • use core function for resolving paths of entities

cli

  • fix jsreport --help output on windows

docx

  • fixed docxImage for remote images without "image/" prefix in content type
  • fixed links to bookmarks
  • fixed support for nested lists

express

  • marked get odata calls to allow permissions asserts for admin users in scheduling/version-control

import-export

  • import logic now pairs entities by path
  • resolving conflicts on shortid- > regeneration of shortids and fix references

pdf-utils

  • fix exe compilation support

reports

  • fix async report not getting sample data populated

scheduling

  • fixed permission handling for none admin users

scripts

  • marking jsreport-proxy find calls to allow strict access permissions to admins in scheduling/version control

studio

  • folders copy support
  • folders clone support

tags

  • display tags on folders

templates

  • use core function for resolving paths of entities

version-control

  • fixed strict access for admins only
  • don't use script callback for resolving entity paths
Assets5

@bjrmatos bjrmatos released this on 21 May ¡¤ 24 commits to master since this release

highlights of updates

general updates

  • chrome was not updated this time because some compatibility issues, we are still using Chrome 79
  • async helpers are now supported in template engines
  • the authorization for http api (ODATA) was improved to prevent access for some entity sets that were not expected to be visible, editable for other users other than the admin user
  • all extensions dependencies were updated to ensure that we don't use vulnerable packages, so npm audit now reports 0 vulnerabilities in most cases

assets

  • handle entity tree drop of native files in the studio and insert it as assets
  • fix asset name as path resolution when a folder in path does not exists

authorization

  • fix showing permissions UI for entity sets that don't allow permissions

child-templates

  • fix template name as path resolution when a folder in path does not exists

chrome-pdf

  • add logs for page script errors and page http resource requests (long logs are trimmed)

cli

  • update jsreport nodejs client to fix isssue with sites with https and self signed certificates

docx

  • add docxChart helper
  • fix page break not replacing text correctly in some case
  • fix endnotes, footnotes generation and serialization, node insertion between documents handling
  • improvements when generating content inside loop
  • nested table support

fs-store

  • better error handling during compaction

import-export

  • handle entity tree drop of zip files in the studio to call the import dialog
  • filter not exportable entity sets when listing entities for export and when importing

licensing

  • fix error handling when doing license validation request

pdf-utils

  • integrate pdf-passwordpdf-meta and pdf-sign as part of pdf-utils
  • remove hidden marks from pdf
  • add support for generating interactive pdf forms elements (pdfFormField helper)

reports

  • add report status and error information to UI
  • improve logs
  • don't store two blobs for single async render
  • fix report open when appPath option is used
  • fix blobs getting removed when user tries to delete a report he does not have permissions to delete

resources

  • fix multiple language resources and defaultLanguage

scheduling

  • improve schedule updates validation
  • fix schedule report open when appPath option is used

scripts

  • refactor how the jsreport proxy register handlers of methods

studio

  • fix double save
  • fix bug that produces duplicated entity error when doing save all action
  • fix bug with close tab

templates

  • fix template name as path resolution when a folder in path does not exists

version-control

  • use document store transactions for version control operations
  • execute version control operations in script
  • add checks to prevent executing version control operations multiple times
  • throw error when trying to insert commit with no changes
  • fix the download of big files
Assets5

@bjrmatos bjrmatos released this on 21 Mar ¡¤ 43 commits to master since this release

highlights of updates

authentication

  • fix a bug in the user locks for multiple failed password attemps
Assets5

@bjrmatos bjrmatos released this on 5 Mar ¡¤ 47 commits to master since this release

highlights of updates

cli

  • fix config generated in init, repair commands (¡°renderTimeout¡± -> ¡°reportTimeout¡±)
  • no default encryption options for init, repair
  • configure now does not ask for encryption.secret, now it asks for extensions.authentication.cookieSession.secret when auth is enabled

authentication

  • don¡¯t share the extensions.authentication.cookieSession.secret with encryption.secretKey
Assets5

@bjrmatos bjrmatos released this on 5 Mar ¡¤ 54 commits to master since this release

highlights of updates

general updates

  • the default chrome that comes with jsreport and the chrome versions installed in docker use Chrome 79
  • exe binaries are now compiled against node 12 which bring performance improvements
  • the document stores now support transactions, which ensures consistence/atomicity on store operations when used
  • we now support a single rendering timeout option reportTimeout, which is designed to deprecate more granular timeout options. we also support the single timeout per request configuration req.options.timeout but this need to be explicitly be enabled using enableRequestReportTimeout
  • granular timeout options are deprecated and now emit a warning when used. they continue to work but will be removed in future release (templatingEngines.timeoutextensions.scripts.timeoutchrome.timeout, etc)
  • a new reporter.encryption API was added, it is designed for extensions to be able to crypt/decrypt sensitive values in general way. those encrypted values (like passwords) can now be stored safely in the store
  • all extensions dependencies were updated to ensure that we don't use vulnerable packages, so npm audit now reports 0 vulnerabilities in most cases

core

  • rename of some API for entities serialization collection.convertBase64ToBufferInEntity -> collection.serializePropertiescollection.convertBufferToBase64InEntity -> collection.deserializeProperties
  • fix internal json schema for date fields
  • fix some issues with sandbox
  • req.data is now initialized as per of request object creation
  • fix memory leak with reaper
  • fix the concat child request logs to parent request also for failed renders
  • new store transactions api
  • fix some security issues related to entity name, reserved name validation

authentication

  • extensions.authentication.cookieSession.secret is no longer required if encryption.secretKey is set in config
  • /api/extensions/odata/settings routes are no longer public (they need http authentication now)
  • add blocks when doing too much login attempts per user (includes http api Basic auth)

authorization

  • fix adding admin user to permissions when creating entity
  • fix issue about permissions propagation when inherit permissions from parent folders

browser-client

  • use options.scriptLinkRootPath consistently, and throw error when we are not able to get the server url

chrome-pdf

  • avoid logging header/footer content
  • support puppeteer 2.0 in the peer dep
  • don't run scripts for headers/footers content

cli

  • fixed locking of parallel keepAlive starts
  • fixed issues with keepAlive crashing and no meaningful error was shown
  • concurrent support for kill command
  • configure command now creates config with encryption.secretKey and single timeout reportTimeout

data

  • allow loading sample data if parent request data was empty and without any data ref

debug

  • failed render debug logs should have correct order for parent/child requests logs

docx

  • performance optimizations
  • forms support
  • docxImage support for new properties: width, height, usePlaceholderSize
  • fix parsing files that do not contain xml
  • fix generating links, endnotes, footnotes recursively in lists and tables
  • safe execution using scripts manager
  • add docxPageBreak helper

express

  • add extensions.express.responseHeaders config to allow setting general response headers

fs-store

  • fix duplicate store results when sorting by a date field
  • don¡¯t store the folder.shortid in config.json (this allow to move the entities manually in the file system without editing files)

html-to-xlsx

  • remove the "insertToXlsxTemplate" option, we now check for the existence of base xlsx based options if they are set we assume that you want the insertion to xlsx template
  • support streaming generation
  • improvements for the generation of large documents
  • add helper htmlToXlsxEachRows that stores generated rows into files to allow streaming processing
  • add support for new html engine cheerio-page-eval (it does not come with it installed by default)
  • better calculate cell widths for chrome html engine
  • add support for adding xlsx template as asset

import-export

  • the import now uses store transactions to ensure consistence/atomicity by default
  • add check "Continue on fail" that enables the import to continue on errors (which reproduces the same behavior than older versions)

pdf-utils

  • avoid duplicating fonts when merging, dramatic decrease of the final pdf size
  • always add pdf utils helpers even without utils operations set or if the recipe is not pdf
  • the span element created by pdfCreatePagesGrouppdfAddPageItem helper now also have a class name for easy styling

pptx

  • pptxTable support
  • safe execution in scripts manager

reports

  • fix render requests called from a custom scripts doesn't apply reports extension
  • fix some issues when blob was created without name

sample-template

  • use merge whole document in the orders sample

scheduling

  • new config option misfireTreshold to don¡¯t run misfired schedules

scripts

  • allow to cancel request from script with custom status code

studio

  • handle renaming entity modal enter keypress
  • fix ugly entity tree uncollapsing when loading
  • fix validation for reserved names

studio-theme-dark

  • don't break when studio extension is disabled

xlsx

  • fix addImage to work with open xml drawing already exists as an array
  • introduce asset-based ref to the template while keeping compatibility with original xlsxTemplate entity
Assets5

@bjrmatos bjrmatos released this on 10 Oct 2019 ¡¤ 84 commits to master since this release

highlights of updates

general updates

  • fix require of external modules in the exe
  • all extensions dependencies were updated to ensure that we don't use vulnerable packages, so npm audit now reports 0 vulnerabilities in most cases
  • more improvements, fixes to the studio theming

core

  • fix issue with http-server workers on recycle

authorization

  • optimization: don't propagate same permissions

docx

  • fix http Content-type response header when rendering

html-to-xlsx

  • fix http Content-type response header when rendering

pptx

  • fix http Content-type response header when rendering

xlsx

  • fix http Content-type response header when rendering

pdf-utils

  • fix ignore legacy parseBuffers call, it causes max memory error after executing proxy pdf utils operation that returns big buffer
  • fix for rendering outlines in child templates

scheduling

  • don't rethrow error from loading schedules

scripts

  • remove legacy "parseBuffers" function, script-manager already handles serialization/parsing of data

studio

  • create theme variables for scrollbar resizer
  • theming: add styles for textarea
  • preserve undock state after Studio.reset
  • re-calculate editor layout on window resize
  • fix long paths display in EntityRefSelect component
  • add a way to disable theming in preview (we disable preview theming for html recipe)
Assets5

@bjrmatos bjrmatos released this on 21 Sep 2019 ¡¤ 90 commits to master since this release

highlights of updates

general updates

  • added general rendering cycle control, to prevent renders to go into infinite loop when a template renders itself
  • support for white-labeling and theming in studio - logo and colors of studio can be customized now and new themes can be created
  • added a dark theme to studio
  • new exe, with performance improvements and optimizations.
  • extensions has been updated to support studio theming
  • extensions has been updated to support new exe compilation
  • extensions can now register cli commands
  • all extensions dependencies were updated to ensure that we don't use vulnerable packages, so npm audit now reports 0 vulnerabilities in most cases
  • the default chrome that comes with jsreport and the chrome versions installed in docker build now match (Chrome 76)
  • added new recipe static-pdf
  • added docxpptx recipes but with one time warning that the extensions are in beta phase

core

  • engines now can receive options
  • templatingEngines.inputRequestLimit have no limits, so internal process communication is not blocked when rendering large reports and using http-server strategy. the extensions.express.inputRequestLimit is still validated normally when processing renders from http
  • fix duplicate validation for stores than don¡¯t support filtering with regexp
  • fix for moment usage inside scripts

assets

  • added p12 files as binary types for the assets editor
  • add custom editor for office asset

browser-client

  • update browser-client-dist to 1.3.0 (renderAsync exposes res.xhr to allow reaching response headers)

chrome-pdf

  • add support for generating PDF from URL using template.chrome.url
  • move puppeteer to peer dep

cli

  • add tempDirectory as global option arg for compatibitlity with jsreport.exe
  • add API to register commands from extensions
  • add route to handle delegate of render with keep alive

debug

  • sanitize header vals

express

  • make api/ping public route
  • expose headers to cors

fs-store

  • don't preview studio when root data files like settings or reports are modified
  • add compactionEnabled config
  • support fs sync enum
  • remove sync message should include just id to avoid big messages
  • fix refreshing big entities in sync
  • call external reload based on the lock interval

handlebars

  • fix child template paremeters not working with handlebars
  • move handlebars to peer dep

html-to-xlsx

  • use jsreport-office for xlsx preview

import-export

  • add import, export command to cli

jsrender

  • remove support for older version, to not conflict with new options passed to engines
  • update jsrender to latest 1.0.4

licensing

  • fix applying license from license-key.txt file

pdf-utils

  • fix PDF Document Information Dictionary needs to be an indirect reference
  • fix helpers when it's an object
  • run pdf-utils script with no limit

sample-template

  • replace xlsx sample with html-to-xlsx sample

studio

  • add API to customize About modal
  • fix serving extensions js
  • add option to customize logo extensions.studio.theme.logo.path
  • add option to customize color vars extensions.studio.theme.variables
  • add support for registering themes to the studio
  • add option to change editor and studio theme extensions.studio.theme.nameextensions.studio.theme.editorThemeName
  • add option to load custom css to the studio extensions.studio.theme.customCss.path
  • fix collapsing preview not refresh editor layout
  • add API to make editor component for entity configurable with resolvers
  • make studio browser title configurable with string template

studio-theme-dark

  • adds a dark theme to the studio

templates

  • add general rendering cycle control validation

xlsx

  • use jsreport-office to preview xlsx
Assets5

@bjrmatos bjrmatos released this on 25 May 2019

highlights of updates

general updates

  • we now log each extension's version at the startup
  • the Ace based editor of studio was replaced by Monaco, and all extensions were updated to support it
  • all extensions dependencies were updated to ensure that we don't use vulnerable packages, so npm audit now reports 0 vulnerabilities in most cases
  • update to Chrome 76.0.3803.0

core

  • fix bug in script manager that was preventing call the scripts's callback multiple times in parallel
  • fix not getting last log Rendering request x finished in request debug logs
  • fix parse templatingEngines.forkOptions.execArgv as array
  • fix Odata XML generation for _id fields
  • fix some errors about concurrent update validation
  • fix some errors with folders (when moving and resolving)

assets

  • the default allowedFiles pattern when allowLocalFilesAccess is enabled should be **/*.*
  • improved error message when asset not found

authentication

  • fix don't generate hash for string that is already hashed
  • fix don't getting focus on first field on NewUser modal

authorization

  • fix bug when readPermissions is eq null

browser-client

  • expose server error in reject

child-templates

  • add parallelLimit option to better control processing of child templates

chrome-pdf

  • chrome¡¯s printBackground option should default to true when no specified (server side default)

cli

  • show real error message when MODULE_NOT_FOUND error happens during start

fs-store

  • fix some compaction and persistent operations issues
  • increase compactionInterval to 15s

handlebars

  • update handlebars to fix security issue

html-to-xlsx

  • fix special case with rowspan/colspan layout
  • allow text wrap if overflow is "auto"

import-export

  • importing does not refresh the page
  • add import/export context menu actions
  • add full import mode

pdf-utils

  • fix some issues with hidden span elements that were failing when some css was present in page
  • add ui to disable pdf utils operation
  • improve error message when pdfCreatePagesGroup, pdfAddPageItem is called with undefined
  • add pdfUtils methods to jsreport-proxy (pdfUtils.parsepdfUtils.prependpdfUtils.appendpdfUtils.mergepdfUtils.outlines)

reports

  • use options.reportName for file name and allow customize blobName

sample-template

  • add modal to create samples

scheduling

  • fix generating tasks after enabling a scheduling that has been disabled for some time

  • fix cloning schedule not getting values in chrome picker

scripts

  • add API to extend jsreport-proxy methods jsreport.scripts.addProxyMethods

studio

  • fix some ui issues with concurrent update validation
  • validate duplicated entity name when creating entity in studio
  • add "Run and undock preview" to toolbar
  • use monaco editor for the editor
  • add UI to display information about extensions
  • improved keyboard shortcuts on mac
Assets5

@bjrmatos bjrmatos released this on 6 Mar 2019 ¡¤ 125 commits to master since this release

highlights of updates

general updates

  • all extensions were updated to not expose all options by default to the /api/extensions route, this prevents leaking some sensitive information to the browser. extensions now need to explicitly define what options they need to expose to the http api.
  • all extensions were updated to fix an issue with usage of deep merge object library. in some cases they were using a library that was not merging arrays correctly. (new version of node.extend.without.arrays)
  • all extensions which uses the studio and handle references to other entities now use the new EntityRefSelect, which it is a control designed for entities references with folders supports
  • all extensions dependencies were updated to ensure that we don't use vulnerable packages, so npm audit now reports 0 vulnerabilities in most cases
  • update to Chrome 73.0.3679.0

core

  • expose Request factory in jsreport instance
  • fix some condition in validation of reserved names of folders
  • fix validation of duplicated name and reserved name for folder when using upsert operations
  • add validation of duplicated human readable key prop (in most entities is the shortid field)
  • add fields (_idshortidcreationDatemodificationDate) to entity types by default
  • show real error when require fails inside the sandbox of script
  • improve error message of timeout of scripts

assets

  • add more strict validation for allowAssetsLinkedToFiles (validation is done now also on server)

authentication

  • disable autocomplete for password fields in authentication forms. this prevents getting warnings in some security audit tools

chrome-pdf

  • extension now also exposes a new recipe chrome-image, which generates
    image from html

express

  • fix some logic to allow configuring secure cookies
  • req.context.http data is now generated for any route, not just when rendering
  • /api/extensions no longer returns all extensions options, now it needs that each extension define which properties should be exposed
  • omit password field of /api/settings route

html-to-xlsx

  • add new implementation that adds supports for different features (font-familyborder-color, cell data types, formula, cell formats, conversion js trigger, insert table output into xlsx template)

import-export

  • fix show errors when importing zip
  • add option import into folder, which allows importing all the entities o zip inside a target directory

pdf-utils

  • support generating table of contents (TOC)
  • fix some issues when parsing group, items text across different OS

scheduling

  • clean pending task when the schedule gets disabled
  • running jobs should not update modificationDate of schedules

scripts

  • catch sync errors when trying to use jsreport-proxy document store

studio

  • fix some problems that was preventing having full folders support
  • add entity fuzzy finder (entity navigation modal) (ctrl + p)
  • save request logs outside of render request lifecycle and save it in intervals
  • fix error when template with header is deleted
  • add validation for concurrent save of entities

tags

  • update entity tree toolbar buttons to be inside menu

version-control

  • fix for folder support: persist folders changes first

xlsx

  • properly order legacyDrawingHF
Assets5