Skyve 20190920 released

This was another big release, and adds some great new functionality to the Skyve open source platform. Charts can now be added to applications using the same low-code metadata used to build the rest of the interfaces. SmartClient got an upgrade from version 11 to 12 and brings a new default theme. A new image widget type was added, and a new type of association was added to improve performance for large object graphs.

Low-code Charts

Skyve has had the ability to create charts for a long time, but they required a SQL query and produced a static image. As of Skyve 20190920, charts can now be defined and declared within a view using metadata, as with any other widget! It uses chartjs as its charting library under the hood, and is available for use within the PrimeFaces and SmartClient interfaces.

The new PrimeFaces system dashboard

The new PrimeFaces system dashboard

The new SmartClient system dashboard

The new SmartClient system dashboard

SmartClient Upgrade

The version of SmartClient Skyve uses was updated from version 11 to 12. While this should not have any noticeable functional change to end users, it did bring a new default theme, Tahoe, which is less condensed and feels a bit more modern. The theme can now be changed in the DefaultUxUiSelector class against the desktop UxUi.

The new SmartClient 12 look and feel

The new SmartClient 12 look and feel

The previous SmartClient look and feel

The previous SmartClient look and feel

New Image Attribute and Image Editor

We’ve added a new specialised form of the content attribute, image which can be used to store photos and other image files. When this is used in a view, it presents as a specialised file chooser which provides basic cropping and rotate functions before upload. Images included in a view will display as a thumbnail by default.

Embedded Associations

A new association type of embedded has been added. An embedded association copies the columns from the associated document into the including document, which can greatly improve performance in large object graphs.

For example, if we have some common Contact fields in our domain, but do not want to create and retrieve a Contact in a separate table every time, the embedded association allows us to use the Contact, but the values will be retrieved from the owning document’s table.

Framework

  • Add attribution for OpenStreetMap layer in json

  • Handle SpringSecurity's CookieTheftException by going to login

  • Use the default customer in UtilImpl.CUSTOMER if a resource is requested without a security principal

  • Introduce SmartClient skins to DefaultUxUiSelector and default to Tahoe

  • Updated DataBuilder to respect numerical values min and max validator ranges when generating random numerals

  • Add embedded associations

  • Constrain SQLServer identifiers to 128 chars in length

  • Refactor Persistence.retrieve() methods out to Persistence.retrieveAndLock() methods

  • Call Bizlet.preDelete() before calling foreign key checks so the developer has a chance to resolve exported references on preDelete in the document that it is affecting

  • Ensure that the constant domain value cache is keyed by module, document and attribute names

  • Introduce Image attribute type

  • Use imageUpload.xhtml for ContentImage widget

  • Add EXIF, rotation and cropping to image uploads

  • Added some additional description to the document number field to make things clear

  • Add parameters attribute to capture parameter bindings in MetaDataQuery driven widgets - lookup, lookupDescription, listGrid, listRepeater & treeGrid

  • Add pertinent document to UniqueConstraintViolationException and constraint name in the exception message

  • Implemented ability to provide router.xml definitions in a module, which allows modules to be more self-contained

  • Make the default widget for content to be thumbnail in "prototype mode"

  • Add ChartBuilder, ProjectedChartBuilder and TupleChartBuilder

  • Implement Category chart model metadata

  • Implement "others" function in charts where the rest of the data is clumped together into an "others" category

  • Added RainbowColourSeries as the new default colour series to use for charts

  • Add JFreeChart generation based on ChartData

Admin

  • Update admin Report Design to save files to the configured modulePath specified in the project JSON and fixed saving of sub-reports

  • Update UserDashboard and SystemDashboard views with new charts

SmartClient

  • Update to SmartClient 12

  • Fix bugs with geometry editor in filter mode

  • Remove old filter button images

  • Prefer font icons over images

  • Fix ListGrid.source property

  • Expose DataGrid properties for override in inject tags similar to ListGrid

  • Implement charts in SC

PrimeFaces

  • Implement charts in PF

NOTES FOR UPGRADING

To upgrade your Skyve project to this version, change the Skyve version in your pom.xml to 20190920 and change your skyve-maven-plugin version to 1.20.

You will need to manually update your web.xml and spring/security.xml to support the new ChartServlet and better secure rest endpoints.

You will need to update your desktop UxUi in the DefaultUxUiSelector.java to contain the new theme parameter, as per below:

public static final UxUi DESKTOP = new UxUi("desktop", "Tahoe", "casablanca", null);

You will also need to upgrade your selenium version in your pom.xml to 3.141.59 to fix a conflict with hibernate 5, as per below:

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-support</artifactId>
    <version>3.141.59</version>
    <scope>test</scope>
</dependency>

See the complete upgrade instructions on GitHub.

releasesBen PetitoComment