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 the nextDocumentNumber 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
  • 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 use SqlQueryUtil 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() to MailAttachment 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 to CSVLoader 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 in SmartClientEditServlet via "manipulator" web context parameter and SmartClientViewRenderer class loading in SmartClientGeneratorServlet via "renderer" web content parameter
  • Allow SmartClientViewRenderer.getField() and getDataGridField() 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 in ReferenceListModel 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 with org.skyve.util.CommunicationUtil
  • Actions which extend UploadAction must implement the new upload method signature

    • Upload 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 for Download which may need to be updated
  • Jasper reports are now accessed via EXT.reporting instead of directly on EXT
  • ContentManager method calls to get need to be replaced with getAttachment
  • skyve-content.zip now contains a version number, your local skyve-content.zip will need to be deleted, and you will need to use maven in your application to download the new skyve-content-8.0.0.zip into your target directory
  • The copy-content-addin-dependency execution in the maven-dependency-plugin in the pom.xml needs the following line removed to support the version number:

    skyve-content.zip

See the complete upgrade instructions on GitHub.

Ben PetitoComment