Architectural groundwork
A lot of architectural groundwork and design has been completed for Universal in the last month, to ensure new features and concepts and performance improvements will be easy to implement. Indicium, the Software Factory and the Intelligent Application Manager all have had massive technical reworks to support all of this, all without affecting existing applications and GUI’s.A lot more under-the-hood design has been completed but this might go a bit too far for this blog. The key aspects are:
Making life easier for the developer:
- Vertical scrolling strategies have been designed for screen types to prevent the need for tabs or pagination when components get too big.
- Strategies have been designed to change the screen type when the horizontal space becomes limited.
- We are attempting to get rid of all pixel-based settings in the form. Instead, have them be percentual settings. If you want two fields next to each other, you want them to be 50% and 50%, not (field_width + label width) / 2.
Providing optimal performance:
- The way files are loaded and saved by Indicium has been reworked to make it easier for Universal to cache files and images. The files are transported in a binary format to provide less traffic than the current base64 counterparts.
- The way applications are loaded has been redesigned to prevent the need for mobile-specific models, using a strategy called ‘Lazy application loading’. More about this later in this blog.
- The loaded model can now be saved in the browser and can be reloaded when the user logs in again and the model and rights have not been changed or when the user accesses the application while offline.
Future-proofing for new features:
- In the future, booting against the Software Factory or the IAM will be exactly the same from a client perspective. This means you can choose to run against the Software Factory without specifying the project, project version and runtime configuration and have them all available as ‘applications’. On contrast, you can configure Universal to load only a single IAM application. This is handy when you want to roll out multiple apps in the store that use a single model or if you really want the IAM to have a separate shortcut on the desktop.
- To capitalize on this, we want to allow developer to save user preferences (think grid column order, prefilters, cube views) straight into the model when running against a Software Factory. The way user preferences will be saved has been completely redesigned to support this.
Completed features
In addition to designing and developing a good foundation for the Universal GUI, the following features have been completed in the last month:
Support for images in data
Application switching
Card list
- Image
- Title
Grid controls
- Image
- Image combo’s
- Text
- Date
- Time
- Datetime
- Numeric
- URL
- Email
- Phone
- Checkbox
- HTML
- Multiline
- Element combo’s
Universal has also taken the first steps towards becoming a fully fledged Progressive Web App. You can now install the website as an app on your mobile device or install the website as a stand-alone application on your desktop. Neat!
The form structure has been developed but have not passed QA as of yet. Most of the form controls have been developed and are waiting for the form structure to be completed. You can expect to see them in the next update.
The visualization of an action bar has also been developed, but the actions themselves are not yet operational. A quick preview to see what this will look like:
The buttons, they do nothing!
Another feature that’s almost finished is lazy application loading. The current generation of user interfaces load the entire model on start-up. The Universal GUI will load only the bare essentials, such as the menu. The rest of the model will be loaded on-demand, for instance when a screen is opened. This allow access to massive applications without long start-up times and prevents reaching device storage limitations on start-up.
On the next episode of Universal Development Update:
Stuff that almost made it to this update, but will be included in the next update:
- Form & form controls
- More about lazy application loading
- A new HTML & multiline strategy for the grid
New stuff we are working on this month:
- Placing components according to the screen type
- Filtering using prefilters and a filter input field
- Look-up translations
- Navigation to details in the form of detail tiles
Once these features have been implemented, a future update will be focused around getting the action bar operational, providing data manipulation and corresponding application logic.