Skyve 8.0.0 Released
Skyve 8 is a major release and introduces a new reporting option to Skyve, Freemarker reports. A new UI widget has been added to assist in navigation between associated entities, improvements to SAIL to assist in automated UI testing as well as many other enhancements and fixes.
Freemarker Reports
Freemarker reports make use of the Freemarker templating language, and offer a simplified way to create reports in Skyve, both as part of your application and at runtime with the report definition stored in the database. These reports are accessible from the admin module, and allow system adminsistrators to create and maintain report definitions, and enable regular users to execute reports.
Skyve 8 ships with a basic wizard help get started with creating new report definitions. The initial release ships with support for PDF and CSV output options. PDF reports are specified in HTML and are transfromed into PDF by Skyve.
See the developer guide for help getting started with reports and a Freemarker quick reference guide.
Skyve Developer Guide - Reports
ZoomIn Widget
Skyve has always had a concept of zooming in and out of entities which were part of a collection from a list or data grid, allowing a simple way navigate related entities while maintaining a context. Skyve 8 introduces a new widget, ZoomIn
, to provide navigation across associations.
Say you have a Client entity, which defines both a physical address and a mailing address association. ZoomIn
allows the Address to define its own view, and provide a way to zoom into and back out of the address from the Client.
Expressions
Two new expression prefixes have been added to Skyve, to return the display name and description of attributes, which can be used within code or within a view.
The developer guide has been updated with a new page covering using expressions within Skyve.
Admin
- Added current disk use method on ConfigurationExtension
- Added available disk space alarm settings and job
- Updated System Dashboard to include current space and whether alarm job is scheduled
- Remove declared privilege to
Configuration
document for Anonymous role and temporarily elevate singleton bizlet instead - Default new username wizard to assign user contact email address as the username
- Remove log output from Jobs->actual view to speed up response for jobs with excessive logging
- Various i18n improvements to admin module
- Ensure all restore options are required before commencing a restore
- Remove deprecated subscriptions inverse from
Communication
- Ensure SAIL results are not escaped in Control Panel
- Change
nextDocumentNumber
to temporarily escalate access to sequences so that thenextDocumentNumber
can be called from other modules - Refine visibility of User details and clarify role of
BasicUser
- Update DataMaintenance data refresh tab title for consistency
- Remove user dashboard favourites based on activities of other users
- Update
Configuration
password reset view component to turn off sanitising the password reset email body markup in the desktop renderer - Update
JobSchedule
with Schedule column - Update
ImportExport
to refresh columns properly when changing documents and ignore non-persistent documents- update
ImportExportBizlet
to list all document attributes, including those from super classes
- update
- Disable checkboxes in Job Scheduler when not selected
Framework
- Use UTC for
OptimisticLock
strings - Allow geometry bindings in data widgets
- Fix sorting in InMemoryListModel when sort parameters returns an empty collection
- Update
MapFeature
fillOpacity to be a Float instead of a String and perform range checking - Cater for signature component in SAIL
- Fix SAIL generation to match PF client IDs
- Escape values input in SAIL web driver generation
- Add
TagManager
interface - Take control of closing streams in Skyve during download and upload actions
- Update JUnit 4 and JUnit 5 abstract test classes to generate a random content directory during test execution to prevent file locking
- Disable job scheduling in the abstract test class
- update
TestQuery
action to useSqlQueryUtil
instead of the service so it doesn't rely on injection - Update
TimeUtil
getFinancialYear to use a month constant to improve legibility - Improve content management garbage collection including protection against unbounded GC runs
- Add Caching interface
- Add JobScheduler interface
- Move
EXT.getMailAttachmentFromContent()
toMailAttachment
constructors - Add Observers to customer metadata
- Add SQL dyna methods
- Move to spring-security 5.5.1
- Added CodeMirror syntax highlighting for syntax highlighting during report creation
- Renamed
DelimitedLoader
toCSVLoader
and reimplemented with SuperCSV - Don't check unique constraints if the relation is not persistent the assigned domain bean is not persistent either
- Add description and display name expressions -
&
- Add Skyve Job setPercentComplete(int totalProcessed, int totalSize) convenience
- Add TextEditor to components in MockApplication for SAIL
- Add Flag Comment to upsert operations
- Remove Lookup widget
- Add timeout in seconds value to query metadata
- Introduce ZoomIn widget to SC, PF and SAIL
- Add convenience methods for html image and anchor content URLs
- Add Action/Button/ZoomIn show attribute to control icon and text
- Update
AbstractDomainTest
to be more tolerant of unique constraint errors, retry for findAll and ignore for update - Fix EL generation of
LazyDataModel
for list grids using list models - Fix filter parameters / parameters for list grids and new parameters for edit views to handle all types
- Constrain the size of content images in list grids
- Allow SVG images to be displayed in container columns
- Move escape and sanitise attributes to only projected list grid columns
- Allow json files to be uploaded
- Add ability to define fixed mail headers in skyve json
- Resolve dependencies for iText between flying-saucer-pdf and jasper-reports
Responsive Renderer
- Ensure empty content link can't be followed/opened
- Fix
ImageUpload
dialog usage within tab panes - Patch file uploads so they don't fail under Java 15 with no script engine
- Add head/body ids to head/body tags in template.xhtmls
- Use an OutputPanel around CSRFToken hidden in CSRFForm so that partial updates finer than @form will update the panel
Desktop Renderer
- Refactor SmartClient Generation classes to enable extension
- Allow
ViewJSONManipulator
class loading inSmartClientEditServlet
via "manipulator" web context parameter andSmartClientViewRenderer
class loading inSmartClientGeneratorServlet
via "renderer" web content parameter - Allow
SmartClientViewRenderer.getField()
andgetDataGridField()
to be overridden in sub-classes - Increase visibility on methods in ViewBinding and ViewJSONManipulator to allow for overriding in Skyve applications
- Replace use of
Collections.singletonList
inReferenceListModel
as grid implementations may add a summary row to the returned collection - Serialize calls to grid double clicks so that the select event is processed first and then the zoom in is performed
- Fix image display of large images in
contentImage
Notes for Upgrading
To upgrade your Skyve project to this version, change the Skyve version in your pom.xml
to 8.0.0
and perform an assemble.
If you are upgrading from a version older than 7.1.4, please see the previous release notes and also apply those changes.
- Imports of
modules.admin.Communication.CommunicationUtil
should be replaced withorg.skyve.util.CommunicationUtil
Actions which extend
UploadAction
must implement the new upload method signatureUpload actions should make use of
WebFileInputStream
in a try-with-resources block, e.g.try (InputStream is = upload.getInputStream()) { Files.copy(is, Paths.get(importFile.getAbsolutePath())); }
- Actions which extend
DownloadAction
have new constructors forDownload
which may need to be updated - Jasper reports are now accessed via
EXT.reporting
instead of directly onEXT
ContentManager
method calls toget
need to be replaced withgetAttachment
skyve-content.zip
now contains a version number, your localskyve-content.zip
will need to be deleted, and you will need to use maven in your application to download the newskyve-content-8.0.0.zip
into yourtarget
directoryThe
copy-content-addin-dependency
execution in themaven-dependency-plugin
in thepom.xml
needs the following line removed to support the version number:skyve-content.zip
See the complete upgrade instructions on GitHub.